diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5046b54bd..92d7c7c56 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,4 +14,4 @@ jobs: with: repo_token: "${{ secrets.GITHUB_TOKEN }}" prerelease: false - automatic_release_tag: "9.0.4" + automatic_release_tag: "9.1.1" diff --git a/.gitignore b/.gitignore index 597037eca..8004fc9e8 100644 --- a/.gitignore +++ b/.gitignore @@ -40,5 +40,4 @@ yarn-error.log* *.suo *.ntvs* *.njsproj -*.sln *.sw* diff --git a/Directory.Packages.props b/Directory.Packages.props index 72c27a05d..fe3557ff8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,13 +1,13 @@ - 8.2.0 + 8.3.2 2.14.1 3.3.0-rc7 - 9.0.4 - 9.0.4 - 9.0.0.0 - 9.0.0.0 - 9.0.0.0 + 9.1.1 + 9.1.1 + 9.0.2 + 9.0.2 + 9.0.2 true @@ -20,6 +20,8 @@ + + @@ -75,6 +77,7 @@ + @@ -134,6 +137,7 @@ + @@ -141,12 +145,12 @@ - + - + @@ -155,14 +159,16 @@ + - + - + + @@ -196,18 +202,20 @@ - - - + + + + + @@ -242,11 +250,20 @@ + + + + + + + + + @@ -265,22 +282,25 @@ - - - - - - - - + + + + + + + + - + - + + + + diff --git a/apps/react-admin/.dockerignore b/apps/react-admin/.dockerignore new file mode 100644 index 000000000..1046b8e45 --- /dev/null +++ b/apps/react-admin/.dockerignore @@ -0,0 +1,4 @@ +.github +.vscode/ +dist/ +node_modules/ diff --git a/apps/react-admin/.env b/apps/react-admin/.env new file mode 100644 index 000000000..19c1d9f4b --- /dev/null +++ b/apps/react-admin/.env @@ -0,0 +1 @@ +VITE_GLOB_APP_TITLE = Vite React TS Template diff --git a/apps/react-admin/.env.development b/apps/react-admin/.env.development new file mode 100644 index 000000000..8a1166a28 --- /dev/null +++ b/apps/react-admin/.env.development @@ -0,0 +1,12 @@ +VITE_APP_BASE_API= +VITE_APP_HOMEPAGE=/dashboard/workbench +VITE_APP_BASE_PATH=/ +# VITE_GLOB_CLIENT_ID=react-admin-client +# VITE_GLOB_CLIENT_SECRET='' +# VITE_GLOB_SCOPE="openid email address phone profile offline_access miwen-abp-application" +# VITE_PROXY_API=http://192.168.31.246:30001 + +VITE_GLOB_CLIENT_ID=vue-admin-client +VITE_GLOB_CLIENT_SECRET=1q2w3e* +VITE_GLOB_SCOPE="openid email address phone profile offline_access lingyun-abp-application" +VITE_PROXY_API=http://124.223.5.95:30001 \ No newline at end of file diff --git a/apps/react-admin/.env.production b/apps/react-admin/.env.production new file mode 100644 index 000000000..42140e5bc --- /dev/null +++ b/apps/react-admin/.env.production @@ -0,0 +1,3 @@ +VITE_APP_BASE_API=/api +VITE_APP_HOMEPAGE=/dashboard/workbench +VITE_APP_BASE_PATH=/ diff --git a/apps/react-admin/.gitignore b/apps/react-admin/.gitignore new file mode 100644 index 000000000..6df0aabe7 --- /dev/null +++ b/apps/react-admin/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# vite 打包分析产物 +stats.html + +# 取消上层忽略 +!.vscode/ \ No newline at end of file diff --git a/apps/react-admin/.vscode/extensions.json b/apps/react-admin/.vscode/extensions.json new file mode 100644 index 000000000..bc8a17487 --- /dev/null +++ b/apps/react-admin/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "biomejs.biome", + "bradlc.vscode-tailwindcss", + "lokalise.i18n-ally" + ] +} diff --git a/apps/react-admin/.vscode/settings.json b/apps/react-admin/.vscode/settings.json new file mode 100644 index 000000000..b05ff2ed1 --- /dev/null +++ b/apps/react-admin/.vscode/settings.json @@ -0,0 +1,35 @@ +{ + "typescript.tsdk": "./node_modules/typescript/lib", + "editor.tabSize": 2, + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit", + "source.organizeImports.biome": "explicit" + }, + "editor.quickSuggestions": { + "strings": "on" + }, + "tailwindCSS.experimental.classRegex": [ + ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] + ], + "npm.packageManager": "pnpm", + "i18n-ally.localesPaths": ["src/locales/lang"], + "i18n-ally.enabledParsers": ["json"], + "i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}", + "i18n-ally.keystyle": "flat", + "i18n-ally.sortKeys": true, + "i18n-ally.sourceLanguage": "en_US", + "i18n-ally.displayLanguage": "zh_CN", + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + } +} diff --git a/apps/react-admin/Dockerfile b/apps/react-admin/Dockerfile new file mode 100644 index 000000000..615a02da9 --- /dev/null +++ b/apps/react-admin/Dockerfile @@ -0,0 +1,24 @@ +# Stage 1: build stage +FROM node:22-alpine as build-stage +# make the 'app' folder the current working directory +WORKDIR /app +# config node options +ENV NODE_OPTIONS=--max_old_space_size=8192 +# config pnpm, install dependencies +COPY package.json pnpm-lock.yaml* ./ +RUN npm install pnpm@9.x -g && \ + pnpm install --frozen-lockfile +# copy project files and folders to the current working directory (i.e. 'app' folder) +COPY . ./ +# build the project +RUN pnpm build +RUN echo "build successful 🎉 🎉 🎉" + + +# Stage 2: production stage +FROM nginx:latest as production-stage +COPY --from=build-stage /app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] +RUN echo "deploy to nginx successful 🎉 🎉 🎉" + diff --git a/apps/react-admin/LICENSE b/apps/react-admin/LICENSE new file mode 100644 index 000000000..ceb73cc97 --- /dev/null +++ b/apps/react-admin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 d3george + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apps/react-admin/README.md b/apps/react-admin/README.md new file mode 100644 index 000000000..56f71dadd --- /dev/null +++ b/apps/react-admin/README.md @@ -0,0 +1,132 @@ +
+
+
+ +

Slash Admin

+

+

+ Slash Admin is a modern admin dashboard template built with React 18, Vite, Ant Design, and TypeScript. It is designed to help developers quickly create powerful admin management systems. +

+
+
+ Preview + · + Discord + · + Document +
+
+ d3george%2Fslash-admin | Trendshift +
+ +**English** | [中文](./README.zh-CN.md) + +## Sponsor +
+ + +
+ +## Preview ++ https://admin.slashspaces.com/ + +|![login.png](https://d3george.github.io/github-static/slash-admin/login.jpeg)|![login_dark.png](https://d3george.github.io/github-static/slash-admin/login_dark.jpeg) +| ----------------------------------------------------------------- | ------------------------------------------------------------------- | +|![analysis.png](https://d3george.github.io/github-static/slash-admin/analysis.png)|![workbench.png](https://d3george.github.io/github-static/slash-admin/workbench.png) + +## Features + +- Built using React 18 hooks. +- Powered by Vite for rapid development and hot module replacement. +- Integrates Ant Design, providing a rich set of UI components and design patterns. +- Written in TypeScript, offering type safety and an improved development experience. +- Responsive design, adapting to various screen sizes and devices. +- Flexible routing configuration, supporting nested routes. +- Integrated access control based on user roles. +- Supports internationalization for easy language switching. +- Includes common admin features like user management, role management, and permission management. +- Customizable themes and styles to meet your branding needs. +- Mocking solution based on MSW and Faker.js. +- State management using Zustand. +- Data fetching using React-Query. + +## Quick Start + +### Get the Project Code + +```bash +git clone https://github.com/d3george/slash-admin.git +``` + +### Install Dependencies + +In the project's root directory, run the following command to install project dependencies: + +```bash +pnpm install +``` + +### Start the Development Server + +Run the following command to start the development server: + +```bash +pnpm dev +``` + +Visit [http://localhost:3001](http://localhost:3001) to view your application. + +### Build for Production + +Run the following command to build the production version: + +```bash +pnpm build +``` + +## Docker deployment + + +### Build image and Run container +#### build image +Enter the project root directory in the terminal and execute the following command to build the Docker image: +``` +docker build -t your-image-name . +``` +Make sure to replace `your-image-name` with your own image name + +#### run container +Run your application in the Docker container using the following command: +``` +docker run -p 3001:80 your-image-name +``` +This will run your application on port `80`(exposed in `Dockerfile`) of the container and map it to port `3001` on your host. + +Now you can access http://localhost:3001 to view the deployed applications. + +### use docker-compose.yaml +Enter the project root directory in the terminal and execute the following command to start Docker Compose: +``` +docker-compose up -d +``` +Docker Compose will build an image based on the configuration defined by 'docker-compose. yaml' and run the container in the background. + +After the container runs successfully, it can also be accessed through http://localhost:3001 To view the deployed applications. + + +## Git Contribution submission specification + +reference[.commitlint.config.js](./commitlint.config.js) + +- `feat` new features +- `fix` fix the +- `docs` documentation or comments +- `style` code format (changes that do not affect code execution) +- `refactor` refactor +- `perf` performance optimization +- `revert` revert commit +- `test` test related +- `chore` changes in the construction process or auxiliary tools +- `ci` modify CI configuration and scripts +- `types` type definition file changes +- `wip` in development diff --git a/apps/react-admin/README.zh-CN.md b/apps/react-admin/README.zh-CN.md new file mode 100644 index 000000000..5f9ff89c1 --- /dev/null +++ b/apps/react-admin/README.zh-CN.md @@ -0,0 +1,131 @@ +
+
+
+ +

Slash Admin

+

+

+ Slash Admin 是一款现代化的后台管理模板,基于 React 18、Vite、Ant Design 和 TypeScript 构建。它旨在帮助开发人员快速搭建功能强大的后台管理系统。 +

+
+
+ Preview + · + Discord + · + Document +
+
+ d3george%2Fslash-admin | Trendshift +
+ +**中文** | [English](./README.md) + +## 赞助 +
+ + +
+ + +## 预览 ++ https://admin.slashspaces.com/ + +|![login.png](https://d3george.github.io/github-static/slash-admin/login.jpeg)|![login_dark.png](https://d3george.github.io/github-static/slash-admin/login_dark.jpeg) +| ----------------------------------------------------------------- | ------------------------------------------------------------------- | +|![analysis.png](https://d3george.github.io/github-static/slash-admin/analysis.png)|![workbench.png](https://d3george.github.io/github-static/slash-admin/workbench.png) +## 特性 + +- 使用 React 18 hooks 进行构建。 +- 基于 Vite 进行快速开发和热模块替换。 +- 集成 Ant Design,提供丰富的 UI 组件和设计模式。 +- 使用 TypeScript 编写,提供类型安全性和更好的开发体验。 +- 响应式设计,适应各种屏幕尺寸和设备。 +- 灵活的路由配置,支持多级嵌套路由。 +- 集成权限管理,根据用户角色控制页面访问权限。 +- 集成国际化支持,轻松切换多语言。 +- 集成常见的后台管理功能,如用户管理、角色管理、权限管理等。 +- 可定制的主题和样式,以满足您的品牌需求。 +- 基于 MSW 和 Faker.js 的Mock方案 +- 使用 Zustand 进行状态管理 +- 使用 React-Query 进行数据获取 + +## 快速开始 + +### 获取项目代码 + +```bash +git clone https://github.com/d3george/slash-admin.git +``` + +### 安装依赖 + +在项目根目录下运行以下命令安装项目依赖: + +```bash +pnpm install +``` + +### 启动开发服务器 + +运行以下命令以启动开发服务器: + +```bash +pnpm dev +``` + +访问 [http://localhost:3001](http://localhost:3001) 查看您的应用程序。 + +### 构建生产版本 + +运行以下命令以构建生产版本: + +```bash +pnpm build +``` + +构建后的文件将位于 `dist` 目录中。 + +## 容器化部署 + +### 构建镜像并运行容器 +#### 构建镜像 +在终端中进入项目根目录,并执行以下命令来构建 Docker 镜像: +``` +docker build -t your-image-name . +``` +确保将 `your-image-name` 替换为你自己的镜像名称 + +#### 运行容器 +使用以下命令在 Docker 容器中运行你的应用: +``` +docker run -p 3001:80 your-image-name +``` +这将在容器的端口 `80` (暴露在`Dockerfile`中) 上运行你的应用,并将其映射到你主机的端口 `3001` 上。 + +现在,你可以通过访问 http://localhost:3001 来查看部署的应用。 + + +### 使用docker-compose.yaml +在终端中进入项目根目录,并执行以下命令来启动 Docker Compose: +``` +docker-compose up -d +``` +Docker Compose 根据`docker-compose.yaml`定义的配置构建镜像并在后台运行容器. + +容器运行成功后,同样可以通过访问 http://localhost:3001来查看部署的应用。 + +参考[.commitlint.config.js](./commitlint.config.js) + +- `feat` 新功能 +- `fix` 修复bug +- `docs` 文档注释 +- `style` 代码格式(不影响代码运行的变动) +- `refactor` 重构 +- `perf` 性能优化 +- `revert` 回滚commit +- `test` 测试相关 +- `chore` 构建过程或辅助工具的变动 +- `ci` 修改CI配置、脚本 +- `types` 类型定义文件修改 +- `wip` 开发中 diff --git a/apps/react-admin/biome.json b/apps/react-admin/biome.json new file mode 100644 index 000000000..47ef3986f --- /dev/null +++ b/apps/react-admin/biome.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true, + "defaultBranch": "main" + }, + "files": { + "ignoreUnknown": false, + "ignore": ["public", ".vscode", "src/api/gen"] + }, + "formatter": { + "enabled": true, + "lineWidth": 120, + "indentStyle": "tab" + }, + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "off" + }, + "a11y": { + "useKeyWithClickEvents": "off" + }, + "complexity": { + "noForEach": "off" + }, + "correctness": { + "useExhaustiveDependencies": "off" + } + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + } +} diff --git a/apps/react-admin/docker-compose.yaml b/apps/react-admin/docker-compose.yaml new file mode 100644 index 000000000..c34a48a4f --- /dev/null +++ b/apps/react-admin/docker-compose.yaml @@ -0,0 +1,7 @@ +services: + slash: + build: + context: . + ports: + - "3001:80" + restart: always diff --git a/apps/react-admin/index.html b/apps/react-admin/index.html new file mode 100644 index 000000000..aca743b1f --- /dev/null +++ b/apps/react-admin/index.html @@ -0,0 +1,13 @@ + + + + + + Slash Admin + + + +
+ + + diff --git a/apps/react-admin/lefthook.yml b/apps/react-admin/lefthook.yml new file mode 100644 index 000000000..2a7a0f6e1 --- /dev/null +++ b/apps/react-admin/lefthook.yml @@ -0,0 +1,26 @@ +# SKIP CI in commit message to skip hooks +skip_output: + - meta + - success + - summary + +pre-commit: + parallel: true + commands: + format: + glob: "*.{js,jsx,ts,tsx,json,md}" + run: npx @biomejs/biome format --write --no-errors-on-unmatched {staged_files} + stage_fixed: true + lint: + glob: "*.{js,jsx,ts,tsx}" + run: npx @biomejs/biome lint --no-errors-on-unmatched {staged_files} + check-types: + glob: "*.{ts,tsx}" + run: npx tsc --noEmit + +commit-msg: + commands: + commitlint: + run: npx commitlint --edit {1} + # 允许空提交信息 + skip: merge|rebase diff --git a/apps/react-admin/openapi-ts.config.ts b/apps/react-admin/openapi-ts.config.ts new file mode 100644 index 000000000..13571810d --- /dev/null +++ b/apps/react-admin/openapi-ts.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from "@hey-api/openapi-ts"; +import { defaultPlugins } from "@hey-api/openapi-ts"; +export default defineConfig({ + client: "@hey-api/client-axios", + input: "http://192.168.31.246:30001/swagger/v1/swagger.json", + output: { + format: "biome", + lint: "biome", + path: "src/api/gen", + }, + plugins: [ + ...defaultPlugins, + { + enums: "typescript", + name: "@hey-api/typescript", + }, + ], +}); diff --git a/apps/react-admin/package.json b/apps/react-admin/package.json new file mode 100644 index 000000000..47f2243e5 --- /dev/null +++ b/apps/react-admin/package.json @@ -0,0 +1,117 @@ +{ + "name": "slash-admin", + "private": true, + "version": "0.0.0", + "type": "module", + "homepage": "https://github.com/d3george/slash-admin", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "preinstall": "lefthook install", + "gen-api": "openapi-ts" + }, + "dependencies": { + "@ant-design/cssinjs": "^1.17.2", + "@ant-design/icons": "^5.2.6", + "@ant-design/pro-table": "^3.18.3", + "@fullcalendar/common": "^5.11.5", + "@fullcalendar/core": "^6.1.9", + "@fullcalendar/daygrid": "^6.1.9", + "@fullcalendar/interaction": "^6.1.9", + "@fullcalendar/list": "^6.1.9", + "@fullcalendar/react": "^6.1.9", + "@fullcalendar/timegrid": "^6.1.9", + "@fullcalendar/timeline": "^6.1.9", + "@hey-api/client-axios": "^0.2.12", + "@iconify/react": "^4.1.1", + "@microsoft/signalr": "^8.0.7", + "@tanstack/react-query": "^5.50.1", + "@tanstack/react-query-devtools": "^5.50.1", + "@vanilla-extract/css": "^1.17.0", + "@vanilla-extract/vite-plugin": "^4.0.19", + "@vercel/analytics": "^1.2.2", + "@vitejs/plugin-react": "^4.1.0", + "antd": "^5.9.3", + "apexcharts": "^3.43.0", + "autosuggest-highlight": "^3.3.4", + "axios": "^1.5.1", + "classnames": "^2.3.2", + "clsx": "^2.1.1", + "color": "^4.2.3", + "dayjs": "^1.11.10", + "defu": "^6.1.4", + "framer-motion": "^10.16.4", + "highlight.js": "^11.9.0", + "i18next": "^23.5.1", + "i18next-browser-languagedetector": "^7.1.0", + "json-edit-react": "^1.19.2", + "nprogress": "^0.2.0", + "numeral": "^2.0.6", + "ramda": "^0.29.1", + "react": "18.2.0", + "react-apexcharts": "^1.4.1", + "react-beautiful-dnd": "^13.1.1", + "react-dom": "18.2.0", + "react-error-boundary": "^4.0.13", + "react-helmet-async": "^2.0.5", + "react-i18next": "^13.2.2", + "react-icons": "^4.11.0", + "react-markdown": "^8.0.7", + "react-organizational-chart": "^2.2.1", + "react-quill": "^2.0.0", + "react-router": "^7.0.2", + "react-use": "^17.4.0", + "rehype-highlight": "^6.0.0", + "rehype-raw": "^6.1.1", + "remark-gfm": "^3.0.1", + "reset-css": "^5.0.2", + "screenfull": "^6.0.2", + "simplebar-react": "^3.2.4", + "sonner": "^1.7.0", + "styled-components": "^6.0.9", + "tailwind-merge": "^2.5.4", + "zustand": "^4.4.3" + }, + "devDependencies": { + "@biomejs/biome": "1.9.4", + "@commitlint/cli": "^17.7.2", + "@commitlint/config-conventional": "^17.7.0", + "@faker-js/faker": "^8.1.0", + "@hey-api/openapi-ts": "^0.59.1", + "@types/autosuggest-highlight": "^3.2.0", + "@types/color": "^3.0.4", + "@types/nprogress": "^0.2.1", + "@types/numeral": "^2.0.3", + "@types/ramda": "^0.29.6", + "@types/react": "^18.2.28", + "@types/react-beautiful-dnd": "^13.1.6", + "@types/react-dom": "^18.2.13", + "@types/styled-components": "^5.1.28", + "autoprefixer": "^10.4.16", + "axios-mock-adapter": "^2.1.0", + "lefthook": "^1.8.2", + "msw": "^2.4.9", + "postcss": "^8.4.31", + "postcss-import": "^15.1.0", + "postcss-nesting": "^11.3.0", + "rollup-plugin-visualizer": "^5.9.2", + "tailwindcss": "^3.3.3", + "ts-node": "^10.9.1", + "typescript": "^5.2.2", + "vite": "^5.4.9", + "vite-plugin-svg-icons": "^2.0.1", + "vite-tsconfig-paths": "^5.0.1", + "vitest": "^2.1.8" + }, + "engines": { + "node": "20.*" + }, + "packageManager": "pnpm@9.1.0", + "msw": { + "workerDirectory": "public" + }, + "commitlint": { + "extends": ["@commitlint/config-conventional"] + } +} diff --git a/apps/react-admin/postcss.config.js b/apps/react-admin/postcss.config.js new file mode 100644 index 000000000..a5a8f1524 --- /dev/null +++ b/apps/react-admin/postcss.config.js @@ -0,0 +1,8 @@ +export default { + plugins: { + "postcss-import": {}, + "tailwindcss/nesting": "postcss-nesting", + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/apps/react-admin/public/mockServiceWorker.js b/apps/react-admin/public/mockServiceWorker.js new file mode 100644 index 000000000..8241ef8cc --- /dev/null +++ b/apps/react-admin/public/mockServiceWorker.js @@ -0,0 +1,295 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.6.4' +const INTEGRITY_CHECKSUM = 'ca7800994cc8bfb5eb961e037c877074' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body], + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + headers.delete('accept', 'msw/passthrough') + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)), + ) + }) +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} diff --git a/apps/react-admin/src/App.tsx b/apps/react-admin/src/App.tsx new file mode 100644 index 000000000..fdf7414a3 --- /dev/null +++ b/apps/react-admin/src/App.tsx @@ -0,0 +1,44 @@ +import { Helmet } from "react-helmet-async"; + +import Logo from "@/assets/images/logo.png"; +import Router from "@/router/index"; + +import { MotionLazy } from "./components/animate/motion-lazy"; +import Toast from "./components/toast"; +import { AntdAdapter } from "./theme/adapter/antd.adapter"; +import { ThemeProvider } from "./theme/theme-provider"; +import { useEffect } from "react"; + +import { useSetLocale } from "./store/localeI18nStore"; +import { useTranslation } from "react-i18next"; +import { getStringItem } from "./utils/storage"; +import { LocalEnum, StorageEnum } from "#/enum"; +import { useSessions } from "./hooks/abp/use-sessions"; + +function App() { + const { i18n } = useTranslation(); + const setLocale = useSetLocale(); + const defaultLng = getStringItem(StorageEnum.I18N) || LocalEnum.en_US; + useSessions(); + useEffect(() => { + async function initializeI18n() { + await setLocale(defaultLng as LocalEnum, i18n); + } + initializeI18n(); //触发abp语言包加载 + }, [defaultLng, i18n, setLocale]); + return ( + + + + Slash Admin + + + + + + + + ); +} + +export default App; diff --git a/apps/react-admin/src/_mock/assets.js b/apps/react-admin/src/_mock/assets.js new file mode 100644 index 000000000..2c248bfd5 --- /dev/null +++ b/apps/react-admin/src/_mock/assets.js @@ -0,0 +1,610 @@ +import useUserStore from "@/store/userStore"; +import { faker } from "@faker-js/faker"; + +import { BasicStatus, PermissionType } from "#/enum"; +/** + * Organization data mock + */ +export const ORG_LIST = [ + { + id: "1", + name: "East China Branch", + status: "enable", + desc: faker.lorem.words(), + order: 1, + children: [ + { + id: "1-1", + name: "R&D Department", + status: "disable", + desc: "", + order: 1, + }, + { + id: "1-2", + name: "Marketing Department", + status: "enable", + desc: "", + order: 2, + }, + { + id: "1-3", + name: "Finance Department", + status: "enable", + desc: "", + order: 3, + }, + ], + }, + { + id: "2", + name: "South China Branch", + status: "enable", + desc: faker.lorem.words(), + order: 2, + children: [ + { + id: "2-1", + name: "R&D Department", + status: "disable", + desc: "", + order: 1, + }, + { + id: "2-2", + name: "Marketing Department", + status: "enable", + desc: "", + order: 2, + }, + { + id: "2-3", + name: "Finance Department", + status: "enable", + desc: "", + order: 3, + }, + ], + }, +]; + +/** + * User permission mock + */ +const DASHBOARD_PERMISSION = { + id: "9100714781927703", + parentId: "", + label: "sys.menu.dashboard", + name: "Dashboard", + icon: "ic-analysis", + type: PermissionType.CATALOGUE, + route: "dashboard", + order: 1, + children: [ + { + id: "8426999229400979", + parentId: "9100714781927703", + label: "sys.menu.workbench", + name: "Workbench", + type: PermissionType.MENU, + route: "workbench", + component: "/dashboard/workbench/index.tsx", + }, + { + id: "9710971640510357", + parentId: "9100714781927703", + label: "sys.menu.analysis", + name: "Analysis", + type: PermissionType.MENU, + route: "analysis", + component: "/dashboard/analysis/index.tsx", + }, + ], +}; +const MANAGEMENT_PERMISSION = { + id: "0901673425580518", + parentId: "", + label: "sys.menu.management", + name: "Management", + icon: "ic-management", + type: PermissionType.CATALOGUE, + route: "management", + order: 2, + children: [ + { + id: "2781684678535711", + parentId: "0901673425580518", + label: "sys.menu.user.index", + name: "User", + type: PermissionType.CATALOGUE, + route: "user", + children: [ + { + id: "4754063958766648", + parentId: "2781684678535711", + label: "sys.menu.user.profile", + name: "Profile", + type: PermissionType.MENU, + route: "profile", + component: "/management/user/profile/index.tsx", + }, + { + id: "2516598794787938", + parentId: "2781684678535711", + label: "sys.menu.user.account", + name: "Account", + type: PermissionType.MENU, + route: "account", + component: "/management/user/account/index.tsx", + }, + ], + }, + { + id: "0249937641030250", + parentId: "0901673425580518", + label: "sys.menu.system.index", + name: "System", + type: PermissionType.CATALOGUE, + route: "system", + children: [ + { + id: "1985890042972842", + parentId: "0249937641030250", + label: "sys.menu.system.organization", + name: "Organization", + type: PermissionType.MENU, + route: "organization", + component: "/management/system/organization/index.tsx", + }, + { + id: "4359580910369984", + parentId: "0249937641030250", + label: "sys.menu.system.permission", + name: "Permission", + type: PermissionType.MENU, + route: "permission", + component: "/management/system/permission/index.tsx", + }, + { + id: "1689241785490759", + parentId: "0249937641030250", + label: "sys.menu.system.role", + name: "Role", + type: PermissionType.MENU, + route: "role", + component: "/management/system/role/index.tsx", + }, + { + id: "0157880245365433", + parentId: "0249937641030250", + label: "sys.menu.system.user", + name: "User", + type: PermissionType.MENU, + route: "user", + component: "/management/system/user/index.tsx", + }, + { + id: "0157880245365434", + parentId: "0249937641030250", + label: "sys.menu.system.user_detail", + name: "User Detail", + type: PermissionType.MENU, + route: "user/:id", + component: "/management/system/user/detail.tsx", + hide: true, + }, + ], + }, + ], +}; +const COMPONENTS_PERMISSION = { + id: "2271615060673773", + parentId: "", + label: "sys.menu.components", + name: "Components", + icon: "solar:widget-5-bold-duotone", + type: PermissionType.CATALOGUE, + route: "components", + order: 3, + children: [ + { + id: "2478488238255411", + parentId: "2271615060673773", + label: "sys.menu.icon", + name: "Icon", + type: PermissionType.MENU, + route: "icon", + component: "/components/icon/index.tsx", + }, + { + id: "6755238352318767", + parentId: "2271615060673773", + label: "sys.menu.animate", + name: "Animate", + type: PermissionType.MENU, + route: "animate", + component: "/components/animate/index.tsx", + }, + { + id: "9992476513546805", + parentId: "2271615060673773", + label: "sys.menu.scroll", + name: "Scroll", + type: PermissionType.MENU, + route: "scroll", + component: "/components/scroll/index.tsx", + }, + { + id: "1755562695856395", + parentId: "2271615060673773", + label: "sys.menu.markdown", + name: "Markdown", + type: PermissionType.MENU, + route: "markdown", + component: "/components/markdown/index.tsx", + }, + { + id: "2122547769468069", + parentId: "2271615060673773", + label: "sys.menu.editor", + name: "Editor", + type: PermissionType.MENU, + route: "editor", + component: "/components/editor/index.tsx", + }, + { + id: "2501920741714350", + parentId: "2271615060673773", + label: "sys.menu.i18n", + name: "Multi Language", + type: PermissionType.MENU, + route: "i18n", + component: "/components/multi-language/index.tsx", + }, + { + id: "2013577074467956", + parentId: "2271615060673773", + label: "sys.menu.upload", + name: "upload", + type: PermissionType.MENU, + route: "Upload", + component: "/components/upload/index.tsx", + }, + { + id: "7749726274771764", + parentId: "2271615060673773", + label: "sys.menu.chart", + name: "Chart", + type: PermissionType.MENU, + route: "chart", + component: "/components/chart/index.tsx", + }, + { + id: "2013577074467957", + parentId: "2271615060673773", + label: "sys.menu.toast", + name: "Toast", + type: PermissionType.MENU, + route: "toast", + component: "/components/toast/index.tsx", + }, + ], +}; +const FUNCTIONS_PERMISSION = { + id: "8132044808088488", + parentId: "", + label: "sys.menu.functions", + name: "functions", + icon: "solar:plain-2-bold-duotone", + type: PermissionType.CATALOGUE, + route: "functions", + order: 4, + children: [ + { + id: "3667930780705750", + parentId: "8132044808088488", + label: "sys.menu.clipboard", + name: "Clipboard", + type: PermissionType.MENU, + route: "clipboard", + component: "/functions/clipboard/index.tsx", + }, + { + id: "3667930780705751", + parentId: "8132044808088488", + label: "sys.menu.token_expired", + name: "Token Expired", + type: PermissionType.MENU, + route: "token-expired", + component: "/functions/token-expired/index.tsx", + }, + ], +}; +const MENU_LEVEL_PERMISSION = { + id: "0194818428516575", + parentId: "", + label: "sys.menu.menulevel.index", + name: "Menu Level", + icon: "ic-menulevel", + type: PermissionType.CATALOGUE, + route: "menu-level", + order: 5, + children: [ + { + id: "0144431332471389", + parentId: "0194818428516575", + label: "sys.menu.menulevel.1a", + name: "Menu Level 1a", + type: PermissionType.MENU, + route: "menu-level-1a", + component: "/menu-level/menu-level-1a/index.tsx", + }, + { + id: "7572529636800586", + parentId: "0194818428516575", + label: "sys.menu.menulevel.1b.index", + name: "Menu Level 1b", + type: PermissionType.CATALOGUE, + route: "menu-level-1b", + children: [ + { + id: "3653745576583237", + parentId: "7572529636800586", + label: "sys.menu.menulevel.1b.2a", + name: "Menu Level 2a", + type: PermissionType.MENU, + route: "menu-level-2a", + component: "/menu-level/menu-level-1b/menu-level-2a/index.tsx", + }, + { + id: "4873136353891364", + parentId: "7572529636800586", + label: "sys.menu.menulevel.1b.2b.index", + name: "Menu Level 2b", + type: PermissionType.CATALOGUE, + route: "menu-level-2b", + children: [ + { + id: "4233029726998055", + parentId: "4873136353891364", + label: "sys.menu.menulevel.1b.2b.3a", + name: "Menu Level 3a", + type: PermissionType.MENU, + route: "menu-level-3a", + component: "/menu-level/menu-level-1b/menu-level-2b/menu-level-3a/index.tsx", + }, + { + id: "3298034742548454", + parentId: "4873136353891364", + label: "sys.menu.menulevel.1b.2b.3b", + name: "Menu Level 3b", + type: PermissionType.MENU, + route: "menu-level-3b", + component: "/menu-level/menu-level-1b/menu-level-2b/menu-level-3b/index.tsx", + }, + ], + }, + ], + }, + ], +}; +const ERRORS_PERMISSION = { + id: "9406067785553476", + parentId: "", + label: "sys.menu.error.index", + name: "Error", + icon: "bxs:error-alt", + type: PermissionType.CATALOGUE, + route: "error", + order: 6, + children: [ + { + id: "8557056851997154", + parentId: "9406067785553476", + label: "sys.menu.error.403", + name: "403", + type: PermissionType.MENU, + route: "403", + component: "/sys/error/Page403.tsx", + }, + { + id: "5095669208159005", + parentId: "9406067785553476", + label: "sys.menu.error.404", + name: "404", + type: PermissionType.MENU, + route: "404", + component: "/sys/error/Page404.tsx", + }, + { + id: "0225992135973772", + parentId: "9406067785553476", + label: "sys.menu.error.500", + name: "500", + type: PermissionType.MENU, + route: "500", + component: "/sys/error/Page500.tsx", + }, + ], +}; +const OTHERS_PERMISSION = [ + { + id: "3981225257359246", + parentId: "", + label: "sys.menu.calendar", + name: "Calendar", + icon: "solar:calendar-bold-duotone", + type: PermissionType.MENU, + route: "calendar", + component: "/sys/others/calendar/index.tsx", + }, + { + id: "3513985683886393", + parentId: "", + label: "sys.menu.kanban", + name: "kanban", + icon: "solar:clipboard-bold-duotone", + type: PermissionType.MENU, + route: "kanban", + component: "/sys/others/kanban/index.tsx", + }, + { + id: "5455837930804461", + parentId: "", + label: "sys.menu.disabled", + name: "Disabled", + icon: "ic_disabled", + type: PermissionType.MENU, + route: "disabled", + status: BasicStatus.DISABLE, + component: "/sys/others/calendar/index.tsx", + }, + { + id: "7728048658221587", + parentId: "", + label: "sys.menu.label", + name: "Label", + icon: "ic_label", + type: PermissionType.MENU, + route: "label", + newFeature: true, + component: "/sys/others/blank.tsx", + }, + { + id: "5733704222120995", + parentId: "", + label: "sys.menu.frame", + name: "Frame", + icon: "ic_external", + type: PermissionType.CATALOGUE, + route: "frame", + children: [ + { + id: "9884486809510480", + parentId: "5733704222120995", + label: "sys.menu.external_link", + name: "External Link", + type: PermissionType.MENU, + route: "external_link", + hideTab: true, + component: "/sys/others/iframe/external-link.tsx", + frameSrc: "https://ant.design/", + }, + { + id: "9299640886731819", + parentId: "5733704222120995", + label: "sys.menu.iframe", + name: "Iframe", + type: PermissionType.MENU, + route: "frame", + component: "/sys/others/iframe/index.tsx", + frameSrc: "https://ant.design/", + }, + ], + }, + { + id: "0941594969900756", + parentId: "", + label: "sys.menu.blank", + name: "Disabled", + icon: "ic_blank", + type: PermissionType.MENU, + route: "blank", + component: "/sys/others/blank.tsx", + }, +]; + +export const PERMISSION_LIST = [ + DASHBOARD_PERMISSION, + MANAGEMENT_PERMISSION, + COMPONENTS_PERMISSION, + FUNCTIONS_PERMISSION, + MENU_LEVEL_PERMISSION, + ERRORS_PERMISSION, + ...OTHERS_PERMISSION, +]; + +/** + * User role mock + */ +const ADMIN_ROLE = { + id: "4281707933534332", + name: "Admin", + label: "admin", + status: BasicStatus.ENABLE, + order: 1, + desc: "Super Admin", + permission: PERMISSION_LIST, +}; +const TEST_ROLE = { + id: "9931665660771476", + name: "Test", + label: "test", + status: BasicStatus.ENABLE, + order: 2, + desc: "test", + permission: [DASHBOARD_PERMISSION, COMPONENTS_PERMISSION, FUNCTIONS_PERMISSION], +}; +export const ROLE_LIST = [ADMIN_ROLE, TEST_ROLE]; + +/** + * User data mock + */ +export const DEFAULT_USER = { + id: "b34719e1-ce46-457e-9575-99505ecee828", + username: "admin", + email: faker.internet.email(), + avatar: faker.image.avatarGitHub(), + createdAt: faker.date.anytime(), + updatedAt: faker.date.recent(), + password: "1q2w3E*", + role: ADMIN_ROLE, + permissions: ADMIN_ROLE.permission, + desc: "", + homePath: "/", + token: "/", + realName: "", + userId: "", +}; +export const TEST_USER = { + id: "efaa20ea-4dc5-47ee-a200-8a899be29494", + username: "test", + password: "1q2w3E*", + email: faker.internet.email(), + avatar: faker.image.avatarGitHub(), + createdAt: faker.date.anytime(), + updatedAt: faker.date.recent(), + role: TEST_ROLE, + permissions: TEST_ROLE.permission, + desc: "", + homePath: "/", + token: "/", + realName: "", + userId: "", +}; +export const USER_LIST = [DEFAULT_USER, TEST_USER]; + +// * Hot update, updating user permissions, only effective in the development environment +if (import.meta.hot) { + import.meta.hot.accept((newModule) => { + if (!newModule) return; + + const { DEFAULT_USER, TEST_USER, PERMISSION_LIST } = newModule; + + const { + userInfo, + actions: { setUserInfo }, + } = useUserStore.getState(); + + if (!userInfo?.username) return; + + const newUserInfo = userInfo.username === DEFAULT_USER.username ? DEFAULT_USER : TEST_USER; + + setUserInfo(newUserInfo); + + console.log("[HMR] User permissions updated:", { + username: newUserInfo.username, + permissions: newUserInfo.permissions, + }); + }); +} diff --git a/apps/react-admin/src/_mock/handlers/_demo.js b/apps/react-admin/src/_mock/handlers/_demo.js new file mode 100644 index 000000000..b73a9c976 --- /dev/null +++ b/apps/react-admin/src/_mock/handlers/_demo.js @@ -0,0 +1,9 @@ +import { http, HttpResponse } from "msw"; + +import { DemoApi } from "@/api/services/demoService"; + +const mockTokenExpired = http.post(`/api${DemoApi.TOKEN_EXPIRED}`, () => { + return new HttpResponse(null, { status: 401 }); +}); + +export default [mockTokenExpired]; diff --git a/apps/react-admin/src/_mock/handlers/_org.js b/apps/react-admin/src/_mock/handlers/_org.js new file mode 100644 index 000000000..12892dc40 --- /dev/null +++ b/apps/react-admin/src/_mock/handlers/_org.js @@ -0,0 +1,14 @@ +import { http, HttpResponse } from "msw"; + +import { ORG_LIST } from "@/_mock/assets"; +import { OrgApi } from "@/api/services/orgService"; + +const orgList = http.get(`/api${OrgApi.Org}`, () => { + return HttpResponse.json({ + status: 0, + message: "", + data: ORG_LIST, + }); +}); + +export default [orgList]; diff --git a/apps/react-admin/src/_mock/handlers/_user.js b/apps/react-admin/src/_mock/handlers/_user.js new file mode 100644 index 000000000..8c764f9c7 --- /dev/null +++ b/apps/react-admin/src/_mock/handlers/_user.js @@ -0,0 +1,46 @@ +import { faker } from "@faker-js/faker"; +import { http, HttpResponse, delay } from "msw"; + +import { UserApi } from "@/api/services/userService"; + +import { USER_LIST } from "../assets"; + +const signIn = http.post(`/api${UserApi.SignIn}`, async ({ request }) => { + const { username, password } = await request.json(); + + const user = USER_LIST.find((item) => item.username === username); + + if (!user || user.password !== password) { + return HttpResponse.json({ + status: 10001, + message: "Incorrect username or password.", + }); + } + + return HttpResponse.json({ + status: 0, + message: "", + data: { + user, + accessToken: faker.string.uuid(), + refreshToken: faker.string.uuid(), + }, + }); +}); + +const userList = http.get("/api/user", async () => { + await delay(1000); + return HttpResponse.json( + Array.from({ length: 10 }).map(() => ({ + fullname: faker.person.fullName(), + email: faker.internet.email(), + avatar: faker.image.avatarGitHub(), + address: faker.location.streetAddress(), + })), + { + status: 200, + }, + ); +}); + +export default [signIn, userList]; diff --git a/apps/react-admin/src/_mock/index.js b/apps/react-admin/src/_mock/index.js new file mode 100644 index 000000000..c0961ce09 --- /dev/null +++ b/apps/react-admin/src/_mock/index.js @@ -0,0 +1,10 @@ +import { setupWorker } from "msw/browser"; + +import demoMockApi from "./handlers/_demo"; +import orgMockApi from "./handlers/_org"; +import userMockApi from "./handlers/_user"; + +const handlers = [...userMockApi, ...orgMockApi, ...demoMockApi]; +const worker = setupWorker(...handlers); + +export default worker; diff --git a/apps/react-admin/src/_mock/utils.js b/apps/react-admin/src/_mock/utils.js new file mode 100644 index 000000000..7b6b4d888 --- /dev/null +++ b/apps/react-admin/src/_mock/utils.js @@ -0,0 +1,9 @@ +import { faker } from "@faker-js/faker"; + +export const fakeAvatars = (count) => { + const result = []; + for (let index = 0; index < count; index += 1) { + result.push(faker.image.avatarGitHub()); + } + return result; +}; diff --git a/apps/react-admin/src/api/abp-core/abp.ts b/apps/react-admin/src/api/abp-core/abp.ts new file mode 100644 index 000000000..471ccc11d --- /dev/null +++ b/apps/react-admin/src/api/abp-core/abp.ts @@ -0,0 +1,26 @@ +import type { ApplicationConfigurationDto, ApplicationLocalizationDto } from "#/abp-core"; +import requestClient from "../request"; + +/** + * 获取应用程序配置信息 + */ +export function getConfigApi(options?: { + includeLocalizationResources?: boolean; +}): Promise { + return requestClient.get("/api/abp/application-configuration", { + params: options, + }); +} + +/** + * 获取应用程序语言 + * @returns 本地化配置 + */ +export function getLocalizationApi(options: { + cultureName: string; + onlyDynamics?: boolean; +}): Promise { + return requestClient.get("/api/abp/application-localization", { + params: options, + }); +} diff --git a/apps/react-admin/src/api/abp-core/index.ts b/apps/react-admin/src/api/abp-core/index.ts new file mode 100644 index 000000000..581df1d3a --- /dev/null +++ b/apps/react-admin/src/api/abp-core/index.ts @@ -0,0 +1,2 @@ +export * from "./abp"; +// export * from './menu'; diff --git a/apps/react-admin/src/api/abp-core/menu.ts b/apps/react-admin/src/api/abp-core/menu.ts new file mode 100644 index 000000000..b2fb90201 --- /dev/null +++ b/apps/react-admin/src/api/abp-core/menu.ts @@ -0,0 +1,9 @@ +// import type { RouteRecordStringComponent } from '@vben/types'; +// import requestClient from '../request'; + +/** + * 获取用户所有菜单 + */ +// export async function getAllMenusApi() { +// return requestClient.get('/menu/all'); +// } diff --git a/apps/react-admin/src/api/account/account.ts b/apps/react-admin/src/api/account/account.ts new file mode 100644 index 000000000..8710dd7f1 --- /dev/null +++ b/apps/react-admin/src/api/account/account.ts @@ -0,0 +1,28 @@ +import type { ListResultDto } from "#/abp-core"; +import type { + GetTwoFactorProvidersInput, + TwoFactorProvider, + SendEmailSigninCodeDto, + SendPhoneSigninCodeDto, +} from "#/account/account"; +import requestClient from "@/api/request"; + +/** + * Get available two-factor authentication providers + */ +export const getTwoFactorProvidersApi = (input: GetTwoFactorProvidersInput) => + requestClient.get>("/api/account/two-factor-providers", { + params: input, + }); + +/** + * Send sign-in verification email + */ +export const sendEmailSigninCodeApi = (input: SendEmailSigninCodeDto) => + requestClient.post("/api/account/email/send-signin-code", input); + +/** + * Send sign-in verification SMS + */ +export const sendPhoneSigninCodeApi = (input: SendPhoneSigninCodeDto) => + requestClient.post("/api/account/phone/send-signin-code", input); diff --git a/apps/react-admin/src/api/account/index.ts b/apps/react-admin/src/api/account/index.ts new file mode 100644 index 000000000..64a674984 --- /dev/null +++ b/apps/react-admin/src/api/account/index.ts @@ -0,0 +1,4 @@ +export * from "./token"; +export * from "./user"; +export * from "./my-session"; +export * from "./account"; diff --git a/apps/react-admin/src/api/account/my-session.ts b/apps/react-admin/src/api/account/my-session.ts new file mode 100644 index 000000000..03fddc84e --- /dev/null +++ b/apps/react-admin/src/api/account/my-session.ts @@ -0,0 +1,23 @@ +import type { IdentitySessionDto } from "#/management/identity/sessions"; +import type { PagedResultDto } from "#/abp-core"; +import requestClient from "@/api/request"; + +export interface GetMySessionsInput { + filter?: string; + maxResultCount?: number; + skipCount?: number; +} + +/** + * Get current user's sessions + */ +export const getSessionsApi = (input?: GetMySessionsInput) => + requestClient.get>("/api/account/my-profile/sessions", { + params: input, + }); + +/** + * Revoke a session + */ +export const revokeSessionApi = (sessionId: string) => + requestClient.delete(`/api/account/my-profile/sessions/${sessionId}/revoke`); diff --git a/apps/react-admin/src/api/account/profile.ts b/apps/react-admin/src/api/account/profile.ts new file mode 100644 index 000000000..221bb3761 --- /dev/null +++ b/apps/react-admin/src/api/account/profile.ts @@ -0,0 +1,68 @@ +import type { + ProfileDto, + UpdateProfileDto, + ChangePasswordInput, + TwoFactorEnabledDto, + AuthenticatorDto, + VerifyAuthenticatorCodeInput, + AuthenticatorRecoveryCodeDto, + SendEmailConfirmCodeDto, + ConfirmEmailInput, +} from "#/account/profile"; +import requestClient from "@/api/request"; + +/** + * Get profile information + */ +export const getApi = () => requestClient.get("/api/account/my-profile"); + +/** + * Update profile information + */ +export const updateApi = (input: UpdateProfileDto) => requestClient.put("/api/account/my-profile", input); + +/** + * Change password + */ +export const changePasswordApi = (input: ChangePasswordInput) => + requestClient.post("/api/account/my-profile/change-password", input); + +/** + * Get two-factor authentication status + */ +export const getTwoFactorEnabledApi = () => + requestClient.get("/api/account/my-profile/two-factor"); + +/** + * Set two-factor authentication status + */ +export const changeTwoFactorEnabledApi = (input: TwoFactorEnabledDto) => + requestClient.put("/api/account/my-profile/change-two-factor", input); + +/** + * Get authenticator configuration + */ +export const getAuthenticatorApi = () => requestClient.get("/api/account/my-profile/authenticator"); + +/** + * Verify authenticator code + */ +export const verifyAuthenticatorCodeApi = (input: VerifyAuthenticatorCodeInput) => + requestClient.post("/api/account/my-profile/verify-authenticator-code", input); + +/** + * Reset authenticator + */ +export const resetAuthenticatorApi = () => requestClient.post("/api/account/my-profile/reset-authenticator"); + +/** + * Send email confirmation link + */ +export const sendEmailConfirmLinkApi = (input: SendEmailConfirmCodeDto) => + requestClient.post("/api/account/my-profile/send-email-confirm-link", input); + +/** + * Confirm email + */ +export const confirmEmailApi = (input: ConfirmEmailInput) => + requestClient.put("/api/account/my-profile/confirm-email", input); diff --git a/apps/react-admin/src/api/account/token.ts b/apps/react-admin/src/api/account/token.ts new file mode 100644 index 000000000..7cc52222f --- /dev/null +++ b/apps/react-admin/src/api/account/token.ts @@ -0,0 +1,63 @@ +import type { OAuthTokenResult, PasswordTokenRequestModel, RefreshTokenRequestModel, TokenResult } from "#/account"; +import requestClient from "../request"; + +/** + * 用户登录 + * @param request 参数 + * @returns 用户token + */ +export async function loginApi(request: PasswordTokenRequestModel): Promise { + const clientId = import.meta.env.VITE_GLOB_CLIENT_ID; + const clientSecret = import.meta.env.VITE_GLOB_CLIENT_SECRET; + const scope = import.meta.env.VITE_GLOB_SCOPE; + const result = await requestClient.post( + "/connect/token", + { + client_id: clientId, + client_secret: clientSecret, + grant_type: "password", + password: request.password, + scope: scope, + username: request.username, + }, + { + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + timeout: 30_000, + }, + ); + return { + accessToken: result.access_token, + expiresIn: result.expires_in, + refreshToken: result.refresh_token, + tokenType: result.token_type, + }; +} + +export async function refreshToken(request: RefreshTokenRequestModel): Promise { + const clientId = import.meta.env.VITE_GLOB_CLIENT_ID; + const clientSecret = import.meta.env.VITE_GLOB_CLIENT_SECRET; + const scope = import.meta.env.VITE_GLOB_SCOPE; + const result = await requestClient.post( + "/connect/token", + { + client_id: clientId, + client_secret: clientSecret, + grant_type: "refresh_token", + refresh_token: request.refreshToken, + scope: scope, + }, + { + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + }, + ); + return { + accessToken: result.access_token, + expiresIn: result.expires_in, + refreshToken: result.refresh_token, + tokenType: result.token_type, + }; +} diff --git a/apps/react-admin/src/api/account/user.ts b/apps/react-admin/src/api/account/user.ts new file mode 100644 index 000000000..d72c325e2 --- /dev/null +++ b/apps/react-admin/src/api/account/user.ts @@ -0,0 +1,17 @@ +import type { OAuthUserInfo, UserInfo } from "#/account"; +import requestClient from "../request"; + +/** + * 获取用户信息 + */ +export async function getUserInfoApi(): Promise { + const result = await requestClient.get("/connect/userinfo"); + return { + ...result, + emailVerified: result.email_verified, + givenName: result.given_name, + phoneNumberVerified: result.phone_number_verified, + preferredUsername: result.preferred_username, + uniqueName: result.unique_name, + }; +} diff --git a/apps/react-admin/src/api/apiClient.ts b/apps/react-admin/src/api/apiClient.ts new file mode 100644 index 000000000..2d78e9d46 --- /dev/null +++ b/apps/react-admin/src/api/apiClient.ts @@ -0,0 +1,98 @@ +import axios, { type AxiosRequestConfig, type AxiosError, type AxiosResponse } from "axios"; + +import { t } from "@/locales/i18n"; +import userStore, { useUserToken } from "@/store/userStore"; + +import { toast } from "sonner"; +//TODO rm +// 创建 axios 实例 +const axiosInstance = axios.create({ + baseURL: import.meta.env.VITE_APP_BASE_API, + timeout: 50000, + headers: { "Content-Type": "application/json;charset=utf-8" }, +}); + +// 请求拦截 +axiosInstance.interceptors.request.use( + (config) => { + // 在请求被发送之前做些什么 + const { accessToken } = useUserToken(); + config.headers.Authorization = `${accessToken}`; + return config; + }, + (error) => { + // 请求错误时做些什么 + return Promise.reject(error); + }, +); + +// 响应拦截 +axiosInstance.interceptors.response.use( + (res: AxiosResponse) => { + const { data, status, headers } = res; + + if (headers._abpwrapresult === "true") { + const { code, result, message, details } = data; + const hasSuccess = data && Reflect.has(data, "code") && code === "0"; + if (hasSuccess) { + return result; + } + const content = details || message; + + throw new Error(content); + } + + if (status >= 200 && status < 400) { + return data; + } + + // 业务请求错误 + throw new Error(t("sys.api.apiRequestFailed")); + }, + (error: AxiosError) => { + const { response, message } = error || {}; + + const errMsg = response?.data?.message || message || t("sys.api.errorMessage"); + toast.error(errMsg, { + position: "top-center", + }); + + const status = response?.status; + if (status === 401) { + userStore.getState().actions.clearUserInfoAndToken(); + } + return Promise.reject(error); + }, +); + +class APIClient { + get(config: AxiosRequestConfig): Promise { + return this.request({ ...config, method: "GET" }); + } + + post(config: AxiosRequestConfig): Promise { + return this.request({ ...config, method: "POST" }); + } + + put(config: AxiosRequestConfig): Promise { + return this.request({ ...config, method: "PUT" }); + } + + delete(config: AxiosRequestConfig): Promise { + return this.request({ ...config, method: "DELETE" }); + } + + request(config: AxiosRequestConfig): Promise { + return new Promise((resolve, reject) => { + axiosInstance + .request>(config) + .then((res: AxiosResponse) => { + resolve(res as unknown as Promise); + }) + .catch((e: Error | AxiosError) => { + reject(e); + }); + }); + } +} +export default new APIClient(); diff --git a/apps/react-admin/src/api/gen/index.ts b/apps/react-admin/src/api/gen/index.ts new file mode 100644 index 000000000..eae885d0e --- /dev/null +++ b/apps/react-admin/src/api/gen/index.ts @@ -0,0 +1,3 @@ +// This file is auto-generated by @hey-api/openapi-ts +export * from "./sdk.gen"; +export * from "./types.gen"; diff --git a/apps/react-admin/src/api/gen/sdk.gen.ts b/apps/react-admin/src/api/gen/sdk.gen.ts new file mode 100644 index 000000000..17c8a751c --- /dev/null +++ b/apps/react-admin/src/api/gen/sdk.gen.ts @@ -0,0 +1,6212 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { createClient, createConfig, type OptionsLegacyParser, formDataBodySerializer } from "@hey-api/client-axios"; +import type { + AbpApiDefinitionGetData, + AbpApiDefinitionGetError, + AbpApiDefinitionGetResponse, + AbpApplicationConfigurationGetData, + AbpApplicationConfigurationGetError, + AbpApplicationConfigurationGetResponse, + AbpApplicationLocalizationGetData, + AbpApplicationLocalizationGetError, + AbpApplicationLocalizationGetResponse, + AbpTenantFindTenantByNameData, + AbpTenantFindTenantByNameError, + AbpTenantFindTenantByNameResponse, + AbpTenantFindTenantByIdData, + AbpTenantFindTenantByIdError, + AbpTenantFindTenantByIdResponse, + AccountRegisterData, + AccountRegisterError, + AccountRegisterResponse, + AccountResetPasswordData, + AccountResetPasswordError, + AccountResetPasswordResponse, + AccountSendPhoneSigninCodeData, + AccountSendPhoneSigninCodeError, + AccountSendPhoneSigninCodeResponse, + AccountSendEmailSigninCodeData, + AccountSendEmailSigninCodeError, + AccountSendEmailSigninCodeResponse, + AccountSendPhoneRegisterCodeData, + AccountSendPhoneRegisterCodeError, + AccountSendPhoneRegisterCodeResponse, + AccountSendPhoneResetPasswordCodeData, + AccountSendPhoneResetPasswordCodeError, + AccountSendPhoneResetPasswordCodeResponse, + AccountGetTwoFactorProvidersData, + AccountGetTwoFactorProvidersError, + AccountGetTwoFactorProvidersResponse, + AccountRegister1Data, + AccountRegister1Error, + AccountRegister1Response, + AccountSendPasswordResetCodeData, + AccountSendPasswordResetCodeError, + AccountSendPasswordResetCodeResponse, + AccountVerifyPasswordResetTokenData, + AccountVerifyPasswordResetTokenError, + AccountVerifyPasswordResetTokenResponse, + AccountResetPassword1Data, + AccountResetPassword1Error, + AccountResetPassword1Response, + AuditLogDeleteData, + AuditLogDeleteError, + AuditLogDeleteResponse, + AuditLogGetData, + AuditLogGetError, + AuditLogGetResponse, + AuditLogGetListData, + AuditLogGetListError, + AuditLogGetListResponse, + BackgroundJobActionAddActionData, + BackgroundJobActionAddActionError, + BackgroundJobActionAddActionResponse, + BackgroundJobActionGetActionsData, + BackgroundJobActionGetActionsError, + BackgroundJobActionGetActionsResponse, + BackgroundJobActionDeleteActionData, + BackgroundJobActionDeleteActionError, + BackgroundJobActionDeleteActionResponse, + BackgroundJobActionUpdateActionData, + BackgroundJobActionUpdateActionError, + BackgroundJobActionUpdateActionResponse, + BackgroundJobActionGetDefinitionsData, + BackgroundJobActionGetDefinitionsError, + BackgroundJobActionGetDefinitionsResponse, + BackgroundJobInfoCreateData, + BackgroundJobInfoCreateError, + BackgroundJobInfoCreateResponse, + BackgroundJobInfoGetListData, + BackgroundJobInfoGetListError, + BackgroundJobInfoGetListResponse, + BackgroundJobInfoDeleteData, + BackgroundJobInfoDeleteError, + BackgroundJobInfoDeleteResponse, + BackgroundJobInfoGetData, + BackgroundJobInfoGetError, + BackgroundJobInfoGetResponse, + BackgroundJobInfoUpdateData, + BackgroundJobInfoUpdateError, + BackgroundJobInfoUpdateResponse, + BackgroundJobInfoPauseData, + BackgroundJobInfoPauseError, + BackgroundJobInfoPauseResponse, + BackgroundJobInfoResumeData, + BackgroundJobInfoResumeError, + BackgroundJobInfoResumeResponse, + BackgroundJobInfoTriggerData, + BackgroundJobInfoTriggerError, + BackgroundJobInfoTriggerResponse, + BackgroundJobInfoStopData, + BackgroundJobInfoStopError, + BackgroundJobInfoStopResponse, + BackgroundJobInfoStartData, + BackgroundJobInfoStartError, + BackgroundJobInfoStartResponse, + BackgroundJobInfoBulkStopData, + BackgroundJobInfoBulkStopError, + BackgroundJobInfoBulkStopResponse, + BackgroundJobInfoBulkStartData, + BackgroundJobInfoBulkStartError, + BackgroundJobInfoBulkStartResponse, + BackgroundJobInfoBulkTriggerData, + BackgroundJobInfoBulkTriggerError, + BackgroundJobInfoBulkTriggerResponse, + BackgroundJobInfoBulkResumeData, + BackgroundJobInfoBulkResumeError, + BackgroundJobInfoBulkResumeResponse, + BackgroundJobInfoBulkPauseData, + BackgroundJobInfoBulkPauseError, + BackgroundJobInfoBulkPauseResponse, + BackgroundJobInfoBulkDeleteData, + BackgroundJobInfoBulkDeleteError, + BackgroundJobInfoBulkDeleteResponse, + BackgroundJobInfoGetDefinitionsData, + BackgroundJobInfoGetDefinitionsError, + BackgroundJobInfoGetDefinitionsResponse, + BackgroundJobInfoGetAvailableFieldsData, + BackgroundJobInfoGetAvailableFieldsError, + BackgroundJobInfoGetAvailableFieldsResponse, + BackgroundJobInfoSearchData, + BackgroundJobInfoSearchError, + BackgroundJobInfoSearchResponse, + BackgroundJobLogDeleteData, + BackgroundJobLogDeleteError, + BackgroundJobLogDeleteResponse, + BackgroundJobLogGetData, + BackgroundJobLogGetError, + BackgroundJobLogGetResponse, + BackgroundJobLogGetListData, + BackgroundJobLogGetListError, + BackgroundJobLogGetListResponse, + BackupHandleData, + BackupHandleError, + BackupHandleResponse, + BulkCancelHandleData, + BulkCancelHandleError, + BulkCancelHandleResponse, + BulkDeleteHandleData, + BulkDeleteHandleError, + BulkDeleteHandleResponse, + BulkRetryHandleData, + BulkRetryHandleError, + BulkRetryHandleResponse, + CacheGetKeysData, + CacheGetKeysError, + CacheGetKeysResponse, + CacheGetValueData, + CacheGetValueError, + CacheGetValueResponse, + CacheSetData, + CacheSetError, + CacheSetResponse, + CacheRefreshData, + CacheRefreshError, + CacheRefreshResponse, + CacheRemoveData, + CacheRemoveError, + CacheRemoveResponse, + CancelHandleData, + CancelHandleError, + CancelHandleResponse, + ChatGetMyGroupMessageData, + ChatGetMyGroupMessageError, + ChatGetMyGroupMessageResponse, + ChatGetMyChatMessageData, + ChatGetMyChatMessageError, + ChatGetMyChatMessageResponse, + ChatGetMyLastChatMessageData, + ChatGetMyLastChatMessageError, + ChatGetMyLastChatMessageResponse, + ChatSendMessageData, + ChatSendMessageError, + ChatSendMessageResponse, + ClaimChangeAvatarData, + ClaimChangeAvatarError, + ClaimChangeAvatarResponse, + ClaimTypeCreateData, + ClaimTypeCreateError, + ClaimTypeCreateResponse, + ClaimTypeGetListData, + ClaimTypeGetListError, + ClaimTypeGetListResponse, + ClaimTypeDeleteData, + ClaimTypeDeleteError, + ClaimTypeDeleteResponse, + ClaimTypeGetData, + ClaimTypeGetError, + ClaimTypeGetResponse, + ClaimTypeUpdateData, + ClaimTypeUpdateError, + ClaimTypeUpdateResponse, + ClaimTypeGetAllListData, + ClaimTypeGetAllListError, + ClaimTypeGetAllListResponse, + DataCreateData, + DataCreateError, + DataCreateResponse, + DataGetListData, + DataGetListError, + DataGetListResponse, + DataCreateItemData, + DataCreateItemError, + DataCreateItemResponse, + DataDeleteData, + DataDeleteError, + DataDeleteResponse, + DataGetData, + DataGetError, + DataGetResponse, + DataUpdateData, + DataUpdateError, + DataUpdateResponse, + DataDeleteItemData, + DataDeleteItemError, + DataDeleteItemResponse, + DataUpdateItemData, + DataUpdateItemError, + DataUpdateItemResponse, + DataGet1Data, + DataGet1Error, + DataGet1Response, + DataGetAllData, + DataGetAllError, + DataGetAllResponse, + DataMoveData, + DataMoveError, + DataMoveResponse, + DeleteHandleData, + DeleteHandleError, + DeleteHandleResponse, + GetHandleData, + GetHandleError, + GetHandleResponse, + DeleteHandle1Data, + DeleteHandle1Error, + DeleteHandle1Response, + GetHandle1Data, + GetHandle1Error, + GetHandle1Response, + DeleteByDefinitionHandleData, + DeleteByDefinitionHandleError, + DeleteByDefinitionHandleResponse, + DeleteByDefinitionAndVersionHandleData, + DeleteByDefinitionAndVersionHandleError, + DeleteByDefinitionAndVersionHandleResponse, + DispatchHandleData, + DispatchHandleError, + DispatchHandleResponse, + DispatchHandle1Data, + DispatchHandle1Error, + DispatchHandle1Response, + DispatchHandle2Data, + DispatchHandle2Error, + DispatchHandle2Response, + DispatchEndpointHandleData, + DispatchEndpointHandleError, + DispatchEndpointHandleResponse, + DispatchEndpointHandle1Data, + DispatchEndpointHandle1Error, + DispatchEndpointHandle1Response, + DynamicClaimsRefreshData, + DynamicClaimsRefreshError, + DynamicClaimsRefreshResponse, + EditionCreateData, + EditionCreateError, + EditionCreateResponse, + EditionGetListData, + EditionGetListError, + EditionGetListResponse, + EditionDeleteData, + EditionDeleteError, + EditionDeleteResponse, + EditionGetData, + EditionGetError, + EditionGetResponse, + EditionUpdateData, + EditionUpdateError, + EditionUpdateResponse, + EntityChangesGetData, + EntityChangesGetError, + EntityChangesGetResponse, + EntityChangesGetListData, + EntityChangesGetListError, + EntityChangesGetListResponse, + EntityChangesGetWithUsernameData, + EntityChangesGetWithUsernameError, + EntityChangesGetWithUsernameResponse, + EntityChangesGetWithUsername1Data, + EntityChangesGetWithUsername1Error, + EntityChangesGetWithUsername1Response, + EntityTypeInfoGetData, + EntityTypeInfoGetError, + EntityTypeInfoGetResponse, + EntityTypeInfoGetListData, + EntityTypeInfoGetListError, + EntityTypeInfoGetListResponse, + ExecuteHandleData, + ExecuteHandleError, + ExecuteHandleResponse, + ExecuteHandle1Data, + ExecuteHandle1Error, + ExecuteHandle1Response, + ExecuteHandle2Data, + ExecuteHandle2Error, + ExecuteHandle2Response, + ExportHandleData, + ExportHandleError, + ExportHandleResponse, + FeatureDefinitionCreateData, + FeatureDefinitionCreateError, + FeatureDefinitionCreateResponse, + FeatureDefinitionGetListData, + FeatureDefinitionGetListError, + FeatureDefinitionGetListResponse, + FeatureDefinitionDeleteData, + FeatureDefinitionDeleteError, + FeatureDefinitionDeleteResponse, + FeatureDefinitionGetData, + FeatureDefinitionGetError, + FeatureDefinitionGetResponse, + FeatureDefinitionUpdateData, + FeatureDefinitionUpdateError, + FeatureDefinitionUpdateResponse, + FeatureGroupDefinitionCreateData, + FeatureGroupDefinitionCreateError, + FeatureGroupDefinitionCreateResponse, + FeatureGroupDefinitionGetListData, + FeatureGroupDefinitionGetListError, + FeatureGroupDefinitionGetListResponse, + FeatureGroupDefinitionDeleteData, + FeatureGroupDefinitionDeleteError, + FeatureGroupDefinitionDeleteResponse, + FeatureGroupDefinitionGetData, + FeatureGroupDefinitionGetError, + FeatureGroupDefinitionGetResponse, + FeatureGroupDefinitionUpdateData, + FeatureGroupDefinitionUpdateError, + FeatureGroupDefinitionUpdateResponse, + FeaturesGetData, + FeaturesGetError, + FeaturesGetResponse, + FeaturesUpdateData, + FeaturesUpdateError, + FeaturesUpdateResponse, + FeaturesDeleteData, + FeaturesDeleteError, + FeaturesDeleteResponse, + FeedbackCreateData, + FeedbackCreateError, + FeedbackCreateResponse, + FeedbackGetListData, + FeedbackGetListError, + FeedbackGetListResponse, + FeedbackDeleteData, + FeedbackDeleteError, + FeedbackDeleteResponse, + FeedbackGetData, + FeedbackGetError, + FeedbackGetResponse, + FeedbackAttachmentGetData, + FeedbackAttachmentGetError, + FeedbackAttachmentGetResponse, + FeedbackAttachmentDeleteData, + FeedbackAttachmentDeleteError, + FeedbackAttachmentDeleteResponse, + FeedbackAttachmentUploadData, + FeedbackAttachmentUploadError, + FeedbackAttachmentUploadResponse, + GetHandle2Data, + GetHandle2Error, + GetHandle2Response, + GetHandle3Data, + GetHandle3Error, + GetHandle3Response, + GetHandle4Data, + GetHandle4Error, + GetHandle4Response, + GetHandle5Data, + GetHandle5Error, + GetHandle5Response, + GetHandle6Data, + GetHandle6Error, + GetHandle6Response, + GetHandle7Data, + GetHandle7Error, + GetHandle7Response, + GetByDefinitionAndVersionHandleData, + GetByDefinitionAndVersionHandleError, + GetByDefinitionAndVersionHandleResponse, + GetByVersionIdHandleData, + GetByVersionIdHandleError, + GetByVersionIdHandleResponse, + GroupGetData, + GroupGetError, + GroupGetResponse, + GroupSearchData, + GroupSearchError, + GroupSearchResponse, + HistoryHandleData, + HistoryHandleError, + HistoryHandleResponse, + IdentitySessionsGetSessionsData, + IdentitySessionsGetSessionsError, + IdentitySessionsGetSessionsResponse, + IdentitySessionsRevokeSessionData, + IdentitySessionsRevokeSessionError, + IdentitySessionsRevokeSessionResponse, + ImportHandleData, + ImportHandleError, + ImportHandleResponse, + LanguageGetByNameData, + LanguageGetByNameError, + LanguageGetByNameResponse, + LanguageDeleteData, + LanguageDeleteError, + LanguageDeleteResponse, + LanguageUpdateData, + LanguageUpdateError, + LanguageUpdateResponse, + LanguageCreateData, + LanguageCreateError, + LanguageCreateResponse, + LanguageGetListData, + LanguageGetListError, + LanguageGetListResponse, + LayoutCreateData, + LayoutCreateError, + LayoutCreateResponse, + LayoutGetListData, + LayoutGetListError, + LayoutGetListResponse, + LayoutDeleteData, + LayoutDeleteError, + LayoutDeleteResponse, + LayoutGetData, + LayoutGetError, + LayoutGetResponse, + LayoutUpdateData, + LayoutUpdateError, + LayoutUpdateResponse, + LayoutGetAllListData, + LayoutGetAllListError, + LayoutGetAllListResponse, + ListHandleData, + ListHandleError, + ListHandleResponse, + ListHandle1Data, + ListHandle1Error, + ListHandle1Response, + ListHandle2Data, + ListHandle2Error, + ListHandle2Response, + ListHandle3Data, + ListHandle3Error, + ListHandle3Response, + SaveHandleData, + SaveHandleError, + SaveHandleResponse, + ListHandle4Data, + ListHandle4Error, + ListHandle4Response, + ListHandle5Data, + ListHandle5Error, + ListHandle5Response, + ListHandle6Data, + ListHandle6Error, + ListHandle6Response, + ListHandle7Data, + ListHandle7Error, + ListHandle7Response, + PostHandleData, + PostHandleError, + PostHandleResponse, + UpdateHandleData, + UpdateHandleError, + UpdateHandleResponse, + ListAllHandleData, + ListAllHandleError, + ListAllHandleResponse, + ListByDefinitionVersionIdsHandleData, + ListByDefinitionVersionIdsHandleError, + ListByDefinitionVersionIdsHandleResponse, + ListByProviderHandleData, + ListByProviderHandleError, + ListByProviderHandleResponse, + LoggingGetData, + LoggingGetError, + LoggingGetResponse, + LoggingGetListData, + LoggingGetListError, + LoggingGetListResponse, + LoginLoginData, + LoginLoginError, + LoginLoginResponse, + LoginLogoutData, + LoginLogoutError, + LoginLogoutResponse, + LoginCheckPasswordData, + LoginCheckPasswordError, + LoginCheckPasswordResponse, + MenuGetCurrentUserMenuListData, + MenuGetCurrentUserMenuListError, + MenuGetCurrentUserMenuListResponse, + MenuGetData, + MenuGetError, + MenuGetResponse, + MenuUpdateData, + MenuUpdateError, + MenuUpdateResponse, + MenuDeleteData, + MenuDeleteError, + MenuDeleteResponse, + MenuGetAllData, + MenuGetAllError, + MenuGetAllResponse, + MenuGetListData, + MenuGetListError, + MenuGetListResponse, + MenuCreateData, + MenuCreateError, + MenuCreateResponse, + MenuSetUserMenusData, + MenuSetUserMenusError, + MenuSetUserMenusResponse, + MenuGetUserMenuListData, + MenuGetUserMenuListError, + MenuGetUserMenuListResponse, + MenuSetUserStartupData, + MenuSetUserStartupError, + MenuSetUserStartupResponse, + MenuGetUserMenuList1Data, + MenuGetUserMenuList1Error, + MenuGetUserMenuList1Response, + MenuSetRoleMenusData, + MenuSetRoleMenusError, + MenuSetRoleMenusResponse, + MenuGetRoleMenuListData, + MenuGetRoleMenuListError, + MenuGetRoleMenuListResponse, + MenuSetRoleStartupData, + MenuSetRoleStartupError, + MenuSetRoleStartupResponse, + MenuGetRoleMenuList1Data, + MenuGetRoleMenuList1Error, + MenuGetRoleMenuList1Response, + MyFeedbackGetMyFeedbacksData, + MyFeedbackGetMyFeedbacksError, + MyFeedbackGetMyFeedbacksResponse, + MyFriendCreateData, + MyFriendCreateError, + MyFriendCreateResponse, + MyFriendDeleteData, + MyFriendDeleteError, + MyFriendDeleteResponse, + MyFriendGetListData, + MyFriendGetListError, + MyFriendGetListResponse, + MyFriendAddRequestData, + MyFriendAddRequestError, + MyFriendAddRequestResponse, + MyFriendGetData, + MyFriendGetError, + MyFriendGetResponse, + MyFriendGetAllListData, + MyFriendGetAllListError, + MyFriendGetAllListResponse, + MyNotificationMarkReadStateData, + MyNotificationMarkReadStateError, + MyNotificationMarkReadStateResponse, + MyNotificationDeleteData, + MyNotificationDeleteError, + MyNotificationDeleteResponse, + MyNotificationGetData, + MyNotificationGetError, + MyNotificationGetResponse, + MyNotificationGetListData, + MyNotificationGetListError, + MyNotificationGetListResponse, + MySubscriptionGetAllListData, + MySubscriptionGetAllListError, + MySubscriptionGetAllListResponse, + MySubscriptionGetListData, + MySubscriptionGetListError, + MySubscriptionGetListResponse, + MySubscriptionSubscribeData, + MySubscriptionSubscribeError, + MySubscriptionSubscribeResponse, + MySubscriptionUnSubscribeData, + MySubscriptionUnSubscribeError, + MySubscriptionUnSubscribeResponse, + MySubscriptionIsSubscribedData, + MySubscriptionIsSubscribedError, + MySubscriptionIsSubscribedResponse, + NotificationSendData, + NotificationSendError, + NotificationSendResponse, + NotificationSend1Data, + NotificationSend1Error, + NotificationSend1Response, + NotificationGetAssignableNotifiersData, + NotificationGetAssignableNotifiersError, + NotificationGetAssignableNotifiersResponse, + NotificationGetAssignableTemplatesData, + NotificationGetAssignableTemplatesError, + NotificationGetAssignableTemplatesResponse, + NotificationDefinitionCreateData, + NotificationDefinitionCreateError, + NotificationDefinitionCreateResponse, + NotificationDefinitionGetListData, + NotificationDefinitionGetListError, + NotificationDefinitionGetListResponse, + NotificationDefinitionDeleteData, + NotificationDefinitionDeleteError, + NotificationDefinitionDeleteResponse, + NotificationDefinitionGetData, + NotificationDefinitionGetError, + NotificationDefinitionGetResponse, + NotificationDefinitionUpdateData, + NotificationDefinitionUpdateError, + NotificationDefinitionUpdateResponse, + NotificationGroupDefinitionCreateData, + NotificationGroupDefinitionCreateError, + NotificationGroupDefinitionCreateResponse, + NotificationGroupDefinitionGetListData, + NotificationGroupDefinitionGetListError, + NotificationGroupDefinitionGetListResponse, + NotificationGroupDefinitionDeleteData, + NotificationGroupDefinitionDeleteError, + NotificationGroupDefinitionDeleteResponse, + NotificationGroupDefinitionGetData, + NotificationGroupDefinitionGetError, + NotificationGroupDefinitionGetResponse, + NotificationGroupDefinitionUpdateData, + NotificationGroupDefinitionUpdateError, + NotificationGroupDefinitionUpdateResponse, + OpenIddictApplicationGetData, + OpenIddictApplicationGetError, + OpenIddictApplicationGetResponse, + OpenIddictApplicationUpdateData, + OpenIddictApplicationUpdateError, + OpenIddictApplicationUpdateResponse, + OpenIddictApplicationDeleteData, + OpenIddictApplicationDeleteError, + OpenIddictApplicationDeleteResponse, + OpenIddictApplicationGetListData, + OpenIddictApplicationGetListError, + OpenIddictApplicationGetListResponse, + OpenIddictApplicationCreateData, + OpenIddictApplicationCreateError, + OpenIddictApplicationCreateResponse, + OpenIddictAuthorizationDeleteData, + OpenIddictAuthorizationDeleteError, + OpenIddictAuthorizationDeleteResponse, + OpenIddictAuthorizationGetData, + OpenIddictAuthorizationGetError, + OpenIddictAuthorizationGetResponse, + OpenIddictAuthorizationGetListData, + OpenIddictAuthorizationGetListError, + OpenIddictAuthorizationGetListResponse, + OpenIddictScopeCreateData, + OpenIddictScopeCreateError, + OpenIddictScopeCreateResponse, + OpenIddictScopeGetListData, + OpenIddictScopeGetListError, + OpenIddictScopeGetListResponse, + OpenIddictScopeDeleteData, + OpenIddictScopeDeleteError, + OpenIddictScopeDeleteResponse, + OpenIddictScopeGetData, + OpenIddictScopeGetError, + OpenIddictScopeGetResponse, + OpenIddictScopeUpdateData, + OpenIddictScopeUpdateError, + OpenIddictScopeUpdateResponse, + OpenIddictTokenDeleteData, + OpenIddictTokenDeleteError, + OpenIddictTokenDeleteResponse, + OpenIddictTokenGetData, + OpenIddictTokenGetError, + OpenIddictTokenGetResponse, + OpenIddictTokenGetListData, + OpenIddictTokenGetListError, + OpenIddictTokenGetListResponse, + OrganizationUnitsCreateData, + OrganizationUnitsCreateError, + OrganizationUnitsCreateResponse, + OrganizationUnitsGetListData, + OrganizationUnitsGetListError, + OrganizationUnitsGetListResponse, + OrganizationUnitsDeleteData, + OrganizationUnitsDeleteError, + OrganizationUnitsDeleteResponse, + OrganizationUnitsGetData, + OrganizationUnitsGetError, + OrganizationUnitsGetResponse, + OrganizationUnitsUpdateData, + OrganizationUnitsUpdateError, + OrganizationUnitsUpdateResponse, + OrganizationUnitsFindChildrenData, + OrganizationUnitsFindChildrenError, + OrganizationUnitsFindChildrenResponse, + OrganizationUnitsGetRootData, + OrganizationUnitsGetRootError, + OrganizationUnitsGetRootResponse, + OrganizationUnitsGetLastChildOrNullData, + OrganizationUnitsGetLastChildOrNullError, + OrganizationUnitsGetLastChildOrNullResponse, + OrganizationUnitsGetAllListData, + OrganizationUnitsGetAllListError, + OrganizationUnitsGetAllListResponse, + OrganizationUnitsGetRoleNamesData, + OrganizationUnitsGetRoleNamesError, + OrganizationUnitsGetRoleNamesResponse, + OrganizationUnitsGetUnaddedRolesData, + OrganizationUnitsGetUnaddedRolesError, + OrganizationUnitsGetUnaddedRolesResponse, + OrganizationUnitsGetRolesData, + OrganizationUnitsGetRolesError, + OrganizationUnitsGetRolesResponse, + OrganizationUnitsAddRolesData, + OrganizationUnitsAddRolesError, + OrganizationUnitsAddRolesResponse, + OrganizationUnitsGetUnaddedUsersData, + OrganizationUnitsGetUnaddedUsersError, + OrganizationUnitsGetUnaddedUsersResponse, + OrganizationUnitsGetUsersData, + OrganizationUnitsGetUsersError, + OrganizationUnitsGetUsersResponse, + OrganizationUnitsAddUsersData, + OrganizationUnitsAddUsersError, + OrganizationUnitsAddUsersResponse, + OrganizationUnitsMoveData, + OrganizationUnitsMoveError, + OrganizationUnitsMoveResponse, + OrganizationUnitEntityRuleGetData, + OrganizationUnitEntityRuleGetError, + OrganizationUnitEntityRuleGetResponse, + OrganizationUnitEntityRuleCreateData, + OrganizationUnitEntityRuleCreateError, + OrganizationUnitEntityRuleCreateResponse, + OrganizationUnitEntityRuleUpdateData, + OrganizationUnitEntityRuleUpdateError, + OrganizationUnitEntityRuleUpdateResponse, + OssContainerCreateData, + OssContainerCreateError, + OssContainerCreateResponse, + OssContainerDeleteData, + OssContainerDeleteError, + OssContainerDeleteResponse, + OssContainerGetData, + OssContainerGetError, + OssContainerGetResponse, + OssContainerGetListData, + OssContainerGetListError, + OssContainerGetListResponse, + OssContainerGetObjectListData, + OssContainerGetObjectListError, + OssContainerGetObjectListResponse, + OssManagementSettingGetAllForCurrentTenantData, + OssManagementSettingGetAllForCurrentTenantError, + OssManagementSettingGetAllForCurrentTenantResponse, + OssManagementSettingGetAllForGlobalData, + OssManagementSettingGetAllForGlobalError, + OssManagementSettingGetAllForGlobalResponse, + OssObjectCreateData, + OssObjectCreateError, + OssObjectCreateResponse, + OssObjectDeleteData, + OssObjectDeleteError, + OssObjectDeleteResponse, + OssObjectGetData, + OssObjectGetError, + OssObjectGetResponse, + OssObjectUploadData, + OssObjectUploadError, + OssObjectUploadResponse, + OssObjectBulkDeleteData, + OssObjectBulkDeleteError, + OssObjectBulkDeleteResponse, + OssObjectGetContentData, + OssObjectGetContentError, + OssObjectGetContentResponse, + PackageCreateData, + PackageCreateError, + PackageCreateResponse, + PackageGetListData, + PackageGetListError, + PackageGetListResponse, + PackageDeleteData, + PackageDeleteError, + PackageDeleteResponse, + PackageGetData, + PackageGetError, + PackageGetResponse, + PackageUpdateData, + PackageUpdateError, + PackageUpdateResponse, + PackageUploadBlobData, + PackageUploadBlobError, + PackageUploadBlobResponse, + PackageRemoveBlobData, + PackageRemoveBlobError, + PackageRemoveBlobResponse, + PackageDownloadBlobData, + PackageDownloadBlobError, + PackageDownloadBlobResponse, + PackageGetLatestData, + PackageGetLatestError, + PackageGetLatestResponse, + PackageGetLatest1Data, + PackageGetLatest1Error, + PackageGetLatest1Response, + PermissionDefinitionCreateData, + PermissionDefinitionCreateError, + PermissionDefinitionCreateResponse, + PermissionDefinitionGetListData, + PermissionDefinitionGetListError, + PermissionDefinitionGetListResponse, + PermissionDefinitionDeleteData, + PermissionDefinitionDeleteError, + PermissionDefinitionDeleteResponse, + PermissionDefinitionGetData, + PermissionDefinitionGetError, + PermissionDefinitionGetResponse, + PermissionDefinitionUpdateData, + PermissionDefinitionUpdateError, + PermissionDefinitionUpdateResponse, + PermissionGroupDefinitionCreateData, + PermissionGroupDefinitionCreateError, + PermissionGroupDefinitionCreateResponse, + PermissionGroupDefinitionGetListData, + PermissionGroupDefinitionGetListError, + PermissionGroupDefinitionGetListResponse, + PermissionGroupDefinitionDeleteData, + PermissionGroupDefinitionDeleteError, + PermissionGroupDefinitionDeleteResponse, + PermissionGroupDefinitionGetData, + PermissionGroupDefinitionGetError, + PermissionGroupDefinitionGetResponse, + PermissionGroupDefinitionUpdateData, + PermissionGroupDefinitionUpdateError, + PermissionGroupDefinitionUpdateResponse, + PermissionsGetData, + PermissionsGetError, + PermissionsGetResponse, + PermissionsUpdateData, + PermissionsUpdateError, + PermissionsUpdateResponse, + PrivateFilesUploadData, + PrivateFilesUploadError, + PrivateFilesUploadResponse, + PrivateFilesDeleteData, + PrivateFilesDeleteError, + PrivateFilesDeleteResponse, + PrivateFilesUpload1Data, + PrivateFilesUpload1Error, + PrivateFilesUpload1Response, + PrivateFilesGetListData, + PrivateFilesGetListError, + PrivateFilesGetListResponse, + PrivateFilesGetData, + PrivateFilesGetError, + PrivateFilesGetResponse, + PrivateFilesGet1Data, + PrivateFilesGet1Error, + PrivateFilesGet1Response, + PrivateFilesGet2Data, + PrivateFilesGet2Error, + PrivateFilesGet2Response, + PrivateFilesGet3Data, + PrivateFilesGet3Error, + PrivateFilesGet3Response, + PrivateFilesGet4Data, + PrivateFilesGet4Error, + PrivateFilesGet4Response, + PrivateFilesGet5Data, + PrivateFilesGet5Error, + PrivateFilesGet5Response, + PrivateFilesGet6Data, + PrivateFilesGet6Error, + PrivateFilesGet6Response, + PrivateFilesGet7Data, + PrivateFilesGet7Error, + PrivateFilesGet7Response, + PrivateFilesGetShareListData, + PrivateFilesGetShareListError, + PrivateFilesGetShareListResponse, + PrivateFilesShareData, + PrivateFilesShareError, + PrivateFilesShareResponse, + ProfileGetSessionsData, + ProfileGetSessionsError, + ProfileGetSessionsResponse, + ProfileRevokeSessionData, + ProfileRevokeSessionError, + ProfileRevokeSessionResponse, + ProfileGetTwoFactorEnabledData, + ProfileGetTwoFactorEnabledError, + ProfileGetTwoFactorEnabledResponse, + ProfileChangeTwoFactorEnabledData, + ProfileChangeTwoFactorEnabledError, + ProfileChangeTwoFactorEnabledResponse, + ProfileSendChangePhoneNumberCodeData, + ProfileSendChangePhoneNumberCodeError, + ProfileSendChangePhoneNumberCodeResponse, + ProfileChangePhoneNumberData, + ProfileChangePhoneNumberError, + ProfileChangePhoneNumberResponse, + ProfileSendEmailConfirmLinkData, + ProfileSendEmailConfirmLinkError, + ProfileSendEmailConfirmLinkResponse, + ProfileConfirmEmailData, + ProfileConfirmEmailError, + ProfileConfirmEmailResponse, + ProfileGetAuthenticatorData, + ProfileGetAuthenticatorError, + ProfileGetAuthenticatorResponse, + ProfileVerifyAuthenticatorCodeData, + ProfileVerifyAuthenticatorCodeError, + ProfileVerifyAuthenticatorCodeResponse, + ProfileResetAuthenticatorData, + ProfileResetAuthenticatorError, + ProfileResetAuthenticatorResponse, + ProfileGetData, + ProfileGetError, + ProfileGetResponse, + ProfileUpdateData, + ProfileUpdateError, + ProfileUpdateResponse, + ProfileChangePasswordData, + ProfileChangePasswordError, + ProfileChangePasswordResponse, + PublicFilesUploadData, + PublicFilesUploadError, + PublicFilesUploadResponse, + PublicFilesDeleteData, + PublicFilesDeleteError, + PublicFilesDeleteResponse, + PublicFilesUpload1Data, + PublicFilesUpload1Error, + PublicFilesUpload1Response, + PublicFilesGetListData, + PublicFilesGetListError, + PublicFilesGetListResponse, + PublicFilesGetData, + PublicFilesGetError, + PublicFilesGetResponse, + PublicFilesGet1Data, + PublicFilesGet1Error, + PublicFilesGet1Response, + PublicFilesGet2Data, + PublicFilesGet2Error, + PublicFilesGet2Response, + PublicFilesGet3Data, + PublicFilesGet3Error, + PublicFilesGet3Response, + PublicFilesGet4Data, + PublicFilesGet4Error, + PublicFilesGet4Response, + PublicFilesGet5Data, + PublicFilesGet5Error, + PublicFilesGet5Response, + PublicFilesGet6Data, + PublicFilesGet6Error, + PublicFilesGet6Response, + PublicFilesGet7Data, + PublicFilesGet7Error, + PublicFilesGet7Response, + PublishHandleData, + PublishHandleError, + PublishHandleResponse, + ResourceGetByNameData, + ResourceGetByNameError, + ResourceGetByNameResponse, + ResourceDeleteData, + ResourceDeleteError, + ResourceDeleteResponse, + ResourceUpdateData, + ResourceUpdateError, + ResourceUpdateResponse, + ResourceCreateData, + ResourceCreateError, + ResourceCreateResponse, + ResourceGetListData, + ResourceGetListError, + ResourceGetListResponse, + RestoreHandleData, + RestoreHandleError, + RestoreHandleResponse, + RetractHandleData, + RetractHandleError, + RetractHandleResponse, + RetryHandleData, + RetryHandleError, + RetryHandleResponse, + RevertHandleData, + RevertHandleError, + RevertHandleResponse, + RoleGetOrganizationUnitsData, + RoleGetOrganizationUnitsError, + RoleGetOrganizationUnitsResponse, + RoleSetOrganizationUnitsData, + RoleSetOrganizationUnitsError, + RoleSetOrganizationUnitsResponse, + RoleRemoveOrganizationUnitsData, + RoleRemoveOrganizationUnitsError, + RoleRemoveOrganizationUnitsResponse, + RoleGetClaimsData, + RoleGetClaimsError, + RoleGetClaimsResponse, + RoleAddClaimData, + RoleAddClaimError, + RoleAddClaimResponse, + RoleUpdateClaimData, + RoleUpdateClaimError, + RoleUpdateClaimResponse, + RoleDeleteClaimData, + RoleDeleteClaimError, + RoleDeleteClaimResponse, + RoleGetAllListData, + RoleGetAllListError, + RoleGetAllListResponse, + RoleGetListData, + RoleGetListError, + RoleGetListResponse, + RoleCreateData, + RoleCreateError, + RoleCreateResponse, + RoleGetData, + RoleGetError, + RoleGetResponse, + RoleUpdateData, + RoleUpdateError, + RoleUpdateResponse, + RoleDeleteData, + RoleDeleteError, + RoleDeleteResponse, + RoleEntityRuleGetData, + RoleEntityRuleGetError, + RoleEntityRuleGetResponse, + RoleEntityRuleCreateData, + RoleEntityRuleCreateError, + RoleEntityRuleCreateResponse, + RoleEntityRuleUpdateData, + RoleEntityRuleUpdateError, + RoleEntityRuleUpdateResponse, + SecurityLogDeleteData, + SecurityLogDeleteError, + SecurityLogDeleteResponse, + SecurityLogGetData, + SecurityLogGetError, + SecurityLogGetResponse, + SecurityLogGetListData, + SecurityLogGetListError, + SecurityLogGetListResponse, + SettingSetCurrentTenantData, + SettingSetCurrentTenantError, + SettingSetCurrentTenantResponse, + SettingSetGlobalData, + SettingSetGlobalError, + SettingSetGlobalResponse, + SettingGetAllForGlobalData, + SettingGetAllForGlobalError, + SettingGetAllForGlobalResponse, + SettingGetAllForCurrentTenantData, + SettingGetAllForCurrentTenantError, + SettingGetAllForCurrentTenantResponse, + SettingSendTestEmailData, + SettingSendTestEmailError, + SettingSendTestEmailResponse, + SettingDefinitionCreateData, + SettingDefinitionCreateError, + SettingDefinitionCreateResponse, + SettingDefinitionGetListData, + SettingDefinitionGetListError, + SettingDefinitionGetListResponse, + SettingDefinitionDeleteOrRestoreData, + SettingDefinitionDeleteOrRestoreError, + SettingDefinitionDeleteOrRestoreResponse, + SettingDefinitionGetData, + SettingDefinitionGetError, + SettingDefinitionGetResponse, + SettingDefinitionUpdateData, + SettingDefinitionUpdateError, + SettingDefinitionUpdateResponse, + StaticFilesUploadData, + StaticFilesUploadError, + StaticFilesUploadResponse, + StaticFilesGetData, + StaticFilesGetError, + StaticFilesGetResponse, + StaticFilesGet1Data, + StaticFilesGet1Error, + StaticFilesGet1Response, + StaticFilesGet2Data, + StaticFilesGet2Error, + StaticFilesGet2Response, + StaticFilesGet3Data, + StaticFilesGet3Error, + StaticFilesGet3Response, + StaticFilesGet4Data, + StaticFilesGet4Error, + StaticFilesGet4Response, + StaticFilesGet5Data, + StaticFilesGet5Error, + StaticFilesGet5Response, + StaticFilesGet6Data, + StaticFilesGet6Error, + StaticFilesGet6Response, + StaticFilesGet7Data, + StaticFilesGet7Error, + StaticFilesGet7Response, + TenantGetData, + TenantGetError, + TenantGetResponse, + TenantUpdateData, + TenantUpdateError, + TenantUpdateResponse, + TenantDeleteData, + TenantDeleteError, + TenantDeleteResponse, + TenantGet1Data, + TenantGet1Error, + TenantGet1Response, + TenantGetListData, + TenantGetListError, + TenantGetListResponse, + TenantCreateData, + TenantCreateError, + TenantCreateResponse, + TenantGetConnectionStringData, + TenantGetConnectionStringError, + TenantGetConnectionStringResponse, + TenantDeleteConnectionStringData, + TenantDeleteConnectionStringError, + TenantDeleteConnectionStringResponse, + TenantGetConnectionString1Data, + TenantGetConnectionString1Error, + TenantGetConnectionString1Response, + TenantSetConnectionStringData, + TenantSetConnectionStringError, + TenantSetConnectionStringResponse, + TextSetTextData, + TextSetTextError, + TextSetTextResponse, + TextRestoreToDefaultData, + TextRestoreToDefaultError, + TextRestoreToDefaultResponse, + TextGetByCultureKeyData, + TextGetByCultureKeyError, + TextGetByCultureKeyResponse, + TextGetListData, + TextGetListError, + TextGetListResponse, + TextTemplateContentGetData, + TextTemplateContentGetError, + TextTemplateContentGetResponse, + TextTemplateContentGet1Data, + TextTemplateContentGet1Error, + TextTemplateContentGet1Response, + TextTemplateContentRestoreToDefaultData, + TextTemplateContentRestoreToDefaultError, + TextTemplateContentRestoreToDefaultResponse, + TextTemplateContentUpdateData, + TextTemplateContentUpdateError, + TextTemplateContentUpdateResponse, + TextTemplateDefinitionCreateData, + TextTemplateDefinitionCreateError, + TextTemplateDefinitionCreateResponse, + TextTemplateDefinitionGetListData, + TextTemplateDefinitionGetListError, + TextTemplateDefinitionGetListResponse, + TextTemplateDefinitionDeleteData, + TextTemplateDefinitionDeleteError, + TextTemplateDefinitionDeleteResponse, + TextTemplateDefinitionGetByNameData, + TextTemplateDefinitionGetByNameError, + TextTemplateDefinitionGetByNameResponse, + TextTemplateDefinitionUpdateData, + TextTemplateDefinitionUpdateError, + TextTemplateDefinitionUpdateResponse, + ThemeSettingGetData, + ThemeSettingGetError, + ThemeSettingGetResponse, + ThemeSettingChangeData, + ThemeSettingChangeError, + ThemeSettingChangeResponse, + TriggerHandleData, + TriggerHandleError, + TriggerHandleResponse, + TriggerEndpointHandleData, + TriggerEndpointHandleError, + TriggerEndpointHandleResponse, + TriggerEndpointHandle1Data, + TriggerEndpointHandle1Error, + TriggerEndpointHandle1Response, + UserGetOrganizationUnitsData, + UserGetOrganizationUnitsError, + UserGetOrganizationUnitsResponse, + UserSetOrganizationUnitsData, + UserSetOrganizationUnitsError, + UserSetOrganizationUnitsResponse, + UserRemoveOrganizationUnitsData, + UserRemoveOrganizationUnitsError, + UserRemoveOrganizationUnitsResponse, + UserGetClaimsData, + UserGetClaimsError, + UserGetClaimsResponse, + UserAddClaimData, + UserAddClaimError, + UserAddClaimResponse, + UserUpdateClaimData, + UserUpdateClaimError, + UserUpdateClaimResponse, + UserDeleteClaimData, + UserDeleteClaimError, + UserDeleteClaimResponse, + UserChangePasswordData, + UserChangePasswordError, + UserChangePasswordResponse, + UserChangeTwoFactorEnabledData, + UserChangeTwoFactorEnabledError, + UserChangeTwoFactorEnabledResponse, + UserLockData, + UserLockError, + UserLockResponse, + UserUnLockData, + UserUnLockError, + UserUnLockResponse, + UserGetData, + UserGetError, + UserGetResponse, + UserUpdateData, + UserUpdateError, + UserUpdateResponse, + UserDeleteData, + UserDeleteError, + UserDeleteResponse, + UserGetListData, + UserGetListError, + UserGetListResponse, + UserCreateData, + UserCreateError, + UserCreateResponse, + UserGetRolesData, + UserGetRolesError, + UserGetRolesResponse, + UserUpdateRolesData, + UserUpdateRolesError, + UserUpdateRolesResponse, + UserGetAssignableRolesData, + UserGetAssignableRolesError, + UserGetAssignableRolesResponse, + UserFindByUsernameData, + UserFindByUsernameError, + UserFindByUsernameResponse, + UserFindByEmailData, + UserFindByEmailError, + UserFindByEmailResponse, + UserFavoriteMenuCreateData, + UserFavoriteMenuCreateError, + UserFavoriteMenuCreateResponse, + UserFavoriteMenuGetListData, + UserFavoriteMenuGetListError, + UserFavoriteMenuGetListResponse, + UserFavoriteMenuUpdateData, + UserFavoriteMenuUpdateError, + UserFavoriteMenuUpdateResponse, + UserFavoriteMenuCreateMyFavoriteMenuData, + UserFavoriteMenuCreateMyFavoriteMenuError, + UserFavoriteMenuCreateMyFavoriteMenuResponse, + UserFavoriteMenuGetMyFavoriteMenuListData, + UserFavoriteMenuGetMyFavoriteMenuListError, + UserFavoriteMenuGetMyFavoriteMenuListResponse, + UserFavoriteMenuUpdateMyFavoriteMenuData, + UserFavoriteMenuUpdateMyFavoriteMenuError, + UserFavoriteMenuUpdateMyFavoriteMenuResponse, + UserFavoriteMenuDeleteData, + UserFavoriteMenuDeleteError, + UserFavoriteMenuDeleteResponse, + UserFavoriteMenuDeleteMyFavoriteMenuData, + UserFavoriteMenuDeleteMyFavoriteMenuError, + UserFavoriteMenuDeleteMyFavoriteMenuResponse, + UserGroupApplyJoinGroupData, + UserGroupApplyJoinGroupError, + UserGroupApplyJoinGroupResponse, + UserGroupGetGroupUsersData, + UserGroupGetGroupUsersError, + UserGroupGetGroupUsersResponse, + UserGroupGetMyGroupsData, + UserGroupGetMyGroupsError, + UserGroupGetMyGroupsResponse, + UserGroupGroupAcceptUserData, + UserGroupGroupAcceptUserError, + UserGroupGroupAcceptUserResponse, + UserGroupGroupRemoveUserData, + UserGroupGroupRemoveUserError, + UserGroupGroupRemoveUserResponse, + UserLookupFindByIdData, + UserLookupFindByIdError, + UserLookupFindByIdResponse, + UserLookupFindByUserNameData, + UserLookupFindByUserNameError, + UserLookupFindByUserNameResponse, + UserLookupSearchData, + UserLookupSearchError, + UserLookupSearchResponse, + UserLookupGetCountData, + UserLookupGetCountError, + UserLookupGetCountResponse, + UserSettingGetAllForCurrentUserData, + UserSettingGetAllForCurrentUserError, + UserSettingGetAllForCurrentUserResponse, + UserSettingSetCurrentUserData, + UserSettingSetCurrentUserError, + UserSettingSetCurrentUserResponse, + WebhookDefinitionCreateData, + WebhookDefinitionCreateError, + WebhookDefinitionCreateResponse, + WebhookDefinitionGetListData, + WebhookDefinitionGetListError, + WebhookDefinitionGetListResponse, + WebhookDefinitionDeleteData, + WebhookDefinitionDeleteError, + WebhookDefinitionDeleteResponse, + WebhookDefinitionGetData, + WebhookDefinitionGetError, + WebhookDefinitionGetResponse, + WebhookDefinitionUpdateData, + WebhookDefinitionUpdateError, + WebhookDefinitionUpdateResponse, + WebhookGroupDefinitionCreateData, + WebhookGroupDefinitionCreateError, + WebhookGroupDefinitionCreateResponse, + WebhookGroupDefinitionGetListData, + WebhookGroupDefinitionGetListError, + WebhookGroupDefinitionGetListResponse, + WebhookGroupDefinitionDeleteAysncData, + WebhookGroupDefinitionDeleteAysncError, + WebhookGroupDefinitionDeleteAysncResponse, + WebhookGroupDefinitionGetData, + WebhookGroupDefinitionGetError, + WebhookGroupDefinitionGetResponse, + WebhookGroupDefinitionUpdateData, + WebhookGroupDefinitionUpdateError, + WebhookGroupDefinitionUpdateResponse, + WebhookPublishPublishData, + WebhookPublishPublishError, + WebhookPublishPublishResponse, + WebhookSendRecordGetData, + WebhookSendRecordGetError, + WebhookSendRecordGetResponse, + WebhookSendRecordDeleteData, + WebhookSendRecordDeleteError, + WebhookSendRecordDeleteResponse, + WebhookSendRecordDeleteManyData, + WebhookSendRecordDeleteManyError, + WebhookSendRecordDeleteManyResponse, + WebhookSendRecordGetListData, + WebhookSendRecordGetListError, + WebhookSendRecordGetListResponse, + WebhookSendRecordResendData, + WebhookSendRecordResendError, + WebhookSendRecordResendResponse, + WebhookSendRecordResendManyData, + WebhookSendRecordResendManyError, + WebhookSendRecordResendManyResponse, + WebhookSubscriptionCreateData, + WebhookSubscriptionCreateError, + WebhookSubscriptionCreateResponse, + WebhookSubscriptionGetListData, + WebhookSubscriptionGetListError, + WebhookSubscriptionGetListResponse, + WebhookSubscriptionDeleteData, + WebhookSubscriptionDeleteError, + WebhookSubscriptionDeleteResponse, + WebhookSubscriptionGetData, + WebhookSubscriptionGetError, + WebhookSubscriptionGetResponse, + WebhookSubscriptionUpdateData, + WebhookSubscriptionUpdateError, + WebhookSubscriptionUpdateResponse, + WebhookSubscriptionDeleteManyData, + WebhookSubscriptionDeleteManyError, + WebhookSubscriptionDeleteManyResponse, + WebhookSubscriptionGetAllAvailableWebhooksData, + WebhookSubscriptionGetAllAvailableWebhooksError, + WebhookSubscriptionGetAllAvailableWebhooksResponse, +} from "./types.gen"; + +export const client = createClient(createConfig()); + +export const abpApiDefinitionGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/api-definition", + }); +}; + +export const abpApplicationConfigurationGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + AbpApplicationConfigurationGetResponse, + AbpApplicationConfigurationGetError, + ThrowOnError + >({ + ...options, + url: "/api/abp/application-configuration", + }); +}; + +export const abpApplicationLocalizationGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + AbpApplicationLocalizationGetResponse, + AbpApplicationLocalizationGetError, + ThrowOnError + >({ + ...options, + url: "/api/abp/application-localization", + }); +}; + +export const abpTenantFindTenantByName = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + AbpTenantFindTenantByNameResponse, + AbpTenantFindTenantByNameError, + ThrowOnError + >({ + ...options, + url: "/api/abp/multi-tenancy/tenants/by-name/{name}", + }); +}; + +export const abpTenantFindTenantById = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/multi-tenancy/tenants/by-id/{id}", + }); +}; + +export const accountRegister = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/phone/register", + }); +}; + +export const accountResetPassword = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/account/phone/reset-password", + }); +}; + +export const accountSendPhoneSigninCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountSendPhoneSigninCodeResponse, + AccountSendPhoneSigninCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/phone/send-signin-code", + }); +}; + +export const accountSendEmailSigninCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountSendEmailSigninCodeResponse, + AccountSendEmailSigninCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/email/send-signin-code", + }); +}; + +export const accountSendPhoneRegisterCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountSendPhoneRegisterCodeResponse, + AccountSendPhoneRegisterCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/phone/send-register-code", + }); +}; + +export const accountSendPhoneResetPasswordCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountSendPhoneResetPasswordCodeResponse, + AccountSendPhoneResetPasswordCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/phone/send-password-reset-code", + }); +}; + +export const accountGetTwoFactorProviders = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + AccountGetTwoFactorProvidersResponse, + AccountGetTwoFactorProvidersError, + ThrowOnError + >({ + ...options, + url: "/api/account/two-factor-providers", + }); +}; + +export const accountRegister1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/register", + }); +}; + +export const accountSendPasswordResetCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountSendPasswordResetCodeResponse, + AccountSendPasswordResetCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/send-password-reset-code", + }); +}; + +export const accountVerifyPasswordResetToken = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + AccountVerifyPasswordResetTokenResponse, + AccountVerifyPasswordResetTokenError, + ThrowOnError + >({ + ...options, + url: "/api/account/verify-password-reset-token", + }); +}; + +export const accountResetPassword1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/reset-password", + }); +}; + +export const auditLogDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/auditing/audit-log/{id}", + }); +}; + +export const auditLogGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/audit-log/{id}", + }); +}; + +export const auditLogGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/audit-log", + }); +}; + +export const backgroundJobActionAddAction = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + BackgroundJobActionAddActionResponse, + BackgroundJobActionAddActionError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/actions/{jobId}", + }); +}; + +export const backgroundJobActionGetActions = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + BackgroundJobActionGetActionsResponse, + BackgroundJobActionGetActionsError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/actions/{jobId}", + }); +}; + +export const backgroundJobActionDeleteAction = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + BackgroundJobActionDeleteActionResponse, + BackgroundJobActionDeleteActionError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/actions/{id}", + }); +}; + +export const backgroundJobActionUpdateAction = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobActionUpdateActionResponse, + BackgroundJobActionUpdateActionError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/actions/{id}", + }); +}; + +export const backgroundJobActionGetDefinitions = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + BackgroundJobActionGetDefinitionsResponse, + BackgroundJobActionGetDefinitionsError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/actions/definitions", + }); +}; + +export const backgroundJobInfoCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/task-management/background-jobs", + }); +}; + +export const backgroundJobInfoGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/task-management/background-jobs", + }, + ); +}; + +export const backgroundJobInfoDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + BackgroundJobInfoDeleteResponse, + BackgroundJobInfoDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/{id}", + }); +}; + +export const backgroundJobInfoGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/task-management/background-jobs/{id}", + }); +}; + +export const backgroundJobInfoUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/task-management/background-jobs/{id}", + }); +}; + +export const backgroundJobInfoPause = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/task-management/background-jobs/{id}/pause", + }); +}; + +export const backgroundJobInfoResume = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/task-management/background-jobs/{id}/resume", + }); +}; + +export const backgroundJobInfoTrigger = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/task-management/background-jobs/{id}/trigger", + }, + ); +}; + +export const backgroundJobInfoStop = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/task-management/background-jobs/{id}/stop", + }); +}; + +export const backgroundJobInfoStart = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/task-management/background-jobs/{id}/start", + }); +}; + +export const backgroundJobInfoBulkStop = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobInfoBulkStopResponse, + BackgroundJobInfoBulkStopError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-stop", + }); +}; + +export const backgroundJobInfoBulkStart = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobInfoBulkStartResponse, + BackgroundJobInfoBulkStartError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-start", + }); +}; + +export const backgroundJobInfoBulkTrigger = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobInfoBulkTriggerResponse, + BackgroundJobInfoBulkTriggerError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-trigger", + }); +}; + +export const backgroundJobInfoBulkResume = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobInfoBulkResumeResponse, + BackgroundJobInfoBulkResumeError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-resume", + }); +}; + +export const backgroundJobInfoBulkPause = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + BackgroundJobInfoBulkPauseResponse, + BackgroundJobInfoBulkPauseError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-pause", + }); +}; + +export const backgroundJobInfoBulkDelete = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + BackgroundJobInfoBulkDeleteResponse, + BackgroundJobInfoBulkDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/bulk-delete", + }); +}; + +export const backgroundJobInfoGetDefinitions = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + BackgroundJobInfoGetDefinitionsResponse, + BackgroundJobInfoGetDefinitionsError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/definitions", + }); +}; + +export const backgroundJobInfoGetAvailableFields = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + BackgroundJobInfoGetAvailableFieldsResponse, + BackgroundJobInfoGetAvailableFieldsError, + ThrowOnError + >({ + ...options, + url: "/api/task-management/background-jobs/available-fields", + }); +}; + +export const backgroundJobInfoSearch = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/task-management/background-jobs/search", + }); +}; + +export const backgroundJobLogDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/task-management/background-jobs/logs/{id}", + }); +}; + +export const backgroundJobLogGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/task-management/background-jobs/logs/{id}", + }); +}; + +export const backgroundJobLogGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/task-management/background-jobs/logs", + }); +}; + +export const backupHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-definitions/backup", + }); +}; + +export const bulkCancelHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/bulk/cancel", + }); +}; + +export const bulkDeleteHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/v{apiVersion}/workflow-instances/bulk", + }); +}; + +export const bulkRetryHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/bulk/retry", + }); +}; + +export const cacheGetKeys = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/caching-management/cache/keys", + }); +}; + +export const cacheGetValue = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/caching-management/cache/value", + }); +}; + +export const cacheSet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/caching-management/cache/set", + }); +}; + +export const cacheRefresh = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/caching-management/cache/refresh", + }); +}; + +export const cacheRemove = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/caching-management/cache/remove", + }); +}; + +export const cancelHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/{id}/cancel", + }); +}; + +export const chatGetMyGroupMessage = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/chat/group/messages", + }); +}; + +export const chatGetMyChatMessage = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/chat/my-messages", + }); +}; + +export const chatGetMyLastChatMessage = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/im/chat/my-last-messages", + }, + ); +}; + +export const chatSendMessage = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/im/chat/send-message", + }); +}; + +export const claimChangeAvatar = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/my-claim/change-avatar", + }); +}; + +export const claimTypeCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/claim-types", + }); +}; + +export const claimTypeGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/claim-types", + }); +}; + +export const claimTypeDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/identity/claim-types/{id}", + }); +}; + +export const claimTypeGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/claim-types/{id}", + }); +}; + +export const claimTypeUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/claim-types/{id}", + }); +}; + +export const claimTypeGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/claim-types/actived-list", + }); +}; + +export const dataCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/datas", + }); +}; + +export const dataGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/datas", + }); +}; + +export const dataCreateItem = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/datas/{id}/items", + }); +}; + +export const dataDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/datas/{id}", + }); +}; + +export const dataGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/datas/{id}", + }); +}; + +export const dataUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/datas/{id}", + }); +}; + +export const dataDeleteItem = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/datas/{id}/items/{name}", + }); +}; + +export const dataUpdateItem = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/datas/{id}/items/{name}", + }); +}; + +export const dataGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/datas/by-name/{name}", + }); +}; + +export const dataGetAll = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/datas/all", + }); +}; + +export const dataMove = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/datas/{id}/move", + }); +}; + +export const deleteHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/v{apiVersion}/workflow-instances/{id}", + }); +}; + +export const getHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-instances/{id}", + }); +}; + +export const deleteHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/v{apiVersion}/webhook-definitions/{id}", + }); +}; + +export const getHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/webhook-definitions/{id}", + }); +}; + +export const deleteByDefinitionHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + DeleteByDefinitionHandleResponse, + DeleteByDefinitionHandleError, + ThrowOnError + >({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{definitionId}", + }); +}; + +export const deleteByDefinitionAndVersionHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + DeleteByDefinitionAndVersionHandleResponse, + DeleteByDefinitionAndVersionHandleError, + ThrowOnError + >({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{definitionId}/{versionOptions}", + }); +}; + +export const dispatchHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflows/{workflowDefinitionId}/dispatch", + }); +}; + +export const dispatchHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/{workflowInstanceId}/dispatch", + }); +}; + +export const dispatchHandle2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/signals/{signalName}/dispatch", + }); +}; + +export const dispatchEndpointHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/signals/dispatch/{token}", + }); +}; + +export const dispatchEndpointHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/signals/dispatch/{token}", + }); +}; + +export const dynamicClaimsRefresh = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/dynamic-claims/refresh", + }); +}; + +export const editionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/saas/editions", + }); +}; + +export const editionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/saas/editions", + }); +}; + +export const editionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/saas/editions/{id}", + }); +}; + +export const editionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/saas/editions/{id}", + }); +}; + +export const editionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/saas/editions/{id}", + }); +}; + +export const entityChangesGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/entity-changes/{id}", + }); +}; + +export const entityChangesGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/entity-changes", + }); +}; + +export const entityChangesGetWithUsername = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + EntityChangesGetWithUsernameResponse, + EntityChangesGetWithUsernameError, + ThrowOnError + >({ + ...options, + url: "/api/auditing/entity-changes/with-username/{id}", + }); +}; + +export const entityChangesGetWithUsername1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + EntityChangesGetWithUsername1Response, + EntityChangesGetWithUsername1Error, + ThrowOnError + >({ + ...options, + url: "/api/auditing/entity-changes/with-username", + }); +}; + +export const entityTypeInfoGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/data-protection-management/entity-type-infos/{id}", + }); +}; + +export const entityTypeInfoGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/data-protection-management/entity-type-infos", + }); +}; + +export const executeHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflows/{workflowDefinitionId}/execute", + }); +}; + +export const executeHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/{workflowInstanceId}/execute", + }); +}; + +export const executeHandle2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/signals/{signalName}/execute", + }); +}; + +export const exportHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{workflowDefinitionId}/{versionOptions}/export", + }); +}; + +export const featureDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/feature-management/definitions", + }); +}; + +export const featureDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/feature-management/definitions", + }, + ); +}; + +export const featureDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + FeatureDefinitionDeleteResponse, + FeatureDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/{name}", + }); +}; + +export const featureDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/feature-management/definitions/{name}", + }); +}; + +export const featureDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/feature-management/definitions/{name}", + }); +}; + +export const featureGroupDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + FeatureGroupDefinitionCreateResponse, + FeatureGroupDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/groups", + }); +}; + +export const featureGroupDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + FeatureGroupDefinitionGetListResponse, + FeatureGroupDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/groups", + }); +}; + +export const featureGroupDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + FeatureGroupDefinitionDeleteResponse, + FeatureGroupDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/groups/{name}", + }); +}; + +export const featureGroupDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + FeatureGroupDefinitionGetResponse, + FeatureGroupDefinitionGetError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/groups/{name}", + }); +}; + +export const featureGroupDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + FeatureGroupDefinitionUpdateResponse, + FeatureGroupDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/feature-management/definitions/groups/{name}", + }); +}; + +export const featuresGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/feature-management/features", + }); +}; + +export const featuresUpdate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/feature-management/features", + }); +}; + +export const featuresDelete = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/feature-management/features", + }); +}; + +export const feedbackCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/feedbacks", + }); +}; + +export const feedbackGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/feedbacks", + }); +}; + +export const feedbackDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/feedbacks/{id}", + }); +}; + +export const feedbackGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/feedbacks/{id}", + }); +}; + +export const feedbackAttachmentGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/feedbacks/{FeedbackId}/attachments/{Name}", + }); +}; + +export const feedbackAttachmentDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + FeedbackAttachmentDeleteResponse, + FeedbackAttachmentDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/platform/feedbacks/{FeedbackId}/attachments/{Name}", + }); +}; + +export const feedbackAttachmentUpload = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + FeedbackAttachmentUploadResponse, + FeedbackAttachmentUploadError, + ThrowOnError + >({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/platform/feedbacks/attachments/upload", + }); +}; + +export const getHandle2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-registry/{id}/{versionOptions}", + }); +}; + +export const getHandle3 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-instances/{id}/execution-log", + }); +}; + +export const getHandle4 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/version", + }); +}; + +export const getHandle5 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/scripting/javascript/type-definitions/{workflowDefinitionId}", + }); +}; + +export const getHandle6 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/designer/runtime-select-list", + }); +}; + +export const getHandle7 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-instances/{workflowInstanceId}/activity-stats/{activityId}", + }); +}; + +export const getByDefinitionAndVersionHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + GetByDefinitionAndVersionHandleResponse, + GetByDefinitionAndVersionHandleError, + ThrowOnError + >({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{workflowDefinitionId}/{versionOptions}", + }); +}; + +export const getByVersionIdHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{versionId}", + }); +}; + +export const groupGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/groups/{groupId}", + }); +}; + +export const groupSearch = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/groups/search", + }); +}; + +export const historyHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{definitionId}/history", + }); +}; + +export const identitySessionsGetSessions = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + IdentitySessionsGetSessionsResponse, + IdentitySessionsGetSessionsError, + ThrowOnError + >({ + ...options, + url: "/api/identity/sessions", + }); +}; + +export const identitySessionsRevokeSession = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + IdentitySessionsRevokeSessionResponse, + IdentitySessionsRevokeSessionError, + ThrowOnError + >({ + ...options, + url: "/api/identity/sessions/{sessionId}/revoke", + }); +}; + +export const importHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/v{apiVersion}/workflow-definitions/{workflowDefinitionId}/import", + }); +}; + +export const languageGetByName = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/localization/languages/{name}", + }); +}; + +export const languageDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/localization/languages/{name}", + }); +}; + +export const languageUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/localization/languages/{name}", + }); +}; + +export const languageCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/localization/languages", + }); +}; + +export const languageGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/localization/languages", + }); +}; + +export const layoutCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/layouts", + }); +}; + +export const layoutGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/layouts", + }); +}; + +export const layoutDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/layouts/{id}", + }); +}; + +export const layoutGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/layouts/{id}", + }); +}; + +export const layoutUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/layouts/{id}", + }); +}; + +export const layoutGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/layouts/all", + }); +}; + +export const listHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{version}/workflow-storage-providers", + }); +}; + +export const listHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{version}/workflow-providers", + }); +}; + +export const listHandle2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-instances", + }); +}; + +export const listHandle3 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-definitions", + }); +}; + +export const saveHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-definitions", + }); +}; + +export const listHandle4 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-channels", + }); +}; + +export const listHandle5 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/features", + }); +}; + +export const listHandle6 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{version}/activities", + }); +}; + +export const listHandle7 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/webhook-definitions", + }); +}; + +export const postHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/webhook-definitions", + }); +}; + +export const updateHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/v{apiVersion}/webhook-definitions", + }); +}; + +export const listAllHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-registry", + }); +}; + +export const listByDefinitionVersionIdsHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + ListByDefinitionVersionIdsHandleResponse, + ListByDefinitionVersionIdsHandleError, + ThrowOnError + >({ + ...options, + url: "/v{apiVersion}/workflow-registry/by-definition-version-ids", + }); +}; + +export const listByProviderHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/v{apiVersion}/workflow-registry/by-provider/{providerName}", + }); +}; + +export const loggingGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/logging/{id}", + }); +}; + +export const loggingGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/logging", + }); +}; + +export const loginLogin = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/login", + }); +}; + +export const loginLogout = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/account/logout", + }); +}; + +export const loginCheckPassword = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/check-password", + }); +}; + +export const menuGetCurrentUserMenuList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + MenuGetCurrentUserMenuListResponse, + MenuGetCurrentUserMenuListError, + ThrowOnError + >({ + ...options, + url: "/api/platform/menus/by-current-user", + }); +}; + +export const menuGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/{id}", + }); +}; + +export const menuUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/{id}", + }); +}; + +export const menuDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/menus/{id}", + }); +}; + +export const menuGetAll = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/all", + }); +}; + +export const menuGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus", + }); +}; + +export const menuCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/menus", + }); +}; + +export const menuSetUserMenus = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/by-user", + }); +}; + +export const menuGetUserMenuList = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/by-user", + }); +}; + +export const menuSetUserStartup = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/startup/{id}/by-user", + }); +}; + +export const menuGetUserMenuList1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/by-user/{userId}/{framework}", + }); +}; + +export const menuSetRoleMenus = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/by-role", + }); +}; + +export const menuGetRoleMenuList = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/by-role", + }); +}; + +export const menuSetRoleStartup = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/startup/{id}/by-role", + }); +}; + +export const menuGetRoleMenuList1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/by-role/{role}/{framework}", + }); +}; + +export const myFeedbackGetMyFeedbacks = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/platform/my-feedbacks", + }, + ); +}; + +export const myFriendCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/im/my-friends", + }); +}; + +export const myFriendDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/im/my-friends", + }); +}; + +export const myFriendGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/my-friends", + }); +}; + +export const myFriendAddRequest = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/im/my-friends/add-request", + }); +}; + +export const myFriendGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/my-friends/{friendId}", + }); +}; + +export const myFriendGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/my-friends/all", + }); +}; + +export const myNotificationMarkReadState = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + MyNotificationMarkReadStateResponse, + MyNotificationMarkReadStateError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/my-notifilers/mark-read-state", + }); +}; + +export const myNotificationDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/notifications/my-notifilers/{id}", + }); +}; + +export const myNotificationGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/notifications/my-notifilers/{id}", + }); +}; + +export const myNotificationGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/notifications/my-notifilers", + }); +}; + +export const mySubscriptionGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/notifications/my-subscribes/all", + }, + ); +}; + +export const mySubscriptionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/notifications/my-subscribes", + }); +}; + +export const mySubscriptionSubscribe = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/notifications/my-subscribes", + }); +}; + +export const mySubscriptionUnSubscribe = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + MySubscriptionUnSubscribeResponse, + MySubscriptionUnSubscribeError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/my-subscribes", + }); +}; + +export const mySubscriptionIsSubscribed = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + MySubscriptionIsSubscribedResponse, + MySubscriptionIsSubscribedError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/my-subscribes/is-subscribed/{Name}", + }); +}; + +export const notificationSend = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/notifications/send", + }); +}; + +export const notificationSend1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/notifications/send/template", + }); +}; + +export const notificationGetAssignableNotifiers = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationGetAssignableNotifiersResponse, + NotificationGetAssignableNotifiersError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/assignables", + }); +}; + +export const notificationGetAssignableTemplates = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationGetAssignableTemplatesResponse, + NotificationGetAssignableTemplatesError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/assignable-templates", + }); +}; + +export const notificationDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + NotificationDefinitionCreateResponse, + NotificationDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/notifications", + }); +}; + +export const notificationDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationDefinitionGetListResponse, + NotificationDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/notifications", + }); +}; + +export const notificationDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + NotificationDefinitionDeleteResponse, + NotificationDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/notifications/{name}", + }); +}; + +export const notificationDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationDefinitionGetResponse, + NotificationDefinitionGetError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/notifications/{name}", + }); +}; + +export const notificationDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + NotificationDefinitionUpdateResponse, + NotificationDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/notifications/{name}", + }); +}; + +export const notificationGroupDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + NotificationGroupDefinitionCreateResponse, + NotificationGroupDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/groups", + }); +}; + +export const notificationGroupDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationGroupDefinitionGetListResponse, + NotificationGroupDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/groups", + }); +}; + +export const notificationGroupDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + NotificationGroupDefinitionDeleteResponse, + NotificationGroupDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/groups/{name}", + }); +}; + +export const notificationGroupDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + NotificationGroupDefinitionGetResponse, + NotificationGroupDefinitionGetError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/groups/{name}", + }); +}; + +export const notificationGroupDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + NotificationGroupDefinitionUpdateResponse, + NotificationGroupDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/notifications/definitions/groups/{name}", + }); +}; + +export const openIddictApplicationGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/openiddict/applications/{id}", + }, + ); +}; + +export const openIddictApplicationUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + OpenIddictApplicationUpdateResponse, + OpenIddictApplicationUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/applications/{id}", + }); +}; + +export const openIddictApplicationDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + OpenIddictApplicationDeleteResponse, + OpenIddictApplicationDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/applications/{id}", + }); +}; + +export const openIddictApplicationGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OpenIddictApplicationGetListResponse, + OpenIddictApplicationGetListError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/applications", + }); +}; + +export const openIddictApplicationCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + OpenIddictApplicationCreateResponse, + OpenIddictApplicationCreateError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/applications", + }); +}; + +export const openIddictAuthorizationDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + OpenIddictAuthorizationDeleteResponse, + OpenIddictAuthorizationDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/authorizations/{id}", + }); +}; + +export const openIddictAuthorizationGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OpenIddictAuthorizationGetResponse, + OpenIddictAuthorizationGetError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/authorizations/{id}", + }); +}; + +export const openIddictAuthorizationGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OpenIddictAuthorizationGetListResponse, + OpenIddictAuthorizationGetListError, + ThrowOnError + >({ + ...options, + url: "/api/openiddict/authorizations", + }); +}; + +export const openIddictScopeCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/openiddict/scopes", + }); +}; + +export const openIddictScopeGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/openiddict/scopes", + }); +}; + +export const openIddictScopeDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/openiddict/scopes/{id}", + }); +}; + +export const openIddictScopeGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/openiddict/scopes/{id}", + }); +}; + +export const openIddictScopeUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/openiddict/scopes/{id}", + }); +}; + +export const openIddictTokenDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/openiddict/tokens/{id}", + }); +}; + +export const openIddictTokenGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/openiddict/tokens/{id}", + }); +}; + +export const openIddictTokenGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/openiddict/tokens", + }); +}; + +export const organizationUnitsCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/organization-units", + }); +}; + +export const organizationUnitsGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/identity/organization-units", + }, + ); +}; + +export const organizationUnitsDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + OrganizationUnitsDeleteResponse, + OrganizationUnitsDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}", + }); +}; + +export const organizationUnitsGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/organization-units/{id}", + }); +}; + +export const organizationUnitsUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/organization-units/{id}", + }); +}; + +export const organizationUnitsFindChildren = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsFindChildrenResponse, + OrganizationUnitsFindChildrenError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/find-children", + }); +}; + +export const organizationUnitsGetRoot = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/identity/organization-units/root-node", + }, + ); +}; + +export const organizationUnitsGetLastChildOrNull = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetLastChildOrNullResponse, + OrganizationUnitsGetLastChildOrNullError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/last-children", + }); +}; + +export const organizationUnitsGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetAllListResponse, + OrganizationUnitsGetAllListError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/all", + }); +}; + +export const organizationUnitsGetRoleNames = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetRoleNamesResponse, + OrganizationUnitsGetRoleNamesError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/role-names", + }); +}; + +export const organizationUnitsGetUnaddedRoles = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetUnaddedRolesResponse, + OrganizationUnitsGetUnaddedRolesError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/unadded-roles", + }); +}; + +export const organizationUnitsGetRoles = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetRolesResponse, + OrganizationUnitsGetRolesError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/roles", + }); +}; + +export const organizationUnitsAddRoles = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + OrganizationUnitsAddRolesResponse, + OrganizationUnitsAddRolesError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/roles", + }); +}; + +export const organizationUnitsGetUnaddedUsers = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetUnaddedUsersResponse, + OrganizationUnitsGetUnaddedUsersError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/unadded-users", + }); +}; + +export const organizationUnitsGetUsers = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitsGetUsersResponse, + OrganizationUnitsGetUsersError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/users", + }); +}; + +export const organizationUnitsAddUsers = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + OrganizationUnitsAddUsersResponse, + OrganizationUnitsAddUsersError, + ThrowOnError + >({ + ...options, + url: "/api/identity/organization-units/{id}/users", + }); +}; + +export const organizationUnitsMove = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/organization-units/{id}/move", + }); +}; + +export const organizationUnitEntityRuleGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OrganizationUnitEntityRuleGetResponse, + OrganizationUnitEntityRuleGetError, + ThrowOnError + >({ + ...options, + url: "/api/data-protection-management/entity-rule/organization-units", + }); +}; + +export const organizationUnitEntityRuleCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + OrganizationUnitEntityRuleCreateResponse, + OrganizationUnitEntityRuleCreateError, + ThrowOnError + >({ + ...options, + url: "/api/data-protection-management/entity-rule/organization-units", + }); +}; + +export const organizationUnitEntityRuleUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + OrganizationUnitEntityRuleUpdateResponse, + OrganizationUnitEntityRuleUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/data-protection-management/entity-rule/organization-units/{id}", + }); +}; + +export const ossContainerCreate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/oss-management/containes/{name}", + }); +}; + +export const ossContainerDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/oss-management/containes/{name}", + }); +}; + +export const ossContainerGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/oss-management/containes/{name}", + }); +}; + +export const ossContainerGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/oss-management/containes", + }); +}; + +export const ossContainerGetObjectList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OssContainerGetObjectListResponse, + OssContainerGetObjectListError, + ThrowOnError + >({ + ...options, + url: "/api/oss-management/containes/objects", + }); +}; + +export const ossManagementSettingGetAllForCurrentTenant = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OssManagementSettingGetAllForCurrentTenantResponse, + OssManagementSettingGetAllForCurrentTenantError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/oss-management/by-current-tenant", + }); +}; + +export const ossManagementSettingGetAllForGlobal = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + OssManagementSettingGetAllForGlobalResponse, + OssManagementSettingGetAllForGlobalError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/oss-management/by-global", + }); +}; + +export const ossObjectCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/oss-management/objects", + }); +}; + +export const ossObjectDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/oss-management/objects", + }); +}; + +export const ossObjectGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/oss-management/objects", + }); +}; + +export const ossObjectUpload = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/oss-management/objects/upload", + }); +}; + +export const ossObjectBulkDelete = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/oss-management/objects/bulk-delete", + }); +}; + +export const ossObjectGetContent = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/oss-management/objects/download", + }); +}; + +export const packageCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/packages", + }); +}; + +export const packageGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/packages", + }); +}; + +export const packageDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/packages/{id}", + }); +}; + +export const packageGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/packages/{id}", + }); +}; + +export const packageUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/packages/{id}", + }); +}; + +export const packageUploadBlob = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/platform/packages/{id}/blob", + }); +}; + +export const packageRemoveBlob = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/packages/{id}/blob/{Name}", + }); +}; + +export const packageDownloadBlob = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/packages/{id}/blob/{Name}", + }); +}; + +export const packageGetLatest = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/packages/{Name}/latest", + }); +}; + +export const packageGetLatest1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/packages/{Name}/latest/{Version}", + }); +}; + +export const permissionDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + PermissionDefinitionCreateResponse, + PermissionDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions", + }); +}; + +export const permissionDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + PermissionDefinitionGetListResponse, + PermissionDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions", + }); +}; + +export const permissionDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + PermissionDefinitionDeleteResponse, + PermissionDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/{name}", + }); +}; + +export const permissionDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/permission-management/definitions/{name}", + }); +}; + +export const permissionDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + PermissionDefinitionUpdateResponse, + PermissionDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/{name}", + }); +}; + +export const permissionGroupDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + PermissionGroupDefinitionCreateResponse, + PermissionGroupDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/groups", + }); +}; + +export const permissionGroupDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + PermissionGroupDefinitionGetListResponse, + PermissionGroupDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/groups", + }); +}; + +export const permissionGroupDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + PermissionGroupDefinitionDeleteResponse, + PermissionGroupDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/groups/{name}", + }); +}; + +export const permissionGroupDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + PermissionGroupDefinitionGetResponse, + PermissionGroupDefinitionGetError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/groups/{name}", + }); +}; + +export const permissionGroupDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + PermissionGroupDefinitionUpdateResponse, + PermissionGroupDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/permission-management/definitions/groups/{name}", + }); +}; + +export const permissionsGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/permission-management/permissions", + }); +}; + +export const permissionsUpdate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/permission-management/permissions", + }); +}; + +export const privateFilesUpload = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/files/private", + }); +}; + +export const privateFilesDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/files/private", + }); +}; + +export const privateFilesUpload1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/files/private/upload", + }); +}; + +export const privateFilesGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/search", + }); +}; + +export const privateFilesGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/{Name}", + }); +}; + +export const privateFilesGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/{Name}/{Process}", + }); +}; + +export const privateFilesGet2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/p/{Path}/{Name}", + }); +}; + +export const privateFilesGet3 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/p/{Path}/{Name}/{Process}", + }); +}; + +export const privateFilesGet4 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/t/{TenantId}/{Name}", + }); +}; + +export const privateFilesGet5 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/t/{TenantId}/{Name}/{Process}", + }); +}; + +export const privateFilesGet6 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/t/{TenantId}/p/{Path}/{Name}", + }); +}; + +export const privateFilesGet7 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/private/t/{TenantId}/p/{Path}/{Name}/{Process}", + }); +}; + +export const privateFilesGetShareList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/files/private/share", + }, + ); +}; + +export const privateFilesShare = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/files/private/share", + }); +}; + +export const profileGetSessions = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/account/my-profile/sessions", + }); +}; + +export const profileRevokeSession = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/account/my-profile/sessions/{sessionId}/revoke", + }); +}; + +export const profileGetTwoFactorEnabled = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + ProfileGetTwoFactorEnabledResponse, + ProfileGetTwoFactorEnabledError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/two-factor", + }); +}; + +export const profileChangeTwoFactorEnabled = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + ProfileChangeTwoFactorEnabledResponse, + ProfileChangeTwoFactorEnabledError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/change-two-factor", + }); +}; + +export const profileSendChangePhoneNumberCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + ProfileSendChangePhoneNumberCodeResponse, + ProfileSendChangePhoneNumberCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/send-phone-number-change-code", + }); +}; + +export const profileChangePhoneNumber = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/account/my-profile/change-phone-number", + }, + ); +}; + +export const profileSendEmailConfirmLink = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + ProfileSendEmailConfirmLinkResponse, + ProfileSendEmailConfirmLinkError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/send-email-confirm-link", + }); +}; + +export const profileConfirmEmail = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/account/my-profile/confirm-email", + }); +}; + +export const profileGetAuthenticator = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/account/my-profile/authenticator", + }); +}; + +export const profileVerifyAuthenticatorCode = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + ProfileVerifyAuthenticatorCodeResponse, + ProfileVerifyAuthenticatorCodeError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/verify-authenticator-code", + }); +}; + +export const profileResetAuthenticator = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + ProfileResetAuthenticatorResponse, + ProfileResetAuthenticatorError, + ThrowOnError + >({ + ...options, + url: "/api/account/my-profile/reset-authenticator", + }); +}; + +export const profileGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/account/my-profile", + }); +}; + +export const profileUpdate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/account/my-profile", + }); +}; + +export const profileChangePassword = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/account/my-profile/change-password", + }); +}; + +export const publicFilesUpload = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/files/public", + }); +}; + +export const publicFilesDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/files/public", + }); +}; + +export const publicFilesUpload1 = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/files/public/upload", + }); +}; + +export const publicFilesGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/search", + }); +}; + +export const publicFilesGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/{Name}", + }); +}; + +export const publicFilesGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/{Name}/{Process}", + }); +}; + +export const publicFilesGet2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/p/{Path}/{Name}", + }); +}; + +export const publicFilesGet3 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/p/{Path}/{Name}/{Process}", + }); +}; + +export const publicFilesGet4 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/t/{TenantId}/{Name}", + }); +}; + +export const publicFilesGet5 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/t/{TenantId}/{Name}/{Process}", + }); +}; + +export const publicFilesGet6 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/t/{TenantId}/p/{Path}/{Name}", + }); +}; + +export const publicFilesGet7 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/public/t/{TenantId}/p/{Path}/{Name}/{Process}", + }); +}; + +export const publishHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{workflowDefinitionId}/publish", + }); +}; + +export const resourceGetByName = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/localization/resources/{name}", + }); +}; + +export const resourceDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/localization/resources/{name}", + }); +}; + +export const resourceUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/localization/resources/{name}", + }); +}; + +export const resourceCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/localization/resources", + }); +}; + +export const resourceGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/localization/resources", + }); +}; + +export const restoreHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/v{apiVersion}/workflow-definitions/restore", + }); +}; + +export const retractHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{workflowDefinitionId}/retract", + }); +}; + +export const retryHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-instances/{id}/retry", + }); +}; + +export const revertHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflow-definitions/{definitionId}/revert/{version}", + }); +}; + +export const roleGetOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/identity/roles/{id}/organization-units", + }, + ); +}; + +export const roleSetOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/identity/roles/{id}/organization-units", + }, + ); +}; + +export const roleRemoveOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + RoleRemoveOrganizationUnitsResponse, + RoleRemoveOrganizationUnitsError, + ThrowOnError + >({ + ...options, + url: "/api/identity/roles/{id}/organization-units/{ouId}", + }); +}; + +export const roleGetClaims = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/roles/{id}/claims", + }); +}; + +export const roleAddClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/roles/{id}/claims", + }); +}; + +export const roleUpdateClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/roles/{id}/claims", + }); +}; + +export const roleDeleteClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/identity/roles/{id}/claims", + }); +}; + +export const roleGetAllList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/roles/all", + }); +}; + +export const roleGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/roles", + }); +}; + +export const roleCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/roles", + }); +}; + +export const roleGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/roles/{id}", + }); +}; + +export const roleUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/roles/{id}", + }); +}; + +export const roleDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/identity/roles/{id}", + }); +}; + +export const roleEntityRuleGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/data-protection-management/entity-rule/roles", + }); +}; + +export const roleEntityRuleCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/data-protection-management/entity-rule/roles", + }); +}; + +export const roleEntityRuleUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/data-protection-management/entity-rule/roles/{id}", + }); +}; + +export const securityLogDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/auditing/security-log/{id}", + }); +}; + +export const securityLogGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/security-log/{id}", + }); +}; + +export const securityLogGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/auditing/security-log", + }); +}; + +export const settingSetCurrentTenant = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/setting-management/settings/change-current-tenant", + }); +}; + +export const settingSetGlobal = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/setting-management/settings/change-global", + }); +}; + +export const settingGetAllForGlobal = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/setting-management/settings/by-global", + }); +}; + +export const settingGetAllForCurrentTenant = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + SettingGetAllForCurrentTenantResponse, + SettingGetAllForCurrentTenantError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/settings/by-current-tenant", + }); +}; + +export const settingSendTestEmail = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/setting-management/settings/send-test-email", + }); +}; + +export const settingDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/setting-management/settings/definitions", + }); +}; + +export const settingDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/setting-management/settings/definitions", + }, + ); +}; + +export const settingDefinitionDeleteOrRestore = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + SettingDefinitionDeleteOrRestoreResponse, + SettingDefinitionDeleteOrRestoreError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/settings/definitions/{name}", + }); +}; + +export const settingDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/setting-management/settings/definitions/{name}", + }); +}; + +export const settingDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/setting-management/settings/definitions/{name}", + }); +}; + +export const staticFilesUpload = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + "Content-Type": null, + ...options?.headers, + }, + url: "/api/files/static", + }); +}; + +export const staticFilesGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/{Bucket}/{Name}", + }); +}; + +export const staticFilesGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/{Bucket}/{Name}/{Process}", + }); +}; + +export const staticFilesGet2 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/{Bucket}/p/{Path}/{Name}", + }); +}; + +export const staticFilesGet3 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/{Bucket}/p/{Path}/{Name}/{Process}", + }); +}; + +export const staticFilesGet4 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/t/{TenantId}/{Bucket}/{Name}", + }); +}; + +export const staticFilesGet5 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/t/{TenantId}/{Bucket}/{Name}/{Process}", + }); +}; + +export const staticFilesGet6 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/t/{TenantId}/{Bucket}/p/{Path}/{Name}", + }); +}; + +export const staticFilesGet7 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/files/static/t/{TenantId}/{Bucket}/p/{Path}/{Name}/{Process}", + }); +}; + +export const tenantGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/saas/tenants/{id}", + }); +}; + +export const tenantUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/saas/tenants/{id}", + }); +}; + +export const tenantDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/saas/tenants/{id}", + }); +}; + +export const tenantGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/saas/tenants/by-name/{name}", + }); +}; + +export const tenantGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/saas/tenants", + }); +}; + +export const tenantCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/saas/tenants", + }); +}; + +export const tenantGetConnectionString = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + TenantGetConnectionStringResponse, + TenantGetConnectionStringError, + ThrowOnError + >({ + ...options, + url: "/api/saas/tenants/{id}/connection-string/{name}", + }); +}; + +export const tenantDeleteConnectionString = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + TenantDeleteConnectionStringResponse, + TenantDeleteConnectionStringError, + ThrowOnError + >({ + ...options, + url: "/api/saas/tenants/{id}/connection-string/{name}", + }); +}; + +export const tenantGetConnectionString1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + TenantGetConnectionString1Response, + TenantGetConnectionString1Error, + ThrowOnError + >({ + ...options, + url: "/api/saas/tenants/{id}/connection-string", + }); +}; + +export const tenantSetConnectionString = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + TenantSetConnectionStringResponse, + TenantSetConnectionStringError, + ThrowOnError + >({ + ...options, + url: "/api/saas/tenants/{id}/connection-string", + }); +}; + +export const textSetText = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/localization/texts", + }); +}; + +export const textRestoreToDefault = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/localization/texts/restore-to-default", + }); +}; + +export const textGetByCultureKey = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/localization/texts/by-culture-key", + }); +}; + +export const textGetList = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/abp/localization/texts", + }); +}; + +export const textTemplateContentGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/text-templating/templates/content/{Name}", + }); +}; + +export const textTemplateContentGet1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/text-templating/templates/content/{Culture}/{Name}", + }); +}; + +export const textTemplateContentRestoreToDefault = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + TextTemplateContentRestoreToDefaultResponse, + TextTemplateContentRestoreToDefaultError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/templates/content/{name}/restore-to-default", + }); +}; + +export const textTemplateContentUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + TextTemplateContentUpdateResponse, + TextTemplateContentUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/templates/content/{name}", + }); +}; + +export const textTemplateDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + TextTemplateDefinitionCreateResponse, + TextTemplateDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/template/definitions", + }); +}; + +export const textTemplateDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + TextTemplateDefinitionGetListResponse, + TextTemplateDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/template/definitions", + }); +}; + +export const textTemplateDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + TextTemplateDefinitionDeleteResponse, + TextTemplateDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/template/definitions/{name}", + }); +}; + +export const textTemplateDefinitionGetByName = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + TextTemplateDefinitionGetByNameResponse, + TextTemplateDefinitionGetByNameError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/template/definitions/{name}", + }); +}; + +export const textTemplateDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + TextTemplateDefinitionUpdateResponse, + TextTemplateDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/text-templating/template/definitions/{name}", + }); +}; + +export const themeSettingGet = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/theme/vue-vben-admin", + }); +}; + +export const themeSettingChange = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/theme/vue-vben-admin/change", + }); +}; + +export const triggerHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/v{apiVersion}/workflows/trigger", + }); +}; + +export const triggerEndpointHandle = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/signals/trigger/{token}", + }); +}; + +export const triggerEndpointHandle1 = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/signals/trigger/{token}", + }); +}; + +export const userGetOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/identity/users/{id}/organization-units", + }, + ); +}; + +export const userSetOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/identity/users/{id}/organization-units", + }, + ); +}; + +export const userRemoveOrganizationUnits = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + UserRemoveOrganizationUnitsResponse, + UserRemoveOrganizationUnitsError, + ThrowOnError + >({ + ...options, + url: "/api/identity/users/{id}/organization-units/{ouId}", + }); +}; + +export const userGetClaims = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/{id}/claims", + }); +}; + +export const userAddClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/users/{id}/claims", + }); +}; + +export const userUpdateClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/{id}/claims", + }); +}; + +export const userDeleteClaim = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/identity/users/{id}/claims", + }); +}; + +export const userChangePassword = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/change-password", + }); +}; + +export const userChangeTwoFactorEnabled = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + UserChangeTwoFactorEnabledResponse, + UserChangeTwoFactorEnabledError, + ThrowOnError + >({ + ...options, + url: "/api/identity/users/change-two-factor", + }); +}; + +export const userLock = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/{id}/lock/{seconds}", + }); +}; + +export const userUnLock = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/{id}/unlock", + }); +}; + +export const userGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/{id}", + }); +}; + +export const userUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/{id}", + }); +}; + +export const userDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/identity/users/{id}", + }); +}; + +export const userGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users", + }); +}; + +export const userCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/identity/users", + }); +}; + +export const userGetRoles = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/{id}/roles", + }); +}; + +export const userUpdateRoles = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/identity/users/{id}/roles", + }); +}; + +export const userGetAssignableRoles = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/assignable-roles", + }); +}; + +export const userFindByUsername = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/by-username/{userName}", + }); +}; + +export const userFindByEmail = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/by-email/{email}", + }); +}; + +export const userFavoriteMenuCreate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/platform/menus/favorites/{userId}", + }); +}; + +export const userFavoriteMenuGetList = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/platform/menus/favorites/{userId}", + }); +}; + +export const userFavoriteMenuUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/platform/menus/favorites/{userId}", + }); +}; + +export const userFavoriteMenuCreateMyFavoriteMenu = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + UserFavoriteMenuCreateMyFavoriteMenuResponse, + UserFavoriteMenuCreateMyFavoriteMenuError, + ThrowOnError + >({ + ...options, + url: "/api/platform/menus/favorites/my-favorite-menus", + }); +}; + +export const userFavoriteMenuGetMyFavoriteMenuList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + UserFavoriteMenuGetMyFavoriteMenuListResponse, + UserFavoriteMenuGetMyFavoriteMenuListError, + ThrowOnError + >({ + ...options, + url: "/api/platform/menus/favorites/my-favorite-menus", + }); +}; + +export const userFavoriteMenuUpdateMyFavoriteMenu = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + UserFavoriteMenuUpdateMyFavoriteMenuResponse, + UserFavoriteMenuUpdateMyFavoriteMenuError, + ThrowOnError + >({ + ...options, + url: "/api/platform/menus/favorites/my-favorite-menus", + }); +}; + +export const userFavoriteMenuDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete({ + ...options, + url: "/api/platform/menus/favorites/{userId}/{MenuId}", + }); +}; + +export const userFavoriteMenuDeleteMyFavoriteMenu = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + UserFavoriteMenuDeleteMyFavoriteMenuResponse, + UserFavoriteMenuDeleteMyFavoriteMenuError, + ThrowOnError + >({ + ...options, + url: "/api/platform/menus/favorites/my-favorite-menus/{MenuId}", + }); +}; + +export const userGroupApplyJoinGroup = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/im/user-groups/join", + }); +}; + +export const userGroupGetGroupUsers = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/user-groups", + }); +}; + +export const userGroupGetMyGroups = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/im/user-groups/me", + }); +}; + +export const userGroupGroupAcceptUser = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/im/user-groups/accept", + }, + ); +}; + +export const userGroupGroupRemoveUser = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put( + { + ...options, + url: "/api/im/user-groups/remove", + }, + ); +}; + +export const userLookupFindById = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/lookup/{id}", + }); +}; + +export const userLookupFindByUserName = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/identity/users/lookup/by-username/{userName}", + }, + ); +}; + +export const userLookupSearch = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/lookup/search", + }); +}; + +export const userLookupGetCount = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/identity/users/lookup/count", + }); +}; + +export const userSettingGetAllForCurrentUser = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + UserSettingGetAllForCurrentUserResponse, + UserSettingGetAllForCurrentUserError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/settings/by-current-user", + }); +}; + +export const userSettingSetCurrentUser = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + UserSettingSetCurrentUserResponse, + UserSettingSetCurrentUserError, + ThrowOnError + >({ + ...options, + url: "/api/setting-management/settings/change-current-user", + }); +}; + +export const webhookDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/webhooks/definitions", + }); +}; + +export const webhookDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/webhooks/definitions", + }, + ); +}; + +export const webhookDefinitionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookDefinitionDeleteResponse, + WebhookDefinitionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/{name}", + }); +}; + +export const webhookDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/webhooks/definitions/{name}", + }); +}; + +export const webhookDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put({ + ...options, + url: "/api/webhooks/definitions/{name}", + }); +}; + +export const webhookGroupDefinitionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + WebhookGroupDefinitionCreateResponse, + WebhookGroupDefinitionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/groups", + }); +}; + +export const webhookGroupDefinitionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + WebhookGroupDefinitionGetListResponse, + WebhookGroupDefinitionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/groups", + }); +}; + +export const webhookGroupDefinitionDeleteAysnc = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookGroupDefinitionDeleteAysncResponse, + WebhookGroupDefinitionDeleteAysncError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/groups/{name}", + }); +}; + +export const webhookGroupDefinitionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + WebhookGroupDefinitionGetResponse, + WebhookGroupDefinitionGetError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/groups/{name}", + }); +}; + +export const webhookGroupDefinitionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + WebhookGroupDefinitionUpdateResponse, + WebhookGroupDefinitionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/definitions/groups/{name}", + }); +}; + +export const webhookPublishPublish = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/webhooks/publish", + }); +}; + +export const webhookSendRecordGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/webhooks/send-attempts/{id}", + }); +}; + +export const webhookSendRecordDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookSendRecordDeleteResponse, + WebhookSendRecordDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/send-attempts/{id}", + }); +}; + +export const webhookSendRecordDeleteMany = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookSendRecordDeleteManyResponse, + WebhookSendRecordDeleteManyError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/send-attempts/delete-many", + }); +}; + +export const webhookSendRecordGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get( + { + ...options, + url: "/api/webhooks/send-attempts", + }, + ); +}; + +export const webhookSendRecordResend = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).post({ + ...options, + url: "/api/webhooks/send-attempts/{id}/resend", + }); +}; + +export const webhookSendRecordResendMany = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + WebhookSendRecordResendManyResponse, + WebhookSendRecordResendManyError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/send-attempts/resend-many", + }); +}; + +export const webhookSubscriptionCreate = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).post< + WebhookSubscriptionCreateResponse, + WebhookSubscriptionCreateError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions", + }); +}; + +export const webhookSubscriptionGetList = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + WebhookSubscriptionGetListResponse, + WebhookSubscriptionGetListError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions", + }); +}; + +export const webhookSubscriptionDelete = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookSubscriptionDeleteResponse, + WebhookSubscriptionDeleteError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions/{id}", + }); +}; + +export const webhookSubscriptionGet = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).get({ + ...options, + url: "/api/webhooks/subscriptions/{id}", + }); +}; + +export const webhookSubscriptionUpdate = ( + options: OptionsLegacyParser, +) => { + return (options?.client ?? client).put< + WebhookSubscriptionUpdateResponse, + WebhookSubscriptionUpdateError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions/{id}", + }); +}; + +export const webhookSubscriptionDeleteMany = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).delete< + WebhookSubscriptionDeleteManyResponse, + WebhookSubscriptionDeleteManyError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions/delete-many", + }); +}; + +export const webhookSubscriptionGetAllAvailableWebhooks = ( + options?: OptionsLegacyParser, +) => { + return (options?.client ?? client).get< + WebhookSubscriptionGetAllAvailableWebhooksResponse, + WebhookSubscriptionGetAllAvailableWebhooksError, + ThrowOnError + >({ + ...options, + url: "/api/webhooks/subscriptions/availables", + }); +}; diff --git a/apps/react-admin/src/api/gen/types.gen.ts b/apps/react-admin/src/api/gen/types.gen.ts new file mode 100644 index 000000000..9ee442ddb --- /dev/null +++ b/apps/react-admin/src/api/gen/types.gen.ts @@ -0,0 +1,13569 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type AbpLoginResult = { + result?: LoginResultType; + readonly description?: string | null; +}; + +export type ActionApiDescriptionModel = { + uniqueName?: string | null; + name?: string | null; + httpMethod?: string | null; + url?: string | null; + supportedVersions?: Array | null; + parametersOnMethod?: Array | null; + parameters?: Array | null; + returnValue?: ReturnValueApiDescriptionModel; + allowAnonymous?: boolean | null; + implementFrom?: string | null; +}; + +export type ActivityBlueprintModel = { + id?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + type?: string | null; + parentId?: string | null; + persistWorkflow?: boolean; + loadWorkflowContext?: boolean; + saveWorkflowContext?: boolean; + inputProperties?: Variables; + outputProperties?: Variables; + x?: number | null; + y?: number | null; +}; + +export type ActivityDefinition = { + activityId?: string | null; + type?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + x?: number | null; + y?: number | null; + persistWorkflow?: boolean; + loadWorkflowContext?: boolean; + saveWorkflowContext?: boolean; + properties?: Array | null; + propertyStorageProviders?: { + [key: string]: string; + } | null; +}; + +export type ActivityDefinitionProperty = { + name?: string | null; + syntax?: string | null; + expressions?: { + [key: string]: string; + } | null; +}; + +export type ActivityDescriptor = { + type?: string | null; + displayName?: string | null; + description?: string | null; + category?: string | null; + traits?: ActivityTraits; + outcomes?: Array | null; + /** + * @deprecated + */ + properties?: Array | null; + inputProperties?: Array | null; + outputProperties?: Array | null; + customAttributes?: { + [key: string]: unknown; + } | null; +}; + +export type ActivityEventCount = { + eventName?: string | null; + count?: number; +}; + +export type ActivityFault = { + message?: string | null; +}; + +export type ActivityInputDescriptor = { + name?: string | null; + type?: Type; + uiHint?: string | null; + label?: string | null; + hint?: string | null; + options?: unknown; + category?: string | null; + order?: number; + defaultValue?: unknown; + defaultSyntax?: string | null; + supportedSyntaxes?: Array | null; + isReadOnly?: boolean | null; + isBrowsable?: boolean | null; + isDesignerCritical?: boolean; + defaultWorkflowStorageProvider?: string | null; + disableWorkflowProviderSelection?: boolean; + considerValuesAsOutcomes?: boolean; +}; + +export type ActivityOutputDescriptor = { + name?: string | null; + type?: Type; + hint?: string | null; + isBrowsable?: boolean | null; + defaultWorkflowStorageProvider?: string | null; + disableWorkflowProviderSelection?: boolean; +}; + +export type ActivityScope = { + activityId?: string | null; + variables?: Variables; +}; + +export type ActivityStats = { + eventCounts?: Array | null; + fault?: ActivityFault; + averageExecutionTime?: Duration; + fastestExecutionTime?: Duration; + slowestExecutionTime?: Duration; + lastExecutedAt?: Instant; +}; + +export enum ActivityTraits { + Action = 1, + Trigger = 2, + Job = 4, +} + +export type ApiVersion = { + groupVersion?: string | null; + readonly majorVersion?: number | null; + readonly minorVersion?: number | null; + readonly status?: string | null; +}; + +export type ApplicationApiDescriptionModel = { + modules?: { + [key: string]: ModuleApiDescriptionModel; + } | null; + types?: { + [key: string]: TypeApiDescriptionModel; + } | null; +}; + +export type ApplicationAuthConfigurationDto = { + grantedPolicies?: { + [key: string]: boolean; + } | null; +}; + +export type ApplicationConfigurationDto = { + localization?: ApplicationLocalizationConfigurationDto; + auth?: ApplicationAuthConfigurationDto; + setting?: ApplicationSettingConfigurationDto; + currentUser?: CurrentUserDto; + features?: ApplicationFeatureConfigurationDto; + globalFeatures?: ApplicationGlobalFeatureConfigurationDto; + multiTenancy?: MultiTenancyInfoDto; + currentTenant?: CurrentTenantDto; + timing?: TimingDto; + clock?: ClockDto; + objectExtensions?: ObjectExtensionsDto; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type ApplicationFeatureConfigurationDto = { + values?: { + [key: string]: string | null; + } | null; +}; + +export type ApplicationGlobalFeatureConfigurationDto = { + enabledFeatures?: Array | null; +}; + +export type ApplicationLocalizationConfigurationDto = { + values?: { + [key: string]: { + [key: string]: string; + }; + } | null; + resources?: { + [key: string]: ApplicationLocalizationResourceDto; + } | null; + languages?: Array | null; + currentCulture?: CurrentCultureDto; + defaultResourceName?: string | null; + languagesMap?: { + [key: string]: Array; + } | null; + languageFilesMap?: { + [key: string]: Array; + } | null; +}; + +export type ApplicationLocalizationDto = { + resources?: { + [key: string]: ApplicationLocalizationResourceDto; + } | null; + currentCulture?: CurrentCultureDto; +}; + +export type ApplicationLocalizationResourceDto = { + texts?: { + [key: string]: string; + } | null; + baseResources?: Array | null; +}; + +export type ApplicationSettingConfigurationDto = { + values?: { + [key: string]: string | null; + } | null; +}; + +export type Assembly = { + readonly definedTypes?: Array | null; + readonly exportedTypes?: Array | null; + /** + * @deprecated + */ + readonly codeBase?: string | null; + entryPoint?: MethodInfo; + readonly fullName?: string | null; + readonly imageRuntimeVersion?: string | null; + readonly isDynamic?: boolean; + readonly location?: string | null; + readonly reflectionOnly?: boolean; + readonly isCollectible?: boolean; + readonly isFullyTrusted?: boolean; + readonly customAttributes?: Array | null; + /** + * @deprecated + */ + readonly escapedCodeBase?: string | null; + manifestModule?: Module; + readonly modules?: Array | null; + /** + * @deprecated + */ + readonly globalAssemblyCache?: boolean; + readonly hostContext?: number; + securityRuleSet?: SecurityRuleSet; +}; + +export type AuditLogActionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + serviceName?: string | null; + methodName?: string | null; + parameters?: string | null; + executionTime?: string; + executionDuration?: number; +}; + +export type AuditLogDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + applicationName?: string | null; + userId?: string | null; + userName?: string | null; + tenantId?: string | null; + tenantName?: string | null; + impersonatorUserId?: string | null; + impersonatorTenantId?: string | null; + executionTime?: string; + executionDuration?: number; + clientIpAddress?: string | null; + clientName?: string | null; + clientId?: string | null; + correlationId?: string | null; + browserInfo?: string | null; + httpMethod?: string | null; + url?: string | null; + exceptions?: string | null; + comments?: string | null; + httpStatusCode?: number | null; + entityChanges?: Array | null; + actions?: Array | null; +}; + +export type AuthenticatorDto = { + isAuthenticated?: boolean; + sharedKey?: string | null; + authenticatorUri?: string | null; +}; + +export type AuthenticatorRecoveryCodeDto = { + recoveryCodes?: Array | null; +}; + +export type BackgroundJobActionCreateDto = { + isEnabled?: boolean; + paramters?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type BackgroundJobActionDefinitionDto = { + name?: string | null; + type?: JobActionType; + displayName?: string | null; + description?: string | null; + paramters?: Array | null; +}; + +export type BackgroundJobActionDto = { + id?: string; + jobId?: string | null; + name?: string | null; + isEnabled?: boolean; + paramters?: { + [key: string]: unknown; + } | null; +}; + +export type BackgroundJobActionParamterDto = { + name?: string | null; + required?: boolean; + displayName?: string | null; + description?: string | null; +}; + +export type BackgroundJobActionUpdateDto = { + isEnabled?: boolean; + paramters?: { + [key: string]: unknown; + } | null; +}; + +export type BackgroundJobDefinitionDto = { + name?: string | null; + displayName?: string | null; + description?: string | null; + paramters?: Array | null; +}; + +export type BackgroundJobInfoBatchInput = { + jobIds?: Array | null; +}; + +export type BackgroundJobInfoCreateDto = { + isEnabled?: boolean; + args?: { + [key: string]: unknown; + } | null; + description?: string | null; + jobType?: JobType; + cron?: string | null; + maxTryCount?: number; + maxCount?: number; + interval?: number; + priority?: JobPriority; + lockTimeOut?: number; + name: string; + group: string; + type: string; + nodeName?: string | null; + beginTime: string; + endTime?: string | null; + source?: JobSource; +}; + +export type BackgroundJobInfoDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string | null; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + concurrencyStamp?: string | null; + name?: string | null; + group?: string | null; + type?: string | null; + result?: string | null; + args?: { + [key: string]: unknown; + } | null; + status?: JobStatus; + description?: string | null; + beginTime?: string; + endTime?: string | null; + lastRunTime?: string | null; + nextRunTime?: string | null; + jobType?: JobType; + cron?: string | null; + triggerCount?: number; + tryCount?: number; + maxTryCount?: number; + maxCount?: number; + isAbandoned?: boolean; + isEnabled?: boolean; + interval?: number; + priority?: JobPriority; + source?: JobSource; + lockTimeOut?: number; +}; + +export type BackgroundJobInfoUpdateDto = { + isEnabled?: boolean; + args?: { + [key: string]: unknown; + } | null; + description?: string | null; + jobType?: JobType; + cron?: string | null; + maxTryCount?: number; + maxCount?: number; + interval?: number; + priority?: JobPriority; + lockTimeOut?: number; + concurrencyStamp?: string | null; +}; + +export type BackgroundJobLogDto = { + id?: number; + jobName?: string | null; + jobGroup?: string | null; + jobType?: string | null; + message?: string | null; + runTime?: string; + exception?: string | null; +}; + +export type BackgroundJobParamterDto = { + name?: string | null; + required?: boolean; + displayName?: string | null; + description?: string | null; +}; + +export type BeforeMiniStateDto = { + menuCollapsed?: boolean | null; + menuSplit?: boolean | null; + menuMode?: string | null; + menuType?: string | null; +}; + +export type BlockingActivity = { + activityId?: string | null; + activityType?: string | null; + tag?: string | null; +}; + +export type BulkCancelWorkflowsRequest = { + workflowInstanceIds?: Array | null; +}; + +export type BulkDeleteOssObjectInput = { + bucket: string; + path?: string | null; + objects: Array; +}; + +export type BulkDeleteWorkflowsRequest = { + workflowInstanceIds?: Array | null; +}; + +export type BulkRetryWorkflowsRequest = { + workflowInstanceIds?: Array | null; +}; + +export type CacheKeysDto = { + nextMarker?: string | null; + keys?: Array | null; +}; + +export type CacheRefreshInput = { + key: string; + absoluteExpiration?: string | null; + slidingExpiration?: string | null; +}; + +export type CacheSetInput = { + key: string; + value?: string | null; + absoluteExpiration?: string | null; + slidingExpiration?: string | null; +}; + +export type CacheValueDto = { + type?: string | null; + size?: number; + expiration?: string | null; + values?: { + [key: string]: unknown; + } | null; +}; + +export enum CallingConventions { + Standard = 1, + VarArgs = 2, + Any = 3, + HasThis = 32, + ExplicitThis = 64, +} + +export type ChangeAvatarInput = { + avatarUrl?: string | null; +}; + +export type ChangePasswordInput = { + currentPassword?: string | null; + newPassword: string; +}; + +export type ChangePhoneNumberInput = { + newPhoneNumber: string; + code: string; +}; + +export type ChatMessage = { + tenantId?: string | null; + groupId?: string | null; + messageId?: string | null; + formUserId?: string; + formUserName?: string | null; + toUserId?: string | null; + content?: string | null; + sendTime?: string; + isAnonymous?: boolean; + messageType?: MessageType; + source?: MessageSourceType; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type ChatMessageSendResultDto = { + messageId?: string | null; +}; + +export type ClockDto = { + kind?: string | null; +}; + +export type CollectedWorkflow = { + workflowInstanceId?: string | null; + workflowInstance?: WorkflowInstance; + activityId?: string | null; +}; + +export type ConfirmEmailInput = { + confirmToken: string; +}; + +export type ConnectionDefinition = { + sourceActivityId?: string | null; + targetActivityId?: string | null; + outcome?: string | null; +}; + +export type ConnectionModel = { + sourceActivityId?: string | null; + targetActivityId?: string | null; + outcome?: string | null; +}; + +export type ConstructorInfo = { + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + attributes?: MethodAttributes; + methodImplementationFlags?: MethodImplAttributes; + callingConvention?: CallingConventions; + readonly isAbstract?: boolean; + readonly isConstructor?: boolean; + readonly isFinal?: boolean; + readonly isHideBySig?: boolean; + readonly isSpecialName?: boolean; + readonly isStatic?: boolean; + readonly isVirtual?: boolean; + readonly isAssembly?: boolean; + readonly isFamily?: boolean; + readonly isFamilyAndAssembly?: boolean; + readonly isFamilyOrAssembly?: boolean; + readonly isPrivate?: boolean; + readonly isPublic?: boolean; + readonly isConstructedGenericMethod?: boolean; + readonly isGenericMethod?: boolean; + readonly isGenericMethodDefinition?: boolean; + readonly containsGenericParameters?: boolean; + methodHandle?: RuntimeMethodHandle; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; + memberType?: MemberTypes; +}; + +export type ControllerApiDescriptionModel = { + controllerName?: string | null; + controllerGroupName?: string | null; + isRemoteService?: boolean; + isIntegrationService?: boolean; + apiVersion?: string | null; + type?: string | null; + interfaces?: Array | null; + actions?: { + [key: string]: ActionApiDescriptionModel; + } | null; +}; + +export type ControllerInterfaceApiDescriptionModel = { + type?: string | null; + name?: string | null; + methods?: Array | null; +}; + +export type CurrentCultureDto = { + displayName?: string | null; + englishName?: string | null; + threeLetterIsoLanguageName?: string | null; + twoLetterIsoLanguageName?: string | null; + isRightToLeft?: boolean; + cultureName?: string | null; + name?: string | null; + nativeName?: string | null; + dateTimeFormat?: DateTimeFormatDto; +}; + +export type CurrentTenantDto = { + id?: string | null; + name?: string | null; + isAvailable?: boolean; +}; + +export type CurrentUserDto = { + isAuthenticated?: boolean; + id?: string | null; + tenantId?: string | null; + impersonatorUserId?: string | null; + impersonatorTenantId?: string | null; + impersonatorUserName?: string | null; + impersonatorTenantName?: string | null; + userName?: string | null; + name?: string | null; + surName?: string | null; + email?: string | null; + emailVerified?: boolean; + phoneNumber?: string | null; + phoneNumberVerified?: boolean; + roles?: Array | null; + sessionId?: string | null; +}; + +export type CustomAttributeData = { + attributeType?: Type; + constructor?: ConstructorInfo; + readonly constructorArguments?: Array | null; + readonly namedArguments?: Array | null; +}; + +export type CustomAttributeNamedArgument = { + memberInfo?: MemberInfo; + typedValue?: CustomAttributeTypedArgument; + readonly memberName?: string | null; + readonly isField?: boolean; +}; + +export type CustomAttributeTypedArgument = { + argumentType?: Type; + value?: unknown; +}; + +export type DataAccessFilterGroup = { + groups?: Array | null; + rules?: Array | null; + logic?: DataAccessFilterLogic; +}; + +export enum DataAccessFilterLogic { + And = 0, + Or = 1, +} + +export enum DataAccessFilterOperate { + Equal = 1, + NotEqual = 2, + Less = 3, + LessOrEqual = 4, + Greater = 5, + GreaterOrEqual = 6, + StartsWith = 7, + EndsWith = 8, + Contains = 9, + NotContains = 10, +} + +export type DataAccessFilterRule = { + field?: string | null; + value?: unknown; + operate?: DataAccessFilterOperate; + isLeft?: boolean; +}; + +export enum DataAccessOperation { + Read = 0, + Write = 1, + Delete = 2, +} + +export type DataCreateDto = { + name: string; + displayName: string; + description?: string | null; + parentId?: string | null; +}; + +export type DataDto = { + id?: string; + name?: string | null; + code?: string | null; + displayName?: string | null; + description?: string | null; + parentId?: string | null; + items?: Array | null; +}; + +export type DataItemCreateDto = { + displayName: string; + defaultValue?: string | null; + description?: string | null; + allowBeNull?: boolean; + valueType?: ValueType; + name: string; +}; + +export type DataItemDto = { + id?: string; + name?: string | null; + displayName?: string | null; + defaultValue?: string | null; + description?: string | null; + allowBeNull?: boolean; + valueType?: ValueType; +}; + +export type DataItemUpdateDto = { + displayName: string; + defaultValue?: string | null; + description?: string | null; + allowBeNull?: boolean; + valueType?: ValueType; +}; + +export type DataMoveDto = { + parentId?: string | null; +}; + +export type DataUpdateDto = { + name: string; + displayName: string; + description?: string | null; +}; + +export type DateTimeFormatDto = { + calendarAlgorithmType?: string | null; + dateTimeFormatLong?: string | null; + shortDatePattern?: string | null; + fullDateTimePattern?: string | null; + dateSeparator?: string | null; + shortTimePattern?: string | null; + longTimePattern?: string | null; +}; + +export type DispatchSignalRequest = { + workflowInstanceId?: string | null; + correlationId?: string | null; + input?: unknown; +}; + +export type DispatchSignalResponse = { + startedWorkflows?: Array | null; +}; + +export type DispatchWorkflowDefinitionRequestModel = { + activityId?: string | null; + correlationId?: string | null; + contextId?: string | null; + input?: unknown; +}; + +export type DispatchWorkflowDefinitionResponseModel = { + workflowInstanceId?: string | null; + activityId?: string | null; +}; + +export type DispatchWorkflowInstanceRequestModel = { + activityId?: string | null; + input?: WorkflowInput; +}; + +export type DispatchWorkflowInstanceResponseModel = { + [key: string]: unknown; +}; + +export type Duration = { + readonly days?: number; + readonly nanosecondOfDay?: number; + readonly hours?: number; + readonly minutes?: number; + readonly seconds?: number; + readonly milliseconds?: number; + readonly subsecondTicks?: number; + readonly subsecondNanoseconds?: number; + readonly bclCompatibleTicks?: number; + readonly totalDays?: number; + readonly totalHours?: number; + readonly totalMinutes?: number; + readonly totalSeconds?: number; + readonly totalMilliseconds?: number; + readonly totalTicks?: number; + readonly totalNanoseconds?: number; +}; + +export enum DynamicComparison { + Equal = 0, + NotEqual = 1, + LessThan = 2, + LessThanOrEqual = 3, + GreaterThan = 4, + GreaterThanOrEqual = 5, + StartsWith = 6, + NotStartsWith = 7, + EndsWith = 8, + NotEndsWith = 9, + Contains = 10, + NotContains = 11, + Null = 12, + NotNull = 13, +} + +export enum DynamicLogic { + And = 0, + Or = 1, +} + +export type DynamicParamter = { + field: string; + logic?: DynamicLogic; + comparison?: DynamicComparison; + value?: unknown; + type?: string | null; +}; + +export type DynamicParamterDto = { + name?: string | null; + description?: string | null; + type?: string | null; + javaScriptType?: string | null; + availableComparator?: Array | null; + options?: Array | null; +}; + +export type DynamicQueryable = { + paramters?: Array | null; +}; + +export type EditionCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + displayName: string; +}; + +export type EditionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + displayName?: string | null; + concurrencyStamp?: string | null; +}; + +export type EditionUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + displayName: string; + concurrencyStamp?: string | null; +}; + +export type EntityChangeDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + changeTime?: string; + changeType?: EntityChangeType; + entityTenantId?: string | null; + entityId?: string | null; + entityTypeFullName?: string | null; + propertyChanges?: Array | null; +}; + +export enum EntityChangeType { + Created = 0, + Updated = 1, + Deleted = 2, +} + +export type EntityChangeWithUsernameDto = { + entityChange?: EntityChangeDto; + userName?: string | null; +}; + +export type EntityExtensionDto = { + properties?: { + [key: string]: ExtensionPropertyDto; + } | null; + configuration?: { + [key: string]: unknown; + } | null; +}; + +export type EntityPropertyChangeDto = { + id?: string; + newValue?: string | null; + originalValue?: string | null; + propertyName?: string | null; + propertyTypeFullName?: string | null; +}; + +export type EntityPropertyInfoDto = { + id?: string; + name?: string | null; + displayName?: string | null; + typeFullName?: string | null; + valueRange?: Array | null; +}; + +export type EntityTypeInfoDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + name?: string | null; + displayName?: string | null; + typeFullName?: string | null; + isAuditEnabled?: boolean; + properties?: Array | null; +}; + +export enum EventAttributes { + None = 0, + SpecialName = 512, + RTSpecialName = 1024, +} + +export type EventInfo = { + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + memberType?: MemberTypes; + attributes?: EventAttributes; + readonly isSpecialName?: boolean; + addMethod?: MethodInfo; + removeMethod?: MethodInfo; + raiseMethod?: MethodInfo; + readonly isMulticast?: boolean; + eventHandlerType?: Type; +}; + +export type ExecuteSignalRequest = { + workflowInstanceId?: string | null; + correlationId?: string | null; + input?: unknown; +}; + +export type ExecuteSignalResponse = { + startedWorkflows?: Array | null; +}; + +export type ExecuteWorkflowDefinitionRequestModel = { + activityId?: string | null; + correlationId?: string | null; + contextId?: string | null; + input?: unknown; +}; + +export type ExecuteWorkflowDefinitionResponseModel = { + executed?: boolean; + activityId?: string | null; + workflowInstance?: WorkflowInstance; +}; + +export type ExecuteWorkflowInstanceRequest = { + workflowInstanceId?: string | null; + activityId?: string | null; + input?: WorkflowInput; +}; + +export type ExecuteWorkflowInstanceResponseModel = { + executed?: boolean; + activityId?: string | null; + workflowInstance?: WorkflowInstance; +}; + +export type ExtensionEnumDto = { + fields?: Array | null; + localizationResource?: string | null; +}; + +export type ExtensionEnumFieldDto = { + name?: string | null; + value?: unknown; +}; + +export type ExtensionPropertyApiCreateDto = { + isAvailable?: boolean; +}; + +export type ExtensionPropertyApiDto = { + onGet?: ExtensionPropertyApiGetDto; + onCreate?: ExtensionPropertyApiCreateDto; + onUpdate?: ExtensionPropertyApiUpdateDto; +}; + +export type ExtensionPropertyApiGetDto = { + isAvailable?: boolean; +}; + +export type ExtensionPropertyApiUpdateDto = { + isAvailable?: boolean; +}; + +export type ExtensionPropertyAttributeDto = { + typeSimple?: string | null; + config?: { + [key: string]: unknown; + } | null; +}; + +export type ExtensionPropertyDto = { + type?: string | null; + typeSimple?: string | null; + displayName?: LocalizableStringDto; + api?: ExtensionPropertyApiDto; + ui?: ExtensionPropertyUiDto; + attributes?: Array | null; + configuration?: { + [key: string]: unknown; + } | null; + defaultValue?: unknown; +}; + +export type ExtensionPropertyUiDto = { + onTable?: ExtensionPropertyUiTableDto; + onCreateForm?: ExtensionPropertyUiFormDto; + onEditForm?: ExtensionPropertyUiFormDto; + lookup?: ExtensionPropertyUiLookupDto; +}; + +export type ExtensionPropertyUiFormDto = { + isVisible?: boolean; +}; + +export type ExtensionPropertyUiLookupDto = { + url?: string | null; + resultListPropertyName?: string | null; + displayPropertyName?: string | null; + valuePropertyName?: string | null; + filterParamName?: string | null; +}; + +export type ExtensionPropertyUiTableDto = { + isVisible?: boolean; +}; + +export type FeatureDefinitionCreateDto = { + displayName: string; + parentName?: string | null; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + isAvailableToHost?: boolean; + allowedProviders?: Array | null; + valueType: string; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + groupName: string; +}; + +export type FeatureDefinitionDto = { + groupName?: string | null; + name?: string | null; + parentName?: string | null; + displayName?: string | null; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + isAvailableToHost?: boolean; + isStatic?: boolean; + allowedProviders?: Array | null; + valueType?: string | null; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type FeatureDefinitionUpdateDto = { + displayName: string; + parentName?: string | null; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + isAvailableToHost?: boolean; + allowedProviders?: Array | null; + valueType: string; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type FeatureDto = { + name?: string | null; + displayName?: string | null; + value?: string | null; + provider?: FeatureProviderDto; + description?: string | null; + valueType?: IStringValueType; + depth?: number; + parentName?: string | null; +}; + +export type FeatureGroupDefinitionCreateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type FeatureGroupDefinitionDto = { + name?: string | null; + displayName?: string | null; + isStatic?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type FeatureGroupDefinitionUpdateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type FeatureGroupDto = { + name?: string | null; + displayName?: string | null; + features?: Array | null; +}; + +export type FeatureProviderDto = { + name?: string | null; + key?: string | null; +}; + +export type FeedbackAttachmentDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + name?: string | null; + url?: string | null; + size?: number; +}; + +export type FeedbackAttachmentTempFileCreateDto = { + path?: string | null; + id?: string | null; +}; + +export type FeedbackAttachmentTempFileDto = { + path?: string | null; + id?: string | null; + size?: number; +}; + +export type FeedbackCommentDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + content?: string | null; +}; + +export type FeedbackCreateDto = { + content: string; + category: string; + attachments?: Array | null; +}; + +export type FeedbackDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + content?: string | null; + category?: string | null; + status?: FeedbackStatus; + comments?: Array | null; + attachments?: Array | null; +}; + +export enum FeedbackStatus { + Created = 1, + InProgress = 2, + Closed = 3, + Resolved = 4, +} + +export enum FieldAttributes { + PrivateScope = 0, + Private = 1, + FamANDAssem = 2, + Assembly = 3, + Family = 4, + FamORAssem = 5, + Public = 6, + FieldAccessMask = 7, + Static = 16, + InitOnly = 32, + Literal = 64, + NotSerialized = 128, + HasFieldRVA = 256, + SpecialName = 512, + RTSpecialName = 1024, + HasFieldMarshal = 4096, + PinvokeImpl = 8192, + HasDefault = 32768, + ReservedMask = 38144, +} + +export type FieldInfo = { + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + memberType?: MemberTypes; + attributes?: FieldAttributes; + fieldType?: Type; + readonly isInitOnly?: boolean; + readonly isLiteral?: boolean; + /** + * @deprecated + */ + readonly isNotSerialized?: boolean; + readonly isPinvokeImpl?: boolean; + readonly isSpecialName?: boolean; + readonly isStatic?: boolean; + readonly isAssembly?: boolean; + readonly isFamily?: boolean; + readonly isFamilyAndAssembly?: boolean; + readonly isFamilyOrAssembly?: boolean; + readonly isPrivate?: boolean; + readonly isPublic?: boolean; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; + fieldHandle?: RuntimeFieldHandle; +}; + +export type FileShareDto = { + url?: string | null; + maxAccessCount?: number; + expirationTime?: string | null; +}; + +export type FileShareInput = { + name: string; + path?: string | null; + maxAccessCount?: number; + expirationTime?: string | null; + roles?: Array | null; + users?: Array | null; +}; + +export type FindTenantResultDto = { + success?: boolean; + tenantId?: string | null; + name?: string | null; + normalizedName?: string | null; + isActive?: boolean; +}; + +export enum GenericParameterAttributes { + None = 0, + Covariant = 1, + Contravariant = 2, + VarianceMask = 3, + ReferenceTypeConstraint = 4, + NotNullableValueTypeConstraint = 8, + DefaultConstructorConstraint = 16, + SpecialConstraintMask = 28, +} + +export type GetFeatureListResultDto = { + groups?: Array | null; +}; + +export type GetListByDynamicQueryableInput = { + maxResultCount?: number; + skipCount?: number; + sorting?: string | null; + queryable: DynamicQueryable; +}; + +export type GetPermissionListResultDto = { + entityDisplayName?: string | null; + groups?: Array | null; +}; + +export type Group = { + id?: string | null; + name?: string | null; + avatarUrl?: string | null; + allowAnonymous?: boolean; + allowSendMessage?: boolean; + maxUserLength?: number; + groupUserCount?: number; +}; + +export type GroupAcceptUserDto = { + userId: string; + groupId: number; + allowAccept?: boolean; + rejectReason?: string | null; +}; + +export type GroupRemoveUserDto = { + userId: string; + groupId: number; +}; + +export type GroupUserCard = { + tenantId?: string | null; + userId?: string; + userName?: string | null; + avatarUrl?: string | null; + nickName?: string | null; + age?: number; + sex?: Sex; + sign?: string | null; + description?: string | null; + birthday?: string | null; + online?: boolean; + groupId?: number; + isAdmin?: boolean; + isSuperAdmin?: boolean; +}; + +export type HeaderSettingDto = { + bgColor?: string | null; + fixed?: boolean; + show?: boolean; + theme?: string | null; + showFullScreen?: boolean; + useLockPage?: boolean; + showDoc?: boolean; + showNotice?: boolean; + showSearch?: boolean; +}; + +export enum HttpStatusCode { + 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, + Ambiguous = 301, + MovedPermanently = 302, + Moved = 303, + Found = 304, + Redirect = 305, + SeeOther = 306, + RedirectMethod = 307, + NotModified = 308, + UseProxy = 400, + Unused = 401, + TemporaryRedirect = 402, + RedirectKeepVerb = 403, + PermanentRedirect = 404, + BadRequest = 405, + Unauthorized = 406, + PaymentRequired = 407, + Forbidden = 408, + NotFound = 409, + MethodNotAllowed = 410, + NotAcceptable = 411, + ProxyAuthenticationRequired = 412, + RequestTimeout = 413, + Conflict = 414, + Gone = 415, + LengthRequired = 416, + PreconditionFailed = 417, + RequestEntityTooLarge = 421, + RequestUriTooLong = 422, + UnsupportedMediaType = 423, + RequestedRangeNotSatisfiable = 424, + ExpectationFailed = 426, + MisdirectedRequest = 428, + UnprocessableEntity = 429, + UnprocessableContent = 431, + Locked = 451, + FailedDependency = 500, + UpgradeRequired = 501, + PreconditionRequired = 502, + TooManyRequests = 503, + RequestHeaderFieldsTooLarge = 504, + UnavailableForLegalReasons = 505, + InternalServerError = 506, + NotImplemented = 507, + BadGateway = 508, + ServiceUnavailable = 510, + GatewayTimeout = 511, +} + +export type IanaTimeZone = { + timeZoneName?: string | null; +}; + +export type IBookmark = { + [key: string]: unknown; +}; + +export type ICustomAttributeProvider = { + [key: string]: unknown; +}; + +export type IdentityClaimDto = { + id?: string; + claimType?: string | null; + claimValue?: string | null; +}; + +export type IdentityClaimTypeCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + required?: boolean; + regex?: string | null; + regexDescription?: string | null; + description?: string | null; + name: string; + isStatic?: boolean; + valueType?: IdentityClaimValueType; +}; + +export type IdentityClaimTypeDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + name?: string | null; + required?: boolean; + isStatic?: boolean; + regex?: string | null; + regexDescription?: string | null; + description?: string | null; + valueType?: IdentityClaimValueType; +}; + +export type IdentityClaimTypeUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + required?: boolean; + regex?: string | null; + regexDescription?: string | null; + description?: string | null; +}; + +export enum IdentityClaimValueType { + String = 0, + Int = 1, + Boolean = 2, + DateTime = 3, +} + +export type IdentityRoleAddOrRemoveOrganizationUnitDto = { + organizationUnitIds: Array; +}; + +export type IdentityRoleClaimCreateDto = { + claimType: string; + claimValue: string; +}; + +export type IdentityRoleClaimUpdateDto = { + claimType: string; + claimValue: string; + newClaimValue: string; +}; + +export type IdentityRoleCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + isDefault?: boolean; + isPublic?: boolean; +}; + +export type IdentityRoleDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + name?: string | null; + isDefault?: boolean; + isStatic?: boolean; + isPublic?: boolean; + concurrencyStamp?: string | null; +}; + +export type IdentityRoleUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + isDefault?: boolean; + isPublic?: boolean; + concurrencyStamp?: string | null; +}; + +export type IdentitySessionDto = { + id?: string; + sessionId?: string | null; + device?: string | null; + deviceInfo?: string | null; + userId?: string; + clientId?: string | null; + ipAddresses?: string | null; + signedIn?: string; + lastAccessed?: string | null; +}; + +export type IdentitySessionDto_1 = { + id?: string; + sessionId?: string | null; + device?: string | null; + deviceInfo?: string | null; + clientId?: string | null; + ipAddresses?: string | null; + signedIn?: string; + lastAccessed?: string | null; +}; + +export type IdentityUserClaimCreateDto = { + claimType: string; + claimValue?: string | null; +}; + +export type IdentityUserClaimUpdateDto = { + claimType: string; + claimValue?: string | null; + newClaimValue?: string | null; +}; + +export type IdentityUserCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + userName: string; + name?: string | null; + surname?: string | null; + email: string; + phoneNumber?: string | null; + isActive?: boolean; + lockoutEnabled?: boolean; + roleNames?: Array | null; + password: string; +}; + +export type IdentityUserDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + isDeleted?: boolean; + deleterId?: string | null; + deletionTime?: string | null; + tenantId?: string | null; + userName?: string | null; + name?: string | null; + surname?: string | null; + email?: string | null; + emailConfirmed?: boolean; + phoneNumber?: string | null; + phoneNumberConfirmed?: boolean; + isActive?: boolean; + lockoutEnabled?: boolean; + accessFailedCount?: number; + lockoutEnd?: string | null; + concurrencyStamp?: string | null; + entityVersion?: number; + lastPasswordChangeTime?: string | null; +}; + +export type IdentityUserOrganizationUnitUpdateDto = { + organizationUnitIds: Array; +}; + +export type IdentityUserSetPasswordInput = { + password: string; +}; + +export type IdentityUserUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + userName: string; + name?: string | null; + surname?: string | null; + email: string; + phoneNumber?: string | null; + isActive?: boolean; + lockoutEnabled?: boolean; + roleNames?: Array | null; + password?: string | null; + concurrencyStamp?: string | null; +}; + +export type IdentityUserUpdateRolesDto = { + roleNames: Array; +}; + +export type Instant = { + [key: string]: unknown; +}; + +export type IntellisenseContext = { + activityTypeName?: string | null; + propertyName?: string | null; +}; + +export type InterfaceMethodApiDescriptionModel = { + name?: string | null; + parametersOnMethod?: Array | null; + returnValue?: ReturnValueApiDescriptionModel; +}; + +export type IntPtr = { + [key: string]: unknown; +}; + +export type IOutputFormatter = { + [key: string]: unknown; +}; + +export type IRemoteStreamContent = { + readonly fileName?: string | null; + readonly contentType?: string | null; + readonly contentLength?: number | null; +}; + +export type IStringValueType = { + readonly name?: string | null; + readonly properties?: { + [key: string]: unknown; + } | null; + validator?: IValueValidator; +}; + +export type IValueValidator = { + readonly name?: string | null; + readonly properties?: { + [key: string]: unknown; + } | null; +}; + +export enum JobActionType { + Successed = 0, + Completed = 1, + Failed = -1, +} + +export enum JobPriority { + Low = 5, + BelowNormal = 10, + Normal = 15, + AboveNormal = 20, + High = 25, +} + +export enum JobSource { + User = 0, + System = 10, + None = -1, +} + +export enum JobStatus { + Completed = 0, + Queuing = 5, + Running = 10, + FailedRetry = 15, + Paused = 20, + Stopped = 30, + None = -1, +} + +export enum JobType { + Once = 0, + Period = 1, + Persistent = 2, +} + +export type JToken = Array; + +export type LanguageCreateDto = { + displayName: string; + cultureName: string; + uiCultureName?: string | null; +}; + +export type LanguageDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + cultureName?: string | null; + uiCultureName?: string | null; + displayName?: string | null; + twoLetterISOLanguageName?: string | null; +}; + +export type LanguageDto_1 = { + cultureName?: string | null; + uiCultureName?: string | null; + displayName?: string | null; + twoLetterISOLanguageName?: string | null; +}; + +export type LanguageInfo = { + cultureName?: string | null; + uiCultureName?: string | null; + displayName?: string | null; + readonly twoLetterISOLanguageName?: string | null; +}; + +export type LanguageUpdateDto = { + displayName: string; +}; + +export type LastChatMessage = { + avatarUrl?: string | null; + object?: string | null; + tenantId?: string | null; + groupId?: string | null; + messageId?: string | null; + formUserId?: string; + formUserName?: string | null; + toUserId?: string | null; + content?: string | null; + sendTime?: string; + readonly isAnonymous?: boolean; + messageType?: MessageType; + source?: MessageSourceType; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type LayoutCreateDto = { + name: string; + displayName: string; + description?: string | null; + path: string; + redirect?: string | null; + dataId?: string; + framework: string; +}; + +export type LayoutDto = { + id?: string; + path?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + redirect?: string | null; + meta?: { + [key: string]: unknown; + } | null; + framework?: string | null; + dataId?: string; +}; + +export enum LayoutKind { + Sequential = 0, + Explicit = 2, + Auto = 3, +} + +export type LayoutUpdateDto = { + name: string; + displayName: string; + description?: string | null; + path: string; + redirect?: string | null; +}; + +export type ListResultDtoOfBackgroundJobActionDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfBackgroundJobActionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfBackgroundJobDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfDataDto = { + items?: Array | null; +}; + +export type ListResultDtoOfDynamicParamterDto = { + items?: Array | null; +}; + +export type ListResultDtoOfEntityChangeWithUsernameDto = { + items?: Array | null; +}; + +export type ListResultDtoOfFeatureDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfFeatureGroupDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfGroup = { + items?: Array | null; +}; + +export type ListResultDtoOfIdentityClaimDto = { + items?: Array | null; +}; + +export type ListResultDtoOfIdentityClaimTypeDto = { + items?: Array | null; +}; + +export type ListResultDtoOfIdentityRoleDto = { + items?: Array | null; +}; + +export type ListResultDtoOfLanguageDto = { + items?: Array | null; +}; + +export type ListResultDtoOfLastChatMessage = { + items?: Array | null; +}; + +export type ListResultDtoOfLayoutDto = { + items?: Array | null; +}; + +export type ListResultDtoOfMenuDto = { + items?: Array | null; +}; + +export type ListResultDtoOfMyFileShareDto = { + items?: Array | null; +}; + +export type ListResultDtoOfNameValue = { + items?: Array | null; +}; + +export type ListResultDtoOfNotificationDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfNotificationGroupDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfNotificationGroupDto = { + items?: Array | null; +}; + +export type ListResultDtoOfNotificationTemplateDto = { + items?: Array | null; +}; + +export type ListResultDtoOfOrganizationUnitDto = { + items?: Array | null; +}; + +export type ListResultDtoOfOssObjectDto = { + items?: Array | null; +}; + +export type ListResultDtoOfPermissionDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfPermissionGroupDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfResourceDto = { + items?: Array | null; +}; + +export type ListResultDtoOfSettingDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfString = { + items?: Array | null; +}; + +export type ListResultDtoOfTenantConnectionStringDto = { + items?: Array | null; +}; + +export type ListResultDtoOfTextDifferenceDto = { + items?: Array | null; +}; + +export type ListResultDtoOfTextTemplateDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfUserData = { + items?: Array | null; +}; + +export type ListResultDtoOfUserFavoriteMenuDto = { + items?: Array | null; +}; + +export type ListResultDtoOfUserFriend = { + items?: Array | null; +}; + +export type ListResultDtoOfUserSubscreNotificationDto = { + items?: Array | null; +}; + +export type ListResultDtoOfWebhookAvailableGroupDto = { + items?: Array | null; +}; + +export type ListResultDtoOfWebhookDefinitionDto = { + items?: Array | null; +}; + +export type ListResultDtoOfWebhookGroupDefinitionDto = { + items?: Array | null; +}; + +export type LocalizableStringDto = { + name?: string | null; + resource?: string | null; +}; + +export type LogDto = { + timeStamp?: string; + level?: LogLevel; + message?: string | null; + fields?: LogFieldDto; + exceptions?: Array | null; +}; + +export type LogExceptionDto = { + depth?: number; + class?: string | null; + message?: string | null; + source?: string | null; + stackTrace?: string | null; + hResult?: number; + helpURL?: string | null; +}; + +export type LogFieldDto = { + id?: string | null; + machineName?: string | null; + environment?: string | null; + application?: string | null; + context?: string | null; + actionId?: string | null; + actionName?: string | null; + requestId?: string | null; + requestPath?: string | null; + connectionId?: string | null; + correlationId?: string | null; + clientId?: string | null; + userId?: string | null; + processId?: number; + threadId?: number; +}; + +export enum LoginResultType { + Success = 1, + InvalidUserNameOrPassword = 2, + NotAllowed = 3, + LockedOut = 4, + RequiresTwoFactor = 5, +} + +export enum LogLevel { + Trace = 0, + Debug = 1, + Information = 2, + Warning = 3, + Error = 4, + Critical = 5, + None = 6, +} + +export type MemberInfo = { + memberType?: MemberTypes; + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; +}; + +export enum MemberTypes { + Constructor = 1, + Event = 2, + Field = 4, + Method = 8, + Property = 16, + TypeInfo = 32, + Custom = 64, + NestedType = 128, + All = 191, +} + +export type MenuCreateDto = { + parentId?: string | null; + name: string; + displayName: string; + description?: string | null; + path: string; + redirect?: string | null; + component: string; + isPublic?: boolean; + meta?: { + [key: string]: unknown; + } | null; + layoutId: string; +}; + +export type MenuDto = { + id?: string; + path?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + redirect?: string | null; + meta?: { + [key: string]: unknown; + } | null; + code?: string | null; + component?: string | null; + framework?: string | null; + parentId?: string | null; + layoutId?: string; + isPublic?: boolean; + startup?: boolean; +}; + +export type MenuSettingDto = { + bgColor?: string | null; + fixed?: boolean; + collapsed?: boolean; + canDrag?: boolean; + show?: boolean; + hidden?: boolean; + split?: boolean; + menuWidth?: number; + mode?: string | null; + type?: string | null; + theme?: string | null; + topMenuAlign?: string | null; + trigger?: string | null; + accordion?: boolean; + closeMixSidebarOnChange?: boolean; + collapsedShowTitle?: boolean; + mixSideTrigger?: string | null; + mixSideFixed?: boolean; +}; + +export type MenuUpdateDto = { + parentId?: string | null; + name: string; + displayName: string; + description?: string | null; + path: string; + redirect?: string | null; + component: string; + isPublic?: boolean; + meta?: { + [key: string]: unknown; + } | null; +}; + +export enum MessageSourceType { + User = 0, + System = 10, +} + +export enum MessageState { + Send = 0, + Read = 1, + ReCall = 10, + Failed = 50, + BackTo = 100, +} + +export enum MessageType { + Text = 0, + Image = 10, + Link = 20, + Video = 30, + Voice = 40, + File = 50, + Notifier = 100, +} + +export enum MethodAttributes { + PrivateScope = 0, + ReuseSlot = 1, + Private = 2, + FamANDAssem = 3, + Assembly = 4, + Family = 5, + FamORAssem = 6, + Public = 7, + MemberAccessMask = 8, + UnmanagedExport = 16, + Static = 32, + Final = 64, + Virtual = 128, + HideBySig = 256, + NewSlot = 512, + VtableLayoutMask = 1024, + CheckAccessOnOverride = 2048, + Abstract = 4096, + SpecialName = 8192, + RTSpecialName = 16384, + PinvokeImpl = 32768, + HasSecurity = 53248, +} + +export type MethodBase = { + memberType?: MemberTypes; + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + attributes?: MethodAttributes; + methodImplementationFlags?: MethodImplAttributes; + callingConvention?: CallingConventions; + readonly isAbstract?: boolean; + readonly isConstructor?: boolean; + readonly isFinal?: boolean; + readonly isHideBySig?: boolean; + readonly isSpecialName?: boolean; + readonly isStatic?: boolean; + readonly isVirtual?: boolean; + readonly isAssembly?: boolean; + readonly isFamily?: boolean; + readonly isFamilyAndAssembly?: boolean; + readonly isFamilyOrAssembly?: boolean; + readonly isPrivate?: boolean; + readonly isPublic?: boolean; + readonly isConstructedGenericMethod?: boolean; + readonly isGenericMethod?: boolean; + readonly isGenericMethodDefinition?: boolean; + readonly containsGenericParameters?: boolean; + methodHandle?: RuntimeMethodHandle; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; +}; + +export enum MethodImplAttributes { + IL = 0, + Managed = 1, + Native = 2, + OPTIL = 3, + CodeTypeMask = 4, + Runtime = 8, + ManagedMask = 16, + Unmanaged = 32, + NoInlining = 64, + ForwardRef = 128, + Synchronized = 256, + NoOptimization = 512, + PreserveSig = 4096, + AggressiveInlining = 65535, +} + +export type MethodInfo = { + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + attributes?: MethodAttributes; + methodImplementationFlags?: MethodImplAttributes; + callingConvention?: CallingConventions; + readonly isAbstract?: boolean; + readonly isConstructor?: boolean; + readonly isFinal?: boolean; + readonly isHideBySig?: boolean; + readonly isSpecialName?: boolean; + readonly isStatic?: boolean; + readonly isVirtual?: boolean; + readonly isAssembly?: boolean; + readonly isFamily?: boolean; + readonly isFamilyAndAssembly?: boolean; + readonly isFamilyOrAssembly?: boolean; + readonly isPrivate?: boolean; + readonly isPublic?: boolean; + readonly isConstructedGenericMethod?: boolean; + readonly isGenericMethod?: boolean; + readonly isGenericMethodDefinition?: boolean; + readonly containsGenericParameters?: boolean; + methodHandle?: RuntimeMethodHandle; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; + memberType?: MemberTypes; + returnParameter?: ParameterInfo; + returnType?: Type; + returnTypeCustomAttributes?: ICustomAttributeProvider; +}; + +export type MethodParameterApiDescriptionModel = { + name?: string | null; + typeAsString?: string | null; + type?: string | null; + typeSimple?: string | null; + isOptional?: boolean; + defaultValue?: unknown; +}; + +export type Module = { + assembly?: Assembly; + readonly fullyQualifiedName?: string | null; + readonly name?: string | null; + readonly mdStreamVersion?: number; + readonly moduleVersionId?: string; + readonly scopeName?: string | null; + moduleHandle?: ModuleHandle; + readonly customAttributes?: Array | null; + readonly metadataToken?: number; +}; + +export type ModuleApiDescriptionModel = { + rootPath?: string | null; + remoteServiceName?: string | null; + controllers?: { + [key: string]: ControllerApiDescriptionModel; + } | null; +}; + +export type ModuleExtensionDto = { + entities?: { + [key: string]: EntityExtensionDto; + } | null; + configuration?: { + [key: string]: unknown; + } | null; +}; + +export type ModuleHandle = { + readonly mdStreamVersion?: number; +}; + +export type MultiTabsSettingDto = { + cache?: boolean; + show?: boolean; + showQuick?: boolean; + canDrag?: boolean; + showRedo?: boolean; + showFold?: boolean; +}; + +export type MultiTenancyInfoDto = { + isEnabled?: boolean; +}; + +export enum MultiTenancySides { + Tenant = 1, + Host = 2, + Both = 3, +} + +export type MyFileShareDto = { + name?: string | null; + path?: string | null; + roles?: Array | null; + users?: Array | null; + mD5?: string | null; + url?: string | null; + accessCount?: number; + maxAccessCount?: number; + expirationTime?: string; +}; + +export type MyFriendAddRequestDto = { + friendId: string; + remarkName?: string | null; +}; + +export type MyFriendCreateDto = { + friendId: string; +}; + +export type NameValue = { + name?: string | null; + value?: string | null; +}; + +export enum NotificationContentType { + Text = 0, + Html = 1, + Markdown = 2, + Json = 3, +} + +export type NotificationData = { + readonly type?: string | null; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type NotificationDefinitionCreateDto = { + template?: string | null; + displayName: string; + description?: string | null; + allowSubscriptionToClients?: boolean; + notificationLifetime?: NotificationLifetime; + notificationType?: NotificationType; + contentType?: NotificationContentType; + providers?: Array | null; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + groupName: string; +}; + +export type NotificationDefinitionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name?: string | null; + isStatic?: boolean; + groupName?: string | null; + displayName?: string | null; + description?: string | null; + allowSubscriptionToClients?: boolean | null; + notificationLifetime?: NotificationLifetime; + notificationType?: NotificationType; + contentType?: NotificationContentType; + providers?: Array | null; + template?: string | null; +}; + +export type NotificationDefinitionUpdateDto = { + template?: string | null; + displayName: string; + description?: string | null; + allowSubscriptionToClients?: boolean; + notificationLifetime?: NotificationLifetime; + notificationType?: NotificationType; + contentType?: NotificationContentType; + providers?: Array | null; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type NotificationDto = { + name?: string | null; + displayName?: string | null; + description?: string | null; + lifetime?: NotificationLifetime; + type?: NotificationType; + contentType?: NotificationContentType; +}; + +export type NotificationGroupDefinitionCreateDto = { + displayName: string; + description?: string | null; + allowSubscriptionToClients?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type NotificationGroupDefinitionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + isStatic?: boolean; + allowSubscriptionToClients?: boolean; +}; + +export type NotificationGroupDefinitionUpdateDto = { + displayName: string; + description?: string | null; + allowSubscriptionToClients?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type NotificationGroupDto = { + name?: string | null; + displayName?: string | null; + notifications?: Array | null; +}; + +export enum NotificationLifetime { + Persistent = 0, + OnlyOne = 1, +} + +export type NotificationMarkReadStateInput = { + idList: Array; + state?: NotificationReadState; +}; + +export enum NotificationReadState { + Read = 0, + UnRead = 1, +} + +export type NotificationSendDto = { + name: string; + data?: { + [key: string]: unknown; + } | null; + culture?: string | null; + toUsers?: Array | null; + severity?: NotificationSeverity; +}; + +export enum NotificationSeverity { + Success = 0, + Info = 10, + Warn = 20, + Error = 30, + Fatal = 40, +} + +export type NotificationTemplateDto = { + name?: string | null; + description?: string | null; + title?: string | null; + content?: string | null; + culture?: string | null; +}; + +export type NotificationTemplateSendDto = { + name: string; + data?: { + [key: string]: unknown; + } | null; + culture?: string | null; + toUsers?: Array | null; + severity?: NotificationSeverity; +}; + +export enum NotificationType { + Application = 0, + System = 10, + User = 20, + ServiceCallback = 30, +} + +export type ObjectExtensionsDto = { + modules?: { + [key: string]: ModuleExtensionDto; + } | null; + enums?: { + [key: string]: ExtensionEnumDto; + } | null; +}; + +export type OkObjectResult = { + value?: unknown; + formatters?: Array | null; + contentTypes?: Array | null; + declaredType?: Type; + statusCode?: number | null; +}; + +export type OpenIddictApplicationCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + clientSecret?: string | null; + clientType?: string | null; + consentType?: string | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + endpoints?: Array | null; + grantTypes?: Array | null; + responseTypes?: Array | null; + scopes?: Array | null; + postLogoutRedirectUris?: Array | null; + properties?: { + [key: string]: string; + } | null; + redirectUris?: Array | null; + requirements?: Array | null; + applicationType?: string | null; + clientUri?: string | null; + logoUri?: string | null; + clientId: string; +}; + +export type OpenIddictApplicationDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + clientId?: string | null; + clientType?: string | null; + consentType?: string | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + endpoints?: Array | null; + grantTypes?: Array | null; + responseTypes?: Array | null; + scopes?: Array | null; + postLogoutRedirectUris?: Array | null; + properties?: { + [key: string]: string; + } | null; + redirectUris?: Array | null; + requirements?: Array | null; + applicationType?: string | null; + clientUri?: string | null; + logoUri?: string | null; + settings?: string | null; + jsonWebKeySet?: string | null; + concurrencyStamp?: string | null; +}; + +export type OpenIddictApplicationUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + clientSecret?: string | null; + clientType?: string | null; + consentType?: string | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + endpoints?: Array | null; + grantTypes?: Array | null; + responseTypes?: Array | null; + scopes?: Array | null; + postLogoutRedirectUris?: Array | null; + properties?: { + [key: string]: string; + } | null; + redirectUris?: Array | null; + requirements?: Array | null; + applicationType?: string | null; + clientUri?: string | null; + logoUri?: string | null; + concurrencyStamp?: string | null; +}; + +export type OpenIddictAuthorizationDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + concurrencyStamp?: string | null; + applicationId?: string | null; + creationDate?: string | null; + properties?: { + [key: string]: string; + } | null; + scopes?: Array | null; + status?: string | null; + subject?: string | null; + type?: string | null; +}; + +export type OpenIddictScopeCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + description?: string | null; + descriptions?: { + [key: string]: string; + } | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + name: string; + properties?: { + [key: string]: string; + } | null; + resources?: Array | null; +}; + +export type OpenIddictScopeDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + concurrencyStamp?: string | null; + description?: string | null; + descriptions?: { + [key: string]: string; + } | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + name?: string | null; + properties?: { + [key: string]: string; + } | null; + resources?: Array | null; +}; + +export type OpenIddictScopeUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + description?: string | null; + descriptions?: { + [key: string]: string; + } | null; + displayName?: string | null; + displayNames?: { + [key: string]: string; + } | null; + name: string; + properties?: { + [key: string]: string; + } | null; + resources?: Array | null; + concurrencyStamp?: string | null; +}; + +export type OpenIddictTokenDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + concurrencyStamp?: string | null; + applicationId?: string | null; + authorizationId?: string | null; + creationDate?: string | null; + expirationDate?: string | null; + payload?: string | null; + properties?: string | null; + redemptionDate?: string | null; + referenceId?: string | null; + status?: string | null; + subject?: string | null; + type?: string | null; +}; + +export type OptionDto = { + name?: string | null; + value?: string | null; +}; + +export type OrganizationUnitAddRoleDto = { + roleIds: Array; +}; + +export type OrganizationUnitAddUserDto = { + userIds: Array; +}; + +export type OrganizationUnitCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + displayName: string; + parentId?: string | null; +}; + +export type OrganizationUnitDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + parentId?: string | null; + code?: string | null; + displayName?: string | null; +}; + +export type OrganizationUnitEntityRuleCreateDto = { + isEnabled?: boolean; + operation: DataAccessOperation; + filterGroup: DataAccessFilterGroup; + allowProperties?: Array | null; + entityTypeId: string; + orgId: string; + orgCode: string; +}; + +export type OrganizationUnitEntityRuleDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + tenantId?: string | null; + isEnabled?: boolean; + operation?: DataAccessOperation; + filterGroup?: DataAccessFilterGroup; + entityTypeId?: string; + entityTypeFullName?: string | null; + allowProperties?: Array | null; + orgId?: string; + orgCode?: string | null; +}; + +export type OrganizationUnitEntityRuleUpdateDto = { + isEnabled?: boolean; + operation: DataAccessOperation; + filterGroup: DataAccessFilterGroup; + allowProperties?: Array | null; +}; + +export type OrganizationUnitMoveDto = { + parentId?: string | null; +}; + +export type OrganizationUnitUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + displayName?: string | null; +}; + +export type OssContainerDto = { + name?: string | null; + size?: number; + creationDate?: string; + lastModifiedDate?: string | null; + metadata?: { + [key: string]: string; + } | null; +}; + +export type OssContainersResultDto = { + prefix?: string | null; + marker?: string | null; + nextMarker?: string | null; + maxKeys?: number; + containers?: Array | null; +}; + +export type OssObjectDto = { + isFolder?: boolean; + path?: string | null; + name?: string | null; + size?: number; + mD5?: string | null; + creationDate?: string | null; + lastModifiedDate?: string | null; + metadata?: { + [key: string]: string; + } | null; +}; + +export type OssObjectsResultDto = { + bucket?: string | null; + prefix?: string | null; + delimiter?: string | null; + marker?: string | null; + nextMarker?: string | null; + maxKeys?: number; + objects?: Array | null; +}; + +export type PackageBlobDto = { + id?: number; + creationTime?: string; + creatorId?: string | null; + name?: string | null; + url?: string | null; + size?: number | null; + summary?: string | null; + createdAt?: string; + updatedAt?: string | null; + license?: string | null; + authors?: string | null; + shA256?: string | null; + contentType?: string | null; + downloadCount?: number; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type PackageCreateDto = { + note: string; + description?: string | null; + forceUpdate?: boolean; + authors?: string | null; + level?: PackageLevel; + name: string; + version: string; +}; + +export type PackageDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + concurrencyStamp?: string | null; + name?: string | null; + note?: string | null; + version?: string | null; + description?: string | null; + forceUpdate?: boolean; + authors?: string | null; + level?: PackageLevel; + blobs?: Array | null; +}; + +export enum PackageLevel { + Resource = 0, + Full = 1, + None = -1, +} + +export type PackageUpdateDto = { + note: string; + description?: string | null; + forceUpdate?: boolean; + authors?: string | null; + level?: PackageLevel; + concurrencyStamp?: string | null; +}; + +export type PagedListOfWorkflowBlueprintModel = { + items?: Array | null; + page?: number | null; + pageSize?: number | null; + totalCount?: number; +}; + +export type PagedListOfWorkflowBlueprintSummaryModel = { + items?: Array | null; + page?: number | null; + pageSize?: number | null; + totalCount?: number; +}; + +export type PagedListOfWorkflowDefinitionSummaryModel = { + items?: Array | null; + page?: number | null; + pageSize?: number | null; + totalCount?: number; +}; + +export type PagedListOfWorkflowExecutionLogRecord = { + items?: Array | null; + page?: number | null; + pageSize?: number | null; + totalCount?: number; +}; + +export type PagedListOfWorkflowInstanceSummaryModel = { + items?: Array | null; + page?: number | null; + pageSize?: number | null; + totalCount?: number; +}; + +export type PagedResultDtoOfAuditLogDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfBackgroundJobInfoDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfBackgroundJobLogDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfChatMessage = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfDataDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfEditionDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfEntityChangeDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfEntityTypeInfoDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfFeedbackDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfGroup = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfGroupUserCard = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfIdentityClaimTypeDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfIdentityRoleDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfIdentitySessionDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfIdentitySessionDto_1 = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfIdentityUserDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfLayoutDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfLogDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfMenuDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfOpenIddictApplicationDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfOpenIddictAuthorizationDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfOpenIddictScopeDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfOpenIddictTokenDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfOrganizationUnitDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfPackageDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfSecurityLogDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfTenantDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfUserFriend = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfUserNotificationDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfUserSubscreNotificationDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfWebhookSendRecordDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PagedResultDtoOfWebhookSubscriptionDto = { + items?: Array | null; + totalCount?: number; +}; + +export type ParameterApiDescriptionModel = { + nameOnMethod?: string | null; + name?: string | null; + jsonName?: string | null; + type?: string | null; + typeSimple?: string | null; + isOptional?: boolean; + defaultValue?: unknown; + constraintTypes?: Array | null; + bindingSourceId?: string | null; + descriptorName?: string | null; +}; + +export enum ParameterAttributes { + None = 0, + In = 1, + Out = 2, + Lcid = 4, + Retval = 8, + Optional = 16, + HasDefault = 4096, + HasFieldMarshal = 8192, + Reserved3 = 16384, + Reserved4 = 32768, + ReservedMask = 61440, +} + +export type ParameterInfo = { + attributes?: ParameterAttributes; + member?: MemberInfo; + readonly name?: string | null; + parameterType?: Type; + readonly position?: number; + readonly isIn?: boolean; + readonly isLcid?: boolean; + readonly isOptional?: boolean; + readonly isOut?: boolean; + readonly isRetval?: boolean; + readonly defaultValue?: unknown; + readonly rawDefaultValue?: unknown; + readonly hasDefaultValue?: boolean; + readonly customAttributes?: Array | null; + readonly metadataToken?: number; +}; + +export type ParamterOptionDto = { + key?: string | null; + value?: unknown; +}; + +export type PermissionDefinitionCreateDto = { + displayName: string; + parentName?: string | null; + isEnabled?: boolean; + multiTenancySide?: MultiTenancySides; + providers?: Array | null; + stateCheckers?: string | null; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + groupName: string; +}; + +export type PermissionDefinitionDto = { + name?: string | null; + parentName?: string | null; + displayName?: string | null; + groupName?: string | null; + isEnabled?: boolean; + isStatic?: boolean; + multiTenancySide?: MultiTenancySides; + providers?: Array | null; + stateCheckers?: string | null; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type PermissionDefinitionUpdateDto = { + displayName: string; + parentName?: string | null; + isEnabled?: boolean; + multiTenancySide?: MultiTenancySides; + providers?: Array | null; + stateCheckers?: string | null; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type PermissionGrantInfoDto = { + name?: string | null; + displayName?: string | null; + parentName?: string | null; + isGranted?: boolean; + allowedProviders?: Array | null; + grantedProviders?: Array | null; +}; + +export type PermissionGroupDefinitionCreateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type PermissionGroupDefinitionDto = { + name?: string | null; + displayName?: string | null; + isStatic?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type PermissionGroupDefinitionUpdateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type PermissionGroupDto = { + name?: string | null; + displayName?: string | null; + displayNameKey?: string | null; + displayNameResource?: string | null; + permissions?: Array | null; +}; + +export type PhoneRegisterDto = { + phoneNumber: string; + name?: string | null; + userName?: string | null; + emailAddress?: string | null; + password: string; + code: string; +}; + +export type PhoneResetPasswordDto = { + phoneNumber: string; + newPassword: string; + code: string; +}; + +export type ProblemDetails = { + type?: string | null; + title?: string | null; + status?: number | null; + detail?: string | null; + instance?: string | null; + [key: string]: (unknown | string | number) | undefined; +}; + +export type ProfileDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + userName?: string | null; + email?: string | null; + name?: string | null; + surname?: string | null; + phoneNumber?: string | null; + isExternal?: boolean; + hasPassword?: boolean; + concurrencyStamp?: string | null; +}; + +export type ProjectConfigDto = { + permissionCacheType?: number; + showSettingButton?: boolean; + showDarkModeToggle?: boolean; + settingButtonPosition?: string | null; + permissionMode?: string | null; + sessionTimeoutProcessing?: number; + grayMode?: boolean; + colorWeak?: boolean; + themeColor?: string | null; + fullContent?: boolean; + contentMode?: string | null; + showLogo?: boolean; + showFooter?: boolean; + headerSetting?: HeaderSettingDto; + menuSetting?: MenuSettingDto; + multiTabsSetting?: MultiTabsSettingDto; + transitionSetting?: TransitionSettingDto; + openKeepAlive?: boolean; + lockTime?: number; + showBreadCrumb?: boolean; + showBreadCrumbIcon?: boolean; + useErrorHandle?: boolean; + useOpenBackTop?: boolean; + canEmbedIFramePage?: boolean; + closeMessageOnSwitch?: boolean; + removeAllHttpPending?: boolean; +}; + +export type PropertyApiDescriptionModel = { + name?: string | null; + jsonName?: string | null; + type?: string | null; + typeSimple?: string | null; + isRequired?: boolean; + minLength?: number | null; + maxLength?: number | null; + minimum?: string | null; + maximum?: string | null; + regex?: string | null; +}; + +export enum PropertyAttributes { + None = 0, + SpecialName = 512, + RTSpecialName = 1024, + HasDefault = 4096, + Reserved2 = 8192, + Reserved3 = 16384, + Reserved4 = 32768, + ReservedMask = 62464, +} + +export type PropertyInfo = { + readonly name?: string | null; + declaringType?: Type; + reflectedType?: Type; + module?: Module; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + memberType?: MemberTypes; + propertyType?: Type; + attributes?: PropertyAttributes; + readonly isSpecialName?: boolean; + readonly canRead?: boolean; + readonly canWrite?: boolean; + getMethod?: MethodInfo; + setMethod?: MethodInfo; +}; + +export type ProviderInfoDto = { + providerName?: string | null; + providerKey?: string | null; +}; + +export type RegisterDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + userName: string; + emailAddress: string; + password: string; + appName: string; +}; + +export type RemoteServiceErrorInfo = { + code?: string | null; + message?: string | null; + details?: string | null; + data?: { + [key: string]: unknown; + } | null; + validationErrors?: Array | null; +}; + +export type RemoteServiceErrorResponse = { + error?: RemoteServiceErrorInfo; +}; + +export type RemoteServiceValidationErrorInfo = { + message?: string | null; + members?: Array | null; +}; + +export type ResetPasswordDto = { + userId?: string; + resetToken: string; + password: string; +}; + +export type ResourceCreateDto = { + enable?: boolean; + displayName?: string | null; + description?: string | null; + defaultCultureName?: string | null; + name: string; +}; + +export type ResourceDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + enable?: boolean; + name?: string | null; + displayName?: string | null; + description?: string | null; + defaultCultureName?: string | null; +}; + +export type ResourceDto_1 = { + name?: string | null; + displayName?: string | null; + description?: string | null; +}; + +export type ResourceUpdateDto = { + enable?: boolean; + displayName?: string | null; + description?: string | null; + defaultCultureName?: string | null; +}; + +export type RetryWorkflowRequest = { + runImmediately?: boolean; +}; + +export type ReturnValueApiDescriptionModel = { + type?: string | null; + typeSimple?: string | null; +}; + +export type RoleEntityRuleCreateDto = { + isEnabled?: boolean; + operation: DataAccessOperation; + filterGroup: DataAccessFilterGroup; + allowProperties?: Array | null; + entityTypeId: string; + roleId: string; + roleName: string; +}; + +export type RoleEntityRuleDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + tenantId?: string | null; + isEnabled?: boolean; + operation?: DataAccessOperation; + filterGroup?: DataAccessFilterGroup; + entityTypeId?: string; + entityTypeFullName?: string | null; + allowProperties?: Array | null; + roleId?: string; + roleName?: string | null; +}; + +export type RoleEntityRuleUpdateDto = { + isEnabled?: boolean; + operation: DataAccessOperation; + filterGroup: DataAccessFilterGroup; + allowProperties?: Array | null; +}; + +export type RoleMenuInput = { + roleName: string; + menuIds: Array; +}; + +export type RoleMenuStartupInput = { + roleName: string; +}; + +export type RuntimeFieldHandle = { + value?: IntPtr; +}; + +export type RuntimeMethodHandle = { + value?: IntPtr; +}; + +export type RuntimeSelectListContextHolder = { + providerTypeName?: string | null; + context?: unknown; +}; + +export type RuntimeTypeHandle = { + value?: IntPtr; +}; + +export type SaveWebhookDefinitionRequest = { + id?: string | null; + path: string; + name: string; + description?: string | null; + payloadTypeName?: string | null; + isEnabled?: boolean; +}; + +export type SaveWorkflowDefinitionRequest = { + workflowDefinitionId?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + tag?: string | null; + channel?: string | null; + variables?: string | null; + contextOptions?: WorkflowContextOptions; + isSingleton?: boolean; + persistenceBehavior?: WorkflowPersistenceBehavior; + deleteCompletedInstances?: boolean; + publish?: boolean; + activities?: Array | null; + connections?: Array | null; + customAttributes?: string | null; +}; + +export type ScheduledActivity = { + activityId?: string | null; + input?: unknown; +}; + +export type SecurityLogDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + applicationName?: string | null; + identity?: string | null; + action?: string | null; + userId?: string | null; + userName?: string | null; + tenantName?: string | null; + clientId?: string | null; + correlationId?: string | null; + clientIpAddress?: string | null; + browserInfo?: string | null; + creationTime?: string; +}; + +export enum SecurityRuleSet { + None = 0, + Level1 = 1, + Level2 = 2, +} + +export type SendChangePhoneNumberCodeInput = { + newPhoneNumber: string; +}; + +export type SendEmailConfirmCodeDto = { + email: string; + appName: string; + returnUrl?: string | null; + returnUrlHash?: string | null; +}; + +export type SendEmailSigninCodeDto = { + emailAddress: string; +}; + +export type SendPasswordResetCodeDto = { + email: string; + appName: string; + returnUrl?: string | null; + returnUrlHash?: string | null; +}; + +export type SendPhoneRegisterCodeDto = { + phoneNumber: string; +}; + +export type SendPhoneResetPasswordCodeDto = { + phoneNumber: string; +}; + +export type SendPhoneSigninCodeDto = { + phoneNumber: string; +}; + +export type SendTestEmailInput = { + emailAddress: string; +}; + +export type SetTextInput = { + resourceName: string; + key: string; + cultureName: string; + value?: string | null; +}; + +export type SettingDefinitionCreateDto = { + displayName: string; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + providers?: Array | null; + isInherited?: boolean; + isEncrypted?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type SettingDefinitionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + providers?: Array | null; + isInherited?: boolean; + isEncrypted?: boolean; + isStatic?: boolean; +}; + +export type SettingDefinitionUpdateDto = { + displayName: string; + description?: string | null; + defaultValue?: string | null; + isVisibleToClients?: boolean; + providers?: Array | null; + isInherited?: boolean; + isEncrypted?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type SettingDetailsDto = { + name?: string | null; + displayName?: string | null; + description?: string | null; + value?: string | null; + defaultValue?: string | null; + isEncrypted?: boolean; + valueType?: ValueType_1; + slot?: string | null; + options?: Array | null; + providers?: Array | null; + requiredFeatures?: Array | null; + requiredPermissions?: Array | null; +}; + +export type SettingDto = { + displayName?: string | null; + description?: string | null; + details?: Array | null; +}; + +export type SettingGroupDto = { + displayName?: string | null; + description?: string | null; + settings?: Array | null; +}; + +export type SettingGroupResult = { + readonly items?: Array | null; +}; + +export enum Sex { + Male = 0, + Female = 1, + Other = 2, +} + +export type SimpleException = { + type?: Type; + message?: string | null; + stackTrace?: string | null; + innerException?: SimpleException; + data?: { + [key: string]: unknown; + } | null; +}; + +export enum SortBy { + Ascending = 0, + Descending = 1, +} + +export type StructLayoutAttribute = { + readonly typeId?: unknown; + value?: LayoutKind; +}; + +export type SubscriptionsGetByNameDto = { + name: string; +}; + +export type TenantConnectionStringCreateOrUpdate = { + name: string; + value: string; +}; + +export type TenantConnectionStringDto = { + name?: string | null; + value?: string | null; +}; + +export type TenantCreateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + isActive?: boolean; + editionId?: string | null; + enableTime?: string | null; + disableTime?: string | null; + adminEmailAddress: string; + adminPassword: string; + useSharedDatabase?: boolean; + defaultConnectionString?: string | null; + connectionStrings?: { + [key: string]: string; + } | null; +}; + +export type TenantDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + name?: string | null; + normalizedName?: string | null; + editionId?: string | null; + editionName?: string | null; + isActive?: boolean; + enableTime?: string | null; + disableTime?: string | null; + concurrencyStamp?: string | null; +}; + +export type TenantUpdateDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name: string; + isActive?: boolean; + editionId?: string | null; + enableTime?: string | null; + disableTime?: string | null; + concurrencyStamp?: string | null; +}; + +export type TextDifferenceDto = { + cultureName?: string | null; + key?: string | null; + value?: string | null; + resourceName?: string | null; + targetCultureName?: string | null; + targetValue?: string | null; +}; + +export type TextDto = { + key?: string | null; + value?: string | null; + cultureName?: string | null; + resourceName?: string | null; +}; + +export type TextTemplateContentDto = { + name?: string | null; + content?: string | null; + culture?: string | null; +}; + +export type TextTemplateContentUpdateDto = { + culture?: string | null; + content: string; +}; + +export type TextTemplateDefinitionCreateDto = { + displayName: string; + defaultCultureName?: string | null; + localizationResourceName?: string | null; + isInlineLocalized?: boolean; + isLayout?: boolean; + layout?: string | null; + renderEngine?: string | null; + name: string; +}; + +export type TextTemplateDefinitionDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + name?: string | null; + displayName?: string | null; + defaultCultureName?: string | null; + localizationResourceName?: string | null; + renderEngine?: string | null; + isInlineLocalized?: boolean; + isLayout?: boolean; + layout?: string | null; + isStatic?: boolean; + concurrencyStamp?: string | null; +}; + +export type TextTemplateDefinitionUpdateDto = { + displayName: string; + defaultCultureName?: string | null; + localizationResourceName?: string | null; + isInlineLocalized?: boolean; + isLayout?: boolean; + layout?: string | null; + renderEngine?: string | null; + concurrencyStamp?: string | null; +}; + +export type TextTemplateRestoreInput = { + culture?: string | null; +}; + +export type ThemeSettingDto = { + darkMode?: string | null; + projectConfig?: ProjectConfigDto; + beforeMiniInfo?: BeforeMiniStateDto; +}; + +export type TimeSpan = { + ticks?: number; + readonly days?: number; + readonly hours?: number; + readonly milliseconds?: number; + readonly microseconds?: number; + readonly nanoseconds?: number; + readonly minutes?: number; + readonly seconds?: number; + readonly totalDays?: number; + readonly totalHours?: number; + readonly totalMilliseconds?: number; + readonly totalMicroseconds?: number; + readonly totalNanoseconds?: number; + readonly totalMinutes?: number; + readonly totalSeconds?: number; +}; + +export type TimeZone = { + iana?: IanaTimeZone; + windows?: WindowsTimeZone; +}; + +export type TimingDto = { + timeZone?: TimeZone; +}; + +export type TransitionSettingDto = { + enable?: boolean; + basicTransition?: string | null; + openPageLoading?: boolean; + openNProgress?: boolean; +}; + +export type TriggerWorkflowsRequestModel = { + activityType?: string | null; + bookmark?: IBookmark; + correlationId?: string | null; + workflowInstanceId?: string | null; + contextId?: string | null; + input?: unknown; + dispatch?: boolean; +}; + +export type TwoFactorEnabledDto = { + enabled?: boolean; +}; + +export type TwoFactorEnabledDto_1 = { + enabled?: boolean; +}; + +export type Type = { + readonly name?: string | null; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + readonly isInterface?: boolean; + memberType?: MemberTypes; + readonly namespace?: string | null; + readonly assemblyQualifiedName?: string | null; + readonly fullName?: string | null; + assembly?: Assembly; + module?: Module; + readonly isNested?: boolean; + declaringType?: Type; + declaringMethod?: MethodBase; + reflectedType?: Type; + underlyingSystemType?: Type; + readonly isTypeDefinition?: boolean; + readonly isArray?: boolean; + readonly isByRef?: boolean; + readonly isPointer?: boolean; + readonly isConstructedGenericType?: boolean; + readonly isGenericParameter?: boolean; + readonly isGenericTypeParameter?: boolean; + readonly isGenericMethodParameter?: boolean; + readonly isGenericType?: boolean; + readonly isGenericTypeDefinition?: boolean; + readonly isSZArray?: boolean; + readonly isVariableBoundArray?: boolean; + readonly isByRefLike?: boolean; + readonly isFunctionPointer?: boolean; + readonly isUnmanagedFunctionPointer?: boolean; + readonly hasElementType?: boolean; + readonly genericTypeArguments?: Array | null; + readonly genericParameterPosition?: number; + genericParameterAttributes?: GenericParameterAttributes; + attributes?: TypeAttributes; + readonly isAbstract?: boolean; + readonly isImport?: boolean; + readonly isSealed?: boolean; + readonly isSpecialName?: boolean; + readonly isClass?: boolean; + readonly isNestedAssembly?: boolean; + readonly isNestedFamANDAssem?: boolean; + readonly isNestedFamily?: boolean; + readonly isNestedFamORAssem?: boolean; + readonly isNestedPrivate?: boolean; + readonly isNestedPublic?: boolean; + readonly isNotPublic?: boolean; + readonly isPublic?: boolean; + readonly isAutoLayout?: boolean; + readonly isExplicitLayout?: boolean; + readonly isLayoutSequential?: boolean; + readonly isAnsiClass?: boolean; + readonly isAutoClass?: boolean; + readonly isUnicodeClass?: boolean; + readonly isCOMObject?: boolean; + readonly isContextful?: boolean; + readonly isEnum?: boolean; + readonly isMarshalByRef?: boolean; + readonly isPrimitive?: boolean; + readonly isValueType?: boolean; + readonly isSignatureType?: boolean; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; + structLayoutAttribute?: StructLayoutAttribute; + typeInitializer?: ConstructorInfo; + typeHandle?: RuntimeTypeHandle; + readonly guid?: string; + baseType?: Type; + /** + * @deprecated + */ + readonly isSerializable?: boolean; + readonly containsGenericParameters?: boolean; + readonly isVisible?: boolean; +}; + +export type TypeApiDescriptionModel = { + baseType?: string | null; + isEnum?: boolean; + enumNames?: Array | null; + enumValues?: Array | null; + genericArguments?: Array | null; + properties?: Array | null; +}; + +export enum TypeAttributes { + NotPublic = 0, + AutoLayout = 1, + AnsiClass = 2, + Class = 3, + Public = 4, + NestedPublic = 5, + NestedPrivate = 6, + NestedFamily = 7, + NestedAssembly = 8, + NestedFamANDAssem = 16, + VisibilityMask = 24, + NestedFamORAssem = 32, + SequentialLayout = 128, + ExplicitLayout = 256, + LayoutMask = 1024, + Interface = 2048, + ClassSemanticsMask = 4096, + Abstract = 8192, + Sealed = 16384, + SpecialName = 65536, + RTSpecialName = 131072, + Import = 196608, + Serializable = 262144, + WindowsRuntime = 264192, + UnicodeClass = 1048576, + AutoClass = 12582912, +} + +export type TypeInfo = { + readonly name?: string | null; + readonly customAttributes?: Array | null; + readonly isCollectible?: boolean; + readonly metadataToken?: number; + readonly isInterface?: boolean; + memberType?: MemberTypes; + readonly namespace?: string | null; + readonly assemblyQualifiedName?: string | null; + readonly fullName?: string | null; + assembly?: Assembly; + module?: Module; + readonly isNested?: boolean; + declaringType?: Type; + declaringMethod?: MethodBase; + reflectedType?: Type; + underlyingSystemType?: Type; + readonly isTypeDefinition?: boolean; + readonly isArray?: boolean; + readonly isByRef?: boolean; + readonly isPointer?: boolean; + readonly isConstructedGenericType?: boolean; + readonly isGenericParameter?: boolean; + readonly isGenericTypeParameter?: boolean; + readonly isGenericMethodParameter?: boolean; + readonly isGenericType?: boolean; + readonly isGenericTypeDefinition?: boolean; + readonly isSZArray?: boolean; + readonly isVariableBoundArray?: boolean; + readonly isByRefLike?: boolean; + readonly isFunctionPointer?: boolean; + readonly isUnmanagedFunctionPointer?: boolean; + readonly hasElementType?: boolean; + readonly genericTypeArguments?: Array | null; + readonly genericParameterPosition?: number; + genericParameterAttributes?: GenericParameterAttributes; + attributes?: TypeAttributes; + readonly isAbstract?: boolean; + readonly isImport?: boolean; + readonly isSealed?: boolean; + readonly isSpecialName?: boolean; + readonly isClass?: boolean; + readonly isNestedAssembly?: boolean; + readonly isNestedFamANDAssem?: boolean; + readonly isNestedFamily?: boolean; + readonly isNestedFamORAssem?: boolean; + readonly isNestedPrivate?: boolean; + readonly isNestedPublic?: boolean; + readonly isNotPublic?: boolean; + readonly isPublic?: boolean; + readonly isAutoLayout?: boolean; + readonly isExplicitLayout?: boolean; + readonly isLayoutSequential?: boolean; + readonly isAnsiClass?: boolean; + readonly isAutoClass?: boolean; + readonly isUnicodeClass?: boolean; + readonly isCOMObject?: boolean; + readonly isContextful?: boolean; + readonly isEnum?: boolean; + readonly isMarshalByRef?: boolean; + readonly isPrimitive?: boolean; + readonly isValueType?: boolean; + readonly isSignatureType?: boolean; + readonly isSecurityCritical?: boolean; + readonly isSecuritySafeCritical?: boolean; + readonly isSecurityTransparent?: boolean; + structLayoutAttribute?: StructLayoutAttribute; + typeInitializer?: ConstructorInfo; + typeHandle?: RuntimeTypeHandle; + readonly guid?: string; + baseType?: Type; + /** + * @deprecated + */ + readonly isSerializable?: boolean; + readonly containsGenericParameters?: boolean; + readonly isVisible?: boolean; + readonly genericTypeParameters?: Array | null; + readonly declaredConstructors?: Array | null; + readonly declaredEvents?: Array | null; + readonly declaredFields?: Array | null; + readonly declaredMembers?: Array | null; + readonly declaredMethods?: Array | null; + readonly declaredNestedTypes?: Array | null; + readonly declaredProperties?: Array | null; + readonly implementedInterfaces?: Array | null; +}; + +export type UpdateFeatureDto = { + name?: string | null; + value?: string | null; +}; + +export type UpdateFeaturesDto = { + features?: Array | null; +}; + +export type UpdatePermissionDto = { + name?: string | null; + isGranted?: boolean; +}; + +export type UpdatePermissionsDto = { + permissions?: Array | null; +}; + +export type UpdateProfileDto = { + readonly extraProperties?: { + [key: string]: unknown; + } | null; + userName?: string | null; + email?: string | null; + name?: string | null; + surname?: string | null; + phoneNumber?: string | null; + concurrencyStamp?: string | null; +}; + +export type UpdateSettingDto = { + name: string; + value?: string | null; +}; + +export type UpdateSettingsDto = { + settings?: Array | null; +}; + +export type UserData = { + id?: string; + tenantId?: string | null; + userName?: string | null; + name?: string | null; + surname?: string | null; + isActive?: boolean; + email?: string | null; + emailConfirmed?: boolean; + phoneNumber?: string | null; + phoneNumberConfirmed?: boolean; + readonly extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type UserFavoriteMenuCreateDto = { + menuId: string; + color?: string | null; + aliasName?: string | null; + icon?: string | null; + framework: string; +}; + +export type UserFavoriteMenuDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + lastModificationTime?: string | null; + lastModifierId?: string | null; + menuId?: string; + userId?: string; + aliasName?: string | null; + color?: string | null; + framework?: string | null; + name?: string | null; + displayName?: string | null; + path?: string | null; + icon?: string | null; +}; + +export type UserFavoriteMenuUpdateDto = { + menuId: string; + color?: string | null; + aliasName?: string | null; + icon?: string | null; + concurrencyStamp?: string | null; +}; + +export type UserFriend = { + tenantId?: string | null; + userId?: string; + userName?: string | null; + avatarUrl?: string | null; + nickName?: string | null; + age?: number; + sex?: Sex; + sign?: string | null; + description?: string | null; + birthday?: string | null; + online?: boolean; + friendId?: string; + black?: boolean; + specialFocus?: boolean; + dontDisturb?: boolean; + remarkName?: string | null; +}; + +export type UserIdentifier = { + userId?: string; + userName?: string | null; +}; + +export type UserJoinGroupDto = { + groupId: number; + joinInfo: string; +}; + +export type UserLoginInfo = { + userNameOrEmailAddress: string; + password: string; + rememberMe?: boolean; +}; + +export type UserMenuInput = { + userId: string; + menuIds: Array; +}; + +export type UserMenuStartupInput = { + userId?: string; +}; + +export type UserNotificationDto = { + name?: string | null; + id?: string | null; + data?: NotificationData; + creationTime?: string; + type?: NotificationType; + lifetime?: NotificationLifetime; + severity?: NotificationSeverity; + state?: NotificationReadState; + contentType?: NotificationContentType; +}; + +export type UserSubscreNotificationDto = { + name?: string | null; +}; + +export type UserSubscriptionsResult = { + isSubscribed?: boolean; +}; + +export enum ValueType { + String = 0, + Numeic = 1, + Boolean = 2, + Date = 3, + DateTime = 4, + Array = 5, + Object = 6, +} + +export enum ValueType_1 { + String = 0, + Number = 1, + Boolean = 2, + Date = 3, + Array = 4, + Option = 5, + Object = 10, +} + +export type Variables = { + readonly data?: { + [key: string]: unknown; + } | null; +}; + +export type VerifyAuthenticatorCodeInput = { + authenticatorCode: string; +}; + +export type VerifyPasswordResetTokenInput = { + userId?: string; + resetToken: string; +}; + +export type VersionOptions = { + readonly isLatest?: boolean; + readonly isLatestOrPublished?: boolean; + readonly isPublished?: boolean; + readonly isDraft?: boolean; + readonly allVersions?: boolean; + readonly version?: number; +}; + +export type WebhookAvailableDto = { + name?: string | null; + displayName?: string | null; + description?: string | null; +}; + +export type WebhookAvailableGroupDto = { + name?: string | null; + displayName?: string | null; + webhooks?: Array | null; +}; + +export type WebhookDefinition = { + id?: string | null; + tenantId?: string | null; + name?: string | null; + path?: string | null; + description?: string | null; + payloadTypeName?: string | null; + isEnabled?: boolean; +}; + +export type WebhookDefinitionCreateDto = { + displayName: string; + description?: string | null; + isEnabled?: boolean; + requiredFeatures?: Array | null; + extraProperties?: { + [key: string]: unknown; + } | null; + groupName: string; + name: string; +}; + +export type WebhookDefinitionDto = { + groupName?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + isEnabled?: boolean; + isStatic?: boolean; + requiredFeatures?: Array | null; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type WebhookDefinitionUpdateDto = { + displayName: string; + description?: string | null; + isEnabled?: boolean; + requiredFeatures?: Array | null; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type WebhookEventRecordDto = { + id?: string; + tenantId?: string | null; + webhookName?: string | null; + data?: string | null; + creationTime?: string; +}; + +export type WebhookGroupDefinitionCreateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + name: string; +}; + +export type WebhookGroupDefinitionDto = { + name?: string | null; + displayName?: string | null; + isStatic?: boolean; + extraProperties?: { + [key: string]: unknown; + } | null; +}; + +export type WebhookGroupDefinitionUpdateDto = { + displayName: string; + extraProperties?: { + [key: string]: unknown; + } | null; + concurrencyStamp?: string | null; +}; + +export type WebhookPublishInput = { + webhookName: string; + data: string; + sendExactSameData?: boolean; + header?: WebhooksHeaderInput; + tenantIds?: Array | null; +}; + +export type WebhookSendRecordDeleteManyInput = { + recordIds?: Array | null; +}; + +export type WebhookSendRecordDto = { + id?: string; + tenantId?: string | null; + webhookEventId?: string; + webhookSubscriptionId?: string; + response?: string | null; + responseStatusCode?: HttpStatusCode; + creationTime?: string; + lastModificationTime?: string | null; + sendExactSameData?: boolean; + requestHeaders?: { + [key: string]: string; + } | null; + responseHeaders?: { + [key: string]: string; + } | null; + webhookEvent?: WebhookEventRecordDto; +}; + +export type WebhookSendRecordResendManyInput = { + recordIds?: Array | null; +}; + +export type WebhooksHeaderInput = { + useOnlyGivenHeaders?: boolean; + headers?: { + [key: string]: string; + } | null; +}; + +export type WebhookSubscriptionCreateInput = { + webhookUri: string; + secret?: string | null; + description?: string | null; + timeoutDuration?: number | null; + isActive?: boolean; + tenantId?: string | null; + webhooks?: Array | null; + headers?: { + [key: string]: string; + } | null; +}; + +export type WebhookSubscriptionDeleteManyInput = { + recordIds?: Array | null; +}; + +export type WebhookSubscriptionDto = { + id?: string; + creationTime?: string; + creatorId?: string | null; + tenantId?: string | null; + webhookUri?: string | null; + secret?: string | null; + isActive?: boolean; + description?: string | null; + webhooks?: Array | null; + headers?: { + [key: string]: string; + } | null; + concurrencyStamp?: string | null; + timeoutDuration?: number | null; +}; + +export type WebhookSubscriptionUpdateInput = { + webhookUri: string; + secret?: string | null; + description?: string | null; + timeoutDuration?: number | null; + isActive?: boolean; + tenantId?: string | null; + webhooks?: Array | null; + headers?: { + [key: string]: string; + } | null; + concurrencyStamp?: string | null; +}; + +export type WindowsTimeZone = { + timeZoneId?: string | null; +}; + +export type WorkflowBlueprintModel = { + id?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + type?: string | null; + parentId?: string | null; + persistWorkflow?: boolean; + loadWorkflowContext?: boolean; + saveWorkflowContext?: boolean; + inputProperties?: Variables; + outputProperties?: Variables; + x?: number | null; + y?: number | null; + activities?: Array | null; + connections?: Array | null; + version?: number; + tenantId?: string | null; + isSingleton?: boolean; + isEnabled?: boolean; + isPublished?: boolean; + isLatest?: boolean; + isDisabled?: boolean; + variables?: Variables; + contextOptions?: WorkflowContextOptions; + persistenceBehavior?: WorkflowPersistenceBehavior; + deleteCompletedInstances?: boolean; + customAttributes?: Variables; +}; + +export type WorkflowBlueprintSummaryModel = { + id?: string | null; + versionId?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + version?: number; + tenantId?: string | null; + isSingleton?: boolean; + isPublished?: boolean; + isLatest?: boolean; + isDisabled?: boolean; +}; + +export enum WorkflowContextFidelity { + Burst = 0, + Activity = 1, +} + +export type WorkflowContextOptions = { + contextType?: Type; + contextFidelity?: WorkflowContextFidelity; +}; + +export type WorkflowDefinition = { + id?: string | null; + definitionId?: string | null; + readonly versionId?: string | null; + tenantId?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + channel?: string | null; + version?: number; + variables?: Variables; + customAttributes?: Variables; + contextOptions?: WorkflowContextOptions; + isSingleton?: boolean; + persistenceBehavior?: WorkflowPersistenceBehavior; + deleteCompletedInstances?: boolean; + isPublished?: boolean; + isLatest?: boolean; + tag?: string | null; + createdAt?: Instant; + activities?: Array | null; + connections?: Array | null; +}; + +export enum WorkflowDefinitionOrderBy { + Name = 0, + Description = 1, + CreatedAt = 2, +} + +export type WorkflowDefinitionSummaryModel = { + id?: string | null; + definitionId?: string | null; + tenantId?: string | null; + name?: string | null; + displayName?: string | null; + description?: string | null; + version?: number; + isSingleton?: boolean; + persistenceBehavior?: WorkflowPersistenceBehavior; + isPublished?: boolean; + isLatest?: boolean; + customAttributes?: Variables; + createdAt?: Instant; +}; + +export type WorkflowDefinitionVersionModel = { + id?: string | null; + definitionId?: string | null; + version?: number; + isLatest?: boolean; + isPublished?: boolean; + createdAt?: Instant; +}; + +export type WorkflowExecutionLogRecord = { + id?: string | null; + readonly tenantId?: string | null; + workflowInstanceId?: string | null; + activityId?: string | null; + activityType?: string | null; + timestamp?: Instant; + eventName?: string | null; + message?: string | null; + source?: string | null; + data?: { + [key: string]: JToken; + } | null; +}; + +export type WorkflowFault = { + exception?: SimpleException; + message?: string | null; + faultedActivityId?: string | null; + activityInput?: unknown; + resuming?: boolean; +}; + +export type WorkflowInput = { + input?: unknown; + storageProviderName?: string | null; +}; + +export type WorkflowInputReference = { + providerName?: string | null; +}; + +export type WorkflowInstance = { + id?: string | null; + definitionId?: string | null; + definitionVersionId?: string | null; + tenantId?: string | null; + version?: number; + workflowStatus?: WorkflowStatus; + correlationId?: string | null; + contextType?: string | null; + contextId?: string | null; + name?: string | null; + createdAt?: Instant; + lastExecutedAt?: Instant; + finishedAt?: Instant; + cancelledAt?: Instant; + faultedAt?: Instant; + variables?: Variables; + input?: WorkflowInputReference; + output?: WorkflowOutputReference; + activityData?: { + [key: string]: { + [key: string]: unknown; + }; + } | null; + metadata?: { + [key: string]: unknown; + } | null; + blockingActivities?: Array | null; + fault?: WorkflowFault; + faults?: Array | null; + scheduledActivities?: Array | null; + scopes?: Array | null; + currentActivity?: ScheduledActivity; + lastExecutedActivityId?: string | null; +}; + +export enum WorkflowInstanceOrderBy { + Started = 0, + LastExecuted = 1, + Finished = 2, +} + +export type WorkflowInstanceSummaryModel = { + id?: string | null; + definitionId?: string | null; + definitionVersionId?: string | null; + tenantId?: string | null; + version?: number; + workflowStatus?: WorkflowStatus; + correlationId?: string | null; + contextType?: string | null; + contextId?: string | null; + name?: string | null; + createdAt?: Instant; + lastExecutedAt?: Instant; + finishedAt?: Instant; + cancelledAt?: Instant; + faultedAt?: Instant; + metadata?: { + [key: string]: unknown; + } | null; +}; + +export type WorkflowOutputReference = { + providerName?: string | null; + activityId?: string | null; +}; + +export enum WorkflowPersistenceBehavior { + Suspended = 0, + WorkflowBurst = 1, + WorkflowPassCompleted = 2, + ActivityExecuted = 3, +} + +export type WorkflowProviderDescriptor = { + name?: string | null; + displayName?: string | null; +}; + +export enum WorkflowStatus { + Idle = 0, + Running = 1, + Finished = 2, + Suspended = 3, + Faulted = 4, + Cancelled = 5, +} + +export type WorkflowStorageDescriptor = { + name?: string | null; + displayName?: string | null; +}; + +export type WrapResult = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: unknown; +}; + +export type WrapResultOfAbpLoginResult = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: AbpLoginResult; +}; + +export type WrapResultOfApplicationConfigurationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ApplicationConfigurationDto; +}; + +export type WrapResultOfApplicationLocalizationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ApplicationLocalizationDto; +}; + +export type WrapResultOfAuditLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: AuditLogDto; +}; + +export type WrapResultOfAuthenticatorDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: AuthenticatorDto; +}; + +export type WrapResultOfAuthenticatorRecoveryCodeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: AuthenticatorRecoveryCodeDto; +}; + +export type WrapResultOfBackgroundJobActionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: BackgroundJobActionDto; +}; + +export type WrapResultOfBackgroundJobInfoDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: BackgroundJobInfoDto; +}; + +export type WrapResultOfBackgroundJobLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: BackgroundJobLogDto; +}; + +export type WrapResultOfBoolean = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: boolean; +}; + +export type WrapResultOfCacheKeysDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: CacheKeysDto; +}; + +export type WrapResultOfCacheValueDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: CacheValueDto; +}; + +export type WrapResultOfChatMessageSendResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ChatMessageSendResultDto; +}; + +export type WrapResultOfDataDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: DataDto; +}; + +export type WrapResultOfEditionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: EditionDto; +}; + +export type WrapResultOfEntityChangeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: EntityChangeDto; +}; + +export type WrapResultOfEntityChangeWithUsernameDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: EntityChangeWithUsernameDto; +}; + +export type WrapResultOfEntityTypeInfoDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: EntityTypeInfoDto; +}; + +export type WrapResultOfFeatureDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FeatureDefinitionDto; +}; + +export type WrapResultOfFeatureGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FeatureGroupDefinitionDto; +}; + +export type WrapResultOfFeedbackAttachmentTempFileDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FeedbackAttachmentTempFileDto; +}; + +export type WrapResultOfFeedbackDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FeedbackDto; +}; + +export type WrapResultOfFileShareDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FileShareDto; +}; + +export type WrapResultOfFindTenantResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: FindTenantResultDto; +}; + +export type WrapResultOfGetFeatureListResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: GetFeatureListResultDto; +}; + +export type WrapResultOfGetPermissionListResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: GetPermissionListResultDto; +}; + +export type WrapResultOfGroup = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: Group; +}; + +export type WrapResultOfIdentityClaimTypeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: IdentityClaimTypeDto; +}; + +export type WrapResultOfIdentityRoleDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: IdentityRoleDto; +}; + +export type WrapResultOfIdentityUserDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: IdentityUserDto; +}; + +export type WrapResultOfInt64 = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: number; +}; + +export type WrapResultOfLanguageDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: LanguageDto; +}; + +export type WrapResultOfLayoutDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: LayoutDto; +}; + +export type WrapResultOfListResultDtoOfBackgroundJobActionDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfBackgroundJobActionDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfBackgroundJobActionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfBackgroundJobActionDto; +}; + +export type WrapResultOfListResultDtoOfBackgroundJobDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfBackgroundJobDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfDataDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfDataDto; +}; + +export type WrapResultOfListResultDtoOfDynamicParamterDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfDynamicParamterDto; +}; + +export type WrapResultOfListResultDtoOfEntityChangeWithUsernameDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfEntityChangeWithUsernameDto; +}; + +export type WrapResultOfListResultDtoOfFeatureDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfFeatureDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfFeatureGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfFeatureGroupDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfGroup = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfGroup; +}; + +export type WrapResultOfListResultDtoOfIdentityClaimDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfIdentityClaimDto; +}; + +export type WrapResultOfListResultDtoOfIdentityClaimTypeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfIdentityClaimTypeDto; +}; + +export type WrapResultOfListResultDtoOfIdentityRoleDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfIdentityRoleDto; +}; + +export type WrapResultOfListResultDtoOfLanguageDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfLanguageDto; +}; + +export type WrapResultOfListResultDtoOfLastChatMessage = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfLastChatMessage; +}; + +export type WrapResultOfListResultDtoOfLayoutDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfLayoutDto; +}; + +export type WrapResultOfListResultDtoOfMenuDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfMenuDto; +}; + +export type WrapResultOfListResultDtoOfMyFileShareDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfMyFileShareDto; +}; + +export type WrapResultOfListResultDtoOfNameValue = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfNameValue; +}; + +export type WrapResultOfListResultDtoOfNotificationDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfNotificationDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfNotificationGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfNotificationGroupDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfNotificationGroupDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfNotificationGroupDto; +}; + +export type WrapResultOfListResultDtoOfNotificationTemplateDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfNotificationTemplateDto; +}; + +export type WrapResultOfListResultDtoOfOrganizationUnitDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfOrganizationUnitDto; +}; + +export type WrapResultOfListResultDtoOfOssObjectDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfOssObjectDto; +}; + +export type WrapResultOfListResultDtoOfPermissionDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfPermissionDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfPermissionGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfPermissionGroupDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfResourceDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfResourceDto; +}; + +export type WrapResultOfListResultDtoOfSettingDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfSettingDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfString = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfString; +}; + +export type WrapResultOfListResultDtoOfTenantConnectionStringDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfTenantConnectionStringDto; +}; + +export type WrapResultOfListResultDtoOfTextDifferenceDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfTextDifferenceDto; +}; + +export type WrapResultOfListResultDtoOfTextTemplateDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfTextTemplateDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfUserData = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfUserData; +}; + +export type WrapResultOfListResultDtoOfUserFavoriteMenuDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfUserFavoriteMenuDto; +}; + +export type WrapResultOfListResultDtoOfUserFriend = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfUserFriend; +}; + +export type WrapResultOfListResultDtoOfUserSubscreNotificationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfUserSubscreNotificationDto; +}; + +export type WrapResultOfListResultDtoOfWebhookAvailableGroupDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfWebhookAvailableGroupDto; +}; + +export type WrapResultOfListResultDtoOfWebhookDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfWebhookDefinitionDto; +}; + +export type WrapResultOfListResultDtoOfWebhookGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ListResultDtoOfWebhookGroupDefinitionDto; +}; + +export type WrapResultOfLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: LogDto; +}; + +export type WrapResultOfMenuDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: MenuDto; +}; + +export type WrapResultOfNotificationDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: NotificationDefinitionDto; +}; + +export type WrapResultOfNotificationGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: NotificationGroupDefinitionDto; +}; + +export type WrapResultOfOpenIddictApplicationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OpenIddictApplicationDto; +}; + +export type WrapResultOfOpenIddictAuthorizationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OpenIddictAuthorizationDto; +}; + +export type WrapResultOfOpenIddictScopeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OpenIddictScopeDto; +}; + +export type WrapResultOfOpenIddictTokenDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OpenIddictTokenDto; +}; + +export type WrapResultOfOrganizationUnitDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OrganizationUnitDto; +}; + +export type WrapResultOfOrganizationUnitEntityRuleDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OrganizationUnitEntityRuleDto; +}; + +export type WrapResultOfOssContainerDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OssContainerDto; +}; + +export type WrapResultOfOssContainersResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OssContainersResultDto; +}; + +export type WrapResultOfOssObjectDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OssObjectDto; +}; + +export type WrapResultOfOssObjectsResultDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: OssObjectsResultDto; +}; + +export type WrapResultOfPackageBlobDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PackageBlobDto; +}; + +export type WrapResultOfPackageDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PackageDto; +}; + +export type WrapResultOfPagedResultDtoOfAuditLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfAuditLogDto; +}; + +export type WrapResultOfPagedResultDtoOfBackgroundJobInfoDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfBackgroundJobInfoDto; +}; + +export type WrapResultOfPagedResultDtoOfBackgroundJobLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfBackgroundJobLogDto; +}; + +export type WrapResultOfPagedResultDtoOfChatMessage = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfChatMessage; +}; + +export type WrapResultOfPagedResultDtoOfDataDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfDataDto; +}; + +export type WrapResultOfPagedResultDtoOfEditionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfEditionDto; +}; + +export type WrapResultOfPagedResultDtoOfEntityChangeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfEntityChangeDto; +}; + +export type WrapResultOfPagedResultDtoOfEntityTypeInfoDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfEntityTypeInfoDto; +}; + +export type WrapResultOfPagedResultDtoOfFeedbackDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfFeedbackDto; +}; + +export type WrapResultOfPagedResultDtoOfGroup = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfGroup; +}; + +export type WrapResultOfPagedResultDtoOfGroupUserCard = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfGroupUserCard; +}; + +export type WrapResultOfPagedResultDtoOfIdentityClaimTypeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfIdentityClaimTypeDto; +}; + +export type WrapResultOfPagedResultDtoOfIdentityRoleDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfIdentityRoleDto; +}; + +export type WrapResultOfPagedResultDtoOfIdentitySessionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfIdentitySessionDto; +}; + +export type WrapResultOfPagedResultDtoOfIdentitySessionDto_1 = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfIdentitySessionDto_1; +}; + +export type WrapResultOfPagedResultDtoOfIdentityUserDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfIdentityUserDto; +}; + +export type WrapResultOfPagedResultDtoOfLayoutDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfLayoutDto; +}; + +export type WrapResultOfPagedResultDtoOfLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfLogDto; +}; + +export type WrapResultOfPagedResultDtoOfMenuDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfMenuDto; +}; + +export type WrapResultOfPagedResultDtoOfOpenIddictApplicationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfOpenIddictApplicationDto; +}; + +export type WrapResultOfPagedResultDtoOfOpenIddictAuthorizationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfOpenIddictAuthorizationDto; +}; + +export type WrapResultOfPagedResultDtoOfOpenIddictScopeDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfOpenIddictScopeDto; +}; + +export type WrapResultOfPagedResultDtoOfOpenIddictTokenDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfOpenIddictTokenDto; +}; + +export type WrapResultOfPagedResultDtoOfOrganizationUnitDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfOrganizationUnitDto; +}; + +export type WrapResultOfPagedResultDtoOfPackageDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfPackageDto; +}; + +export type WrapResultOfPagedResultDtoOfSecurityLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfSecurityLogDto; +}; + +export type WrapResultOfPagedResultDtoOfTenantDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfTenantDto; +}; + +export type WrapResultOfPagedResultDtoOfUserFriend = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfUserFriend; +}; + +export type WrapResultOfPagedResultDtoOfUserNotificationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfUserNotificationDto; +}; + +export type WrapResultOfPagedResultDtoOfUserSubscreNotificationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfUserSubscreNotificationDto; +}; + +export type WrapResultOfPagedResultDtoOfWebhookSendRecordDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfWebhookSendRecordDto; +}; + +export type WrapResultOfPagedResultDtoOfWebhookSubscriptionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PagedResultDtoOfWebhookSubscriptionDto; +}; + +export type WrapResultOfPermissionDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PermissionDefinitionDto; +}; + +export type WrapResultOfPermissionGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: PermissionGroupDefinitionDto; +}; + +export type WrapResultOfProfileDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ProfileDto; +}; + +export type WrapResultOfResourceDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ResourceDto; +}; + +export type WrapResultOfRoleEntityRuleDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: RoleEntityRuleDto; +}; + +export type WrapResultOfSecurityLogDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: SecurityLogDto; +}; + +export type WrapResultOfSettingDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: SettingDefinitionDto; +}; + +export type WrapResultOfSettingGroupResult = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: SettingGroupResult; +}; + +export type WrapResultOfTenantConnectionStringDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TenantConnectionStringDto; +}; + +export type WrapResultOfTenantDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TenantDto; +}; + +export type WrapResultOfTextDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TextDto; +}; + +export type WrapResultOfTextTemplateContentDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TextTemplateContentDto; +}; + +export type WrapResultOfTextTemplateDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TextTemplateDefinitionDto; +}; + +export type WrapResultOfThemeSettingDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: ThemeSettingDto; +}; + +export type WrapResultOfTwoFactorEnabledDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: TwoFactorEnabledDto; +}; + +export type WrapResultOfUserData = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: UserData; +}; + +export type WrapResultOfUserFavoriteMenuDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: UserFavoriteMenuDto; +}; + +export type WrapResultOfUserFriend = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: UserFriend; +}; + +export type WrapResultOfUserNotificationDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: UserNotificationDto; +}; + +export type WrapResultOfUserSubscriptionsResult = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: UserSubscriptionsResult; +}; + +export type WrapResultOfWebhookDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: WebhookDefinitionDto; +}; + +export type WrapResultOfWebhookGroupDefinitionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: WebhookGroupDefinitionDto; +}; + +export type WrapResultOfWebhookSendRecordDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: WebhookSendRecordDto; +}; + +export type WrapResultOfWebhookSubscriptionDto = { + code?: string | null; + message?: string | null; + details?: string | null; + result?: WebhookSubscriptionDto; +}; + +export type AbpApiDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + IncludeTypes?: boolean; + }; +}; + +export type AbpApiDefinitionGetResponse = ApplicationApiDescriptionModel; + +export type AbpApiDefinitionGetError = RemoteServiceErrorResponse; + +export type AbpApplicationConfigurationGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + IncludeLocalizationResources?: boolean; + }; +}; + +export type AbpApplicationConfigurationGetResponse = WrapResultOfApplicationConfigurationDto; + +export type AbpApplicationConfigurationGetError = WrapResult; + +export type AbpApplicationLocalizationGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + CultureName: string; + OnlyDynamics?: boolean; + }; +}; + +export type AbpApplicationLocalizationGetResponse = WrapResultOfApplicationLocalizationDto; + +export type AbpApplicationLocalizationGetError = WrapResult; + +export type AbpTenantFindTenantByNameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type AbpTenantFindTenantByNameResponse = WrapResultOfFindTenantResultDto; + +export type AbpTenantFindTenantByNameError = WrapResult; + +export type AbpTenantFindTenantByIdData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type AbpTenantFindTenantByIdResponse = WrapResultOfFindTenantResultDto; + +export type AbpTenantFindTenantByIdError = WrapResult; + +export type AccountRegisterData = { + body?: PhoneRegisterDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountRegisterResponse = WrapResult; + +export type AccountRegisterError = WrapResult; + +export type AccountResetPasswordData = { + body?: PhoneResetPasswordDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountResetPasswordResponse = WrapResult; + +export type AccountResetPasswordError = WrapResult; + +export type AccountSendPhoneSigninCodeData = { + body?: SendPhoneSigninCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountSendPhoneSigninCodeResponse = WrapResult; + +export type AccountSendPhoneSigninCodeError = WrapResult; + +export type AccountSendEmailSigninCodeData = { + body?: SendEmailSigninCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountSendEmailSigninCodeResponse = WrapResult; + +export type AccountSendEmailSigninCodeError = WrapResult; + +export type AccountSendPhoneRegisterCodeData = { + body?: SendPhoneRegisterCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountSendPhoneRegisterCodeResponse = WrapResult; + +export type AccountSendPhoneRegisterCodeError = WrapResult; + +export type AccountSendPhoneResetPasswordCodeData = { + body?: SendPhoneResetPasswordCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountSendPhoneResetPasswordCodeResponse = WrapResult; + +export type AccountSendPhoneResetPasswordCodeError = WrapResult; + +export type AccountGetTwoFactorProvidersData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + UserId: string; + }; +}; + +export type AccountGetTwoFactorProvidersResponse = WrapResultOfListResultDtoOfNameValue; + +export type AccountGetTwoFactorProvidersError = WrapResult; + +export type AccountRegister1Data = { + body?: RegisterDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountRegister1Response = WrapResultOfIdentityUserDto; + +export type AccountRegister1Error = WrapResult; + +export type AccountSendPasswordResetCodeData = { + body?: SendPasswordResetCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountSendPasswordResetCodeResponse = WrapResult; + +export type AccountSendPasswordResetCodeError = WrapResult; + +export type AccountVerifyPasswordResetTokenData = { + body?: VerifyPasswordResetTokenInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountVerifyPasswordResetTokenResponse = WrapResultOfBoolean; + +export type AccountVerifyPasswordResetTokenError = WrapResult; + +export type AccountResetPassword1Data = { + body?: ResetPasswordDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type AccountResetPassword1Response = WrapResult; + +export type AccountResetPassword1Error = WrapResult; + +export type AuditLogDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type AuditLogDeleteResponse = WrapResult; + +export type AuditLogDeleteError = WrapResult; + +export type AuditLogGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type AuditLogGetResponse = WrapResultOfAuditLogDto; + +export type AuditLogGetError = WrapResult; + +export type AuditLogGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ApplicationName?: string; + ClientId?: string; + ClientIpAddress?: string; + CorrelationId?: string; + EndTime?: string; + HasException?: boolean; + HttpMethod?: string; + HttpStatusCode?: HttpStatusCode; + MaxExecutionDuration?: number; + MaxResultCount?: number; + MinExecutionDuration?: number; + SkipCount?: number; + Sorting?: string; + StartTime?: string; + Url?: string; + UserId?: string; + UserName?: string; + }; +}; + +export type AuditLogGetListResponse = WrapResultOfPagedResultDtoOfAuditLogDto; + +export type AuditLogGetListError = WrapResult; + +export type BackgroundJobActionAddActionData = { + body?: BackgroundJobActionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + jobId: string; + }; +}; + +export type BackgroundJobActionAddActionResponse = WrapResultOfBackgroundJobActionDto; + +export type BackgroundJobActionAddActionError = WrapResult; + +export type BackgroundJobActionGetActionsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + jobId: string; + }; +}; + +export type BackgroundJobActionGetActionsResponse = WrapResultOfListResultDtoOfBackgroundJobActionDto; + +export type BackgroundJobActionGetActionsError = WrapResult; + +export type BackgroundJobActionDeleteActionData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobActionDeleteActionResponse = WrapResult; + +export type BackgroundJobActionDeleteActionError = WrapResult; + +export type BackgroundJobActionUpdateActionData = { + body?: BackgroundJobActionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobActionUpdateActionResponse = WrapResultOfBackgroundJobActionDto; + +export type BackgroundJobActionUpdateActionError = WrapResult; + +export type BackgroundJobActionGetDefinitionsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Type?: JobActionType; + }; +}; + +export type BackgroundJobActionGetDefinitionsResponse = WrapResultOfListResultDtoOfBackgroundJobActionDefinitionDto; + +export type BackgroundJobActionGetDefinitionsError = WrapResult; + +export type BackgroundJobInfoCreateData = { + body?: BackgroundJobInfoCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoCreateResponse = WrapResultOfBackgroundJobInfoDto; + +export type BackgroundJobInfoCreateError = WrapResult; + +export type BackgroundJobInfoGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + BeginCreationTime?: string; + BeginLastRunTime?: string; + BeginTime?: string; + EndCreationTime?: string; + EndLastRunTime?: string; + EndTime?: string; + Filter?: string; + Group?: string; + IsAbandoned?: boolean; + JobType?: JobType; + MaxResultCount?: number; + Name?: string; + Priority?: JobPriority; + SkipCount?: number; + Sorting?: string; + Source?: JobSource; + Status?: JobStatus; + Type?: string; + }; +}; + +export type BackgroundJobInfoGetListResponse = WrapResultOfPagedResultDtoOfBackgroundJobInfoDto; + +export type BackgroundJobInfoGetListError = WrapResult; + +export type BackgroundJobInfoDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoDeleteResponse = WrapResult; + +export type BackgroundJobInfoDeleteError = WrapResult; + +export type BackgroundJobInfoGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoGetResponse = WrapResultOfBackgroundJobInfoDto; + +export type BackgroundJobInfoGetError = WrapResult; + +export type BackgroundJobInfoUpdateData = { + body?: BackgroundJobInfoUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoUpdateResponse = WrapResultOfBackgroundJobInfoDto; + +export type BackgroundJobInfoUpdateError = WrapResult; + +export type BackgroundJobInfoPauseData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoPauseResponse = WrapResult; + +export type BackgroundJobInfoPauseError = WrapResult; + +export type BackgroundJobInfoResumeData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoResumeResponse = WrapResult; + +export type BackgroundJobInfoResumeError = WrapResult; + +export type BackgroundJobInfoTriggerData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoTriggerResponse = WrapResult; + +export type BackgroundJobInfoTriggerError = WrapResult; + +export type BackgroundJobInfoStopData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoStopResponse = WrapResult; + +export type BackgroundJobInfoStopError = WrapResult; + +export type BackgroundJobInfoStartData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type BackgroundJobInfoStartResponse = WrapResult; + +export type BackgroundJobInfoStartError = WrapResult; + +export type BackgroundJobInfoBulkStopData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkStopResponse = WrapResult; + +export type BackgroundJobInfoBulkStopError = WrapResult; + +export type BackgroundJobInfoBulkStartData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkStartResponse = WrapResult; + +export type BackgroundJobInfoBulkStartError = WrapResult; + +export type BackgroundJobInfoBulkTriggerData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkTriggerResponse = WrapResult; + +export type BackgroundJobInfoBulkTriggerError = WrapResult; + +export type BackgroundJobInfoBulkResumeData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkResumeResponse = WrapResult; + +export type BackgroundJobInfoBulkResumeError = WrapResult; + +export type BackgroundJobInfoBulkPauseData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkPauseResponse = WrapResult; + +export type BackgroundJobInfoBulkPauseError = WrapResult; + +export type BackgroundJobInfoBulkDeleteData = { + body?: BackgroundJobInfoBatchInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoBulkDeleteResponse = WrapResult; + +export type BackgroundJobInfoBulkDeleteError = WrapResult; + +export type BackgroundJobInfoGetDefinitionsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoGetDefinitionsResponse = WrapResultOfListResultDtoOfBackgroundJobDefinitionDto; + +export type BackgroundJobInfoGetDefinitionsError = WrapResult; + +export type BackgroundJobInfoGetAvailableFieldsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoGetAvailableFieldsResponse = WrapResultOfListResultDtoOfDynamicParamterDto; + +export type BackgroundJobInfoGetAvailableFieldsError = WrapResult; + +export type BackgroundJobInfoSearchData = { + body?: GetListByDynamicQueryableInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type BackgroundJobInfoSearchResponse = WrapResultOfPagedResultDtoOfBackgroundJobInfoDto; + +export type BackgroundJobInfoSearchError = WrapResult; + +export type BackgroundJobLogDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: number; + }; +}; + +export type BackgroundJobLogDeleteResponse = WrapResult; + +export type BackgroundJobLogDeleteError = WrapResult; + +export type BackgroundJobLogGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: number; + }; +}; + +export type BackgroundJobLogGetResponse = WrapResultOfBackgroundJobLogDto; + +export type BackgroundJobLogGetError = WrapResult; + +export type BackgroundJobLogGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + BeginRunTime?: string; + EndRunTime?: string; + Filter?: string; + Group?: string; + HasExceptions?: boolean; + JobId?: string; + MaxResultCount?: number; + Name?: string; + SkipCount?: number; + Sorting?: string; + Type?: string; + }; +}; + +export type BackgroundJobLogGetListResponse = WrapResultOfPagedResultDtoOfBackgroundJobLogDto; + +export type BackgroundJobLogGetListError = WrapResult; + +export type BackupHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; + query?: { + ids?: string; + version?: VersionOptions; + }; +}; + +export type BackupHandleResponse = unknown; + +export type BackupHandleError = ProblemDetails; + +export type BulkCancelHandleData = { + body?: BulkCancelWorkflowsRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type BulkCancelHandleResponse = unknown; + +export type BulkCancelHandleError = unknown; + +export type BulkDeleteHandleData = { + body?: BulkDeleteWorkflowsRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type BulkDeleteHandleResponse = unknown; + +export type BulkDeleteHandleError = unknown; + +export type BulkRetryHandleData = { + body?: BulkRetryWorkflowsRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type BulkRetryHandleResponse = unknown; + +export type BulkRetryHandleError = unknown; + +export type CacheGetKeysData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + Marker?: string; + Prefix?: string; + }; +}; + +export type CacheGetKeysResponse = WrapResultOfCacheKeysDto; + +export type CacheGetKeysError = WrapResult; + +export type CacheGetValueData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Key: string; + }; +}; + +export type CacheGetValueResponse = WrapResultOfCacheValueDto; + +export type CacheGetValueError = WrapResult; + +export type CacheSetData = { + body?: CacheSetInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type CacheSetResponse = WrapResult; + +export type CacheSetError = WrapResult; + +export type CacheRefreshData = { + body?: CacheRefreshInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type CacheRefreshResponse = WrapResult; + +export type CacheRefreshError = WrapResult; + +export type CacheRemoveData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Key: string; + }; +}; + +export type CacheRemoveResponse = WrapResult; + +export type CacheRemoveError = WrapResult; + +export type CancelHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type CancelHandleResponse = unknown; + +export type CancelHandleError = ProblemDetails; + +export type ChatGetMyGroupMessageData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Filter?: string; + GroupId: number; + MaxResultCount?: number; + MessageType?: MessageType; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type ChatGetMyGroupMessageResponse = WrapResultOfPagedResultDtoOfChatMessage; + +export type ChatGetMyGroupMessageError = WrapResult; + +export type ChatGetMyChatMessageData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Filter?: string; + MaxResultCount?: number; + MessageType?: MessageType; + ReceiveUserId: string; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type ChatGetMyChatMessageResponse = WrapResultOfPagedResultDtoOfChatMessage; + +export type ChatGetMyChatMessageError = WrapResult; + +export type ChatGetMyLastChatMessageData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + MaxResultCount?: number; + Sorting?: string; + State?: MessageState; + }; +}; + +export type ChatGetMyLastChatMessageResponse = WrapResultOfListResultDtoOfLastChatMessage; + +export type ChatGetMyLastChatMessageError = WrapResult; + +export type ChatSendMessageData = { + body?: ChatMessage; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ChatSendMessageResponse = WrapResultOfChatMessageSendResultDto; + +export type ChatSendMessageError = WrapResult; + +export type ClaimChangeAvatarData = { + body?: ChangeAvatarInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ClaimChangeAvatarResponse = WrapResult; + +export type ClaimChangeAvatarError = WrapResult; + +export type ClaimTypeCreateData = { + body?: IdentityClaimTypeCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ClaimTypeCreateResponse = WrapResultOfIdentityClaimTypeDto; + +export type ClaimTypeCreateError = WrapResult; + +export type ClaimTypeGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type ClaimTypeGetListResponse = WrapResultOfPagedResultDtoOfIdentityClaimTypeDto; + +export type ClaimTypeGetListError = WrapResult; + +export type ClaimTypeDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type ClaimTypeDeleteResponse = WrapResult; + +export type ClaimTypeDeleteError = WrapResult; + +export type ClaimTypeGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type ClaimTypeGetResponse = WrapResultOfIdentityClaimTypeDto; + +export type ClaimTypeGetError = WrapResult; + +export type ClaimTypeUpdateData = { + body?: IdentityClaimTypeUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type ClaimTypeUpdateResponse = WrapResultOfIdentityClaimTypeDto; + +export type ClaimTypeUpdateError = WrapResult; + +export type ClaimTypeGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ClaimTypeGetAllListResponse = WrapResultOfListResultDtoOfIdentityClaimTypeDto; + +export type ClaimTypeGetAllListError = WrapResult; + +export type DataCreateData = { + body?: DataCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type DataCreateResponse = WrapResultOfDataDto; + +export type DataCreateError = WrapResult; + +export type DataGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type DataGetListResponse = WrapResultOfPagedResultDtoOfDataDto; + +export type DataGetListError = WrapResult; + +export type DataCreateItemData = { + body?: DataItemCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type DataCreateItemResponse = WrapResult; + +export type DataCreateItemError = WrapResult; + +export type DataDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type DataDeleteResponse = WrapResult; + +export type DataDeleteError = WrapResult; + +export type DataGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type DataGetResponse = WrapResultOfDataDto; + +export type DataGetError = WrapResult; + +export type DataUpdateData = { + body?: DataUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type DataUpdateResponse = WrapResultOfDataDto; + +export type DataUpdateError = WrapResult; + +export type DataDeleteItemData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + name: string; + }; +}; + +export type DataDeleteItemResponse = WrapResult; + +export type DataDeleteItemError = WrapResult; + +export type DataUpdateItemData = { + body?: DataItemUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + name: string; + }; +}; + +export type DataUpdateItemResponse = WrapResult; + +export type DataUpdateItemError = WrapResult; + +export type DataGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type DataGet1Response = WrapResultOfDataDto; + +export type DataGet1Error = WrapResult; + +export type DataGetAllData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type DataGetAllResponse = WrapResultOfListResultDtoOfDataDto; + +export type DataGetAllError = WrapResult; + +export type DataMoveData = { + body?: DataMoveDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type DataMoveResponse = WrapResultOfDataDto; + +export type DataMoveError = WrapResult; + +export type DeleteHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type DeleteHandleResponse = void; + +export type DeleteHandleError = ProblemDetails; + +export type GetHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type GetHandleResponse = WorkflowInstance; + +export type GetHandleError = unknown; + +export type DeleteHandle1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type DeleteHandle1Response = unknown; + +export type DeleteHandle1Error = ProblemDetails; + +export type GetHandle1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type GetHandle1Response = WebhookDefinition; + +export type GetHandle1Error = ProblemDetails; + +export type DeleteByDefinitionHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + definitionId: string; + }; +}; + +export type DeleteByDefinitionHandleResponse = unknown; + +export type DeleteByDefinitionHandleError = unknown; + +export type DeleteByDefinitionAndVersionHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + definitionId: string; + versionOptions: VersionOptions; + }; +}; + +export type DeleteByDefinitionAndVersionHandleResponse = unknown; + +export type DeleteByDefinitionAndVersionHandleError = unknown; + +export type DispatchHandleData = { + body?: DispatchWorkflowDefinitionRequestModel; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowDefinitionId: string; + }; +}; + +export type DispatchHandleResponse = DispatchWorkflowDefinitionResponseModel; + +export type DispatchHandleError = ProblemDetails; + +export type DispatchHandle1Data = { + body?: DispatchWorkflowInstanceRequestModel; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowInstanceId: string; + }; +}; + +export type DispatchHandle1Response = DispatchWorkflowInstanceResponseModel; + +export type DispatchHandle1Error = ProblemDetails; + +export type DispatchHandle2Data = { + body?: DispatchSignalRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + signalName: string; + }; +}; + +export type DispatchHandle2Response = DispatchSignalResponse; + +export type DispatchHandle2Error = unknown; + +export type DispatchEndpointHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + token: string; + }; +}; + +export type DispatchEndpointHandleResponse = unknown; + +export type DispatchEndpointHandleError = unknown; + +export type DispatchEndpointHandle1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + token: string; + }; +}; + +export type DispatchEndpointHandle1Response = unknown; + +export type DispatchEndpointHandle1Error = unknown; + +export type DynamicClaimsRefreshData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type DynamicClaimsRefreshResponse = WrapResult; + +export type DynamicClaimsRefreshError = WrapResult; + +export type EditionCreateData = { + body?: EditionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type EditionCreateResponse = WrapResultOfEditionDto; + +export type EditionCreateError = WrapResult; + +export type EditionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type EditionGetListResponse = WrapResultOfPagedResultDtoOfEditionDto; + +export type EditionGetListError = WrapResult; + +export type EditionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EditionDeleteResponse = WrapResult; + +export type EditionDeleteError = WrapResult; + +export type EditionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EditionGetResponse = WrapResultOfEditionDto; + +export type EditionGetError = WrapResult; + +export type EditionUpdateData = { + body?: EditionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EditionUpdateResponse = WrapResultOfEditionDto; + +export type EditionUpdateError = WrapResult; + +export type EntityChangesGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EntityChangesGetResponse = WrapResultOfEntityChangeDto; + +export type EntityChangesGetError = WrapResult; + +export type EntityChangesGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + AuditLogId?: string; + ChangeType?: EntityChangeType; + EndTime?: string; + EntityId?: string; + EntityTypeFullName?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + StartTime?: string; + }; +}; + +export type EntityChangesGetListResponse = WrapResultOfPagedResultDtoOfEntityChangeDto; + +export type EntityChangesGetListError = WrapResult; + +export type EntityChangesGetWithUsernameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EntityChangesGetWithUsernameResponse = WrapResultOfEntityChangeWithUsernameDto; + +export type EntityChangesGetWithUsernameError = WrapResult; + +export type EntityChangesGetWithUsername1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + EntityId?: string; + EntityTypeFullName?: string; + }; +}; + +export type EntityChangesGetWithUsername1Response = WrapResultOfListResultDtoOfEntityChangeWithUsernameDto; + +export type EntityChangesGetWithUsername1Error = WrapResult; + +export type EntityTypeInfoGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type EntityTypeInfoGetResponse = WrapResultOfEntityTypeInfoDto; + +export type EntityTypeInfoGetError = WrapResult; + +export type EntityTypeInfoGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + IsAuditEnabled?: boolean; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type EntityTypeInfoGetListResponse = WrapResultOfPagedResultDtoOfEntityTypeInfoDto; + +export type EntityTypeInfoGetListError = WrapResult; + +export type ExecuteHandleData = { + body?: ExecuteWorkflowDefinitionRequestModel; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowDefinitionId: string; + }; +}; + +export type ExecuteHandleResponse = ExecuteWorkflowDefinitionResponseModel; + +export type ExecuteHandleError = ProblemDetails; + +export type ExecuteHandle1Data = { + body?: ExecuteWorkflowInstanceRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowInstanceId: string; + }; +}; + +export type ExecuteHandle1Response = ExecuteWorkflowInstanceResponseModel; + +export type ExecuteHandle1Error = ProblemDetails; + +export type ExecuteHandle2Data = { + body?: ExecuteSignalRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + signalName: string; + }; +}; + +export type ExecuteHandle2Response = ExecuteSignalResponse; + +export type ExecuteHandle2Error = unknown; + +export type ExportHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + versionOptions: VersionOptions; + workflowDefinitionId: string; + }; +}; + +export type ExportHandleResponse = unknown; + +export type ExportHandleError = ProblemDetails; + +export type FeatureDefinitionCreateData = { + body?: FeatureDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type FeatureDefinitionCreateResponse = WrapResultOfFeatureDefinitionDto; + +export type FeatureDefinitionCreateError = WrapResult; + +export type FeatureDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + GroupName?: string; + }; +}; + +export type FeatureDefinitionGetListResponse = WrapResultOfListResultDtoOfFeatureDefinitionDto; + +export type FeatureDefinitionGetListError = WrapResult; + +export type FeatureDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureDefinitionDeleteResponse = WrapResult; + +export type FeatureDefinitionDeleteError = WrapResult; + +export type FeatureDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureDefinitionGetResponse = WrapResultOfFeatureDefinitionDto; + +export type FeatureDefinitionGetError = WrapResult; + +export type FeatureDefinitionUpdateData = { + body?: FeatureDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureDefinitionUpdateResponse = WrapResultOfFeatureDefinitionDto; + +export type FeatureDefinitionUpdateError = WrapResult; + +export type FeatureGroupDefinitionCreateData = { + body?: FeatureGroupDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type FeatureGroupDefinitionCreateResponse = WrapResultOfFeatureGroupDefinitionDto; + +export type FeatureGroupDefinitionCreateError = WrapResult; + +export type FeatureGroupDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type FeatureGroupDefinitionGetListResponse = WrapResultOfListResultDtoOfFeatureGroupDefinitionDto; + +export type FeatureGroupDefinitionGetListError = WrapResult; + +export type FeatureGroupDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureGroupDefinitionDeleteResponse = WrapResult; + +export type FeatureGroupDefinitionDeleteError = WrapResult; + +export type FeatureGroupDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureGroupDefinitionGetResponse = WrapResultOfFeatureGroupDefinitionDto; + +export type FeatureGroupDefinitionGetError = WrapResult; + +export type FeatureGroupDefinitionUpdateData = { + body?: FeatureGroupDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type FeatureGroupDefinitionUpdateResponse = WrapResultOfFeatureGroupDefinitionDto; + +export type FeatureGroupDefinitionUpdateError = WrapResult; + +export type FeaturesGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + providerKey?: string; + providerName?: string; + }; +}; + +export type FeaturesGetResponse = WrapResultOfGetFeatureListResultDto; + +export type FeaturesGetError = WrapResult; + +export type FeaturesUpdateData = { + body?: UpdateFeaturesDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + providerKey?: string; + providerName?: string; + }; +}; + +export type FeaturesUpdateResponse = WrapResult; + +export type FeaturesUpdateError = WrapResult; + +export type FeaturesDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + providerKey?: string; + providerName?: string; + }; +}; + +export type FeaturesDeleteResponse = WrapResult; + +export type FeaturesDeleteError = WrapResult; + +export type FeedbackCreateData = { + body?: FeedbackCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type FeedbackCreateResponse = WrapResultOfFeedbackDto; + +export type FeedbackCreateError = WrapResult; + +export type FeedbackGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Category?: string; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + Status?: FeedbackStatus; + }; +}; + +export type FeedbackGetListResponse = WrapResultOfPagedResultDtoOfFeedbackDto; + +export type FeedbackGetListError = WrapResult; + +export type FeedbackDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type FeedbackDeleteResponse = WrapResult; + +export type FeedbackDeleteError = WrapResult; + +export type FeedbackGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type FeedbackGetResponse = WrapResultOfFeedbackDto; + +export type FeedbackGetError = WrapResult; + +export type FeedbackAttachmentGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + FeedbackId: string; + Name: string; + }; +}; + +export type FeedbackAttachmentGetResponse = IRemoteStreamContent; + +export type FeedbackAttachmentGetError = RemoteServiceErrorResponse; + +export type FeedbackAttachmentDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + FeedbackId: string; + Name: string; + }; +}; + +export type FeedbackAttachmentDeleteResponse = WrapResult; + +export type FeedbackAttachmentDeleteError = WrapResult; + +export type FeedbackAttachmentUploadData = { + body?: { + File?: IRemoteStreamContent; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type FeedbackAttachmentUploadResponse = WrapResultOfFeedbackAttachmentTempFileDto; + +export type FeedbackAttachmentUploadError = WrapResult; + +export type GetHandle2Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + versionOptions: VersionOptions; + }; +}; + +export type GetHandle2Response = PagedListOfWorkflowBlueprintModel; + +export type GetHandle2Error = unknown; + +export type GetHandle3Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; + query?: { + page?: number; + pageSize?: number; + }; +}; + +export type GetHandle3Response = PagedListOfWorkflowExecutionLogRecord; + +export type GetHandle3Error = unknown; + +export type GetHandle4Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type GetHandle4Response = unknown; + +export type GetHandle4Error = unknown; + +export type GetHandle5Data = { + body?: IntellisenseContext; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowDefinitionId: string; + }; + query?: { + version?: VersionOptions; + }; +}; + +export type GetHandle5Response = Blob | File; + +export type GetHandle5Error = unknown; + +export type GetHandle6Data = { + body?: RuntimeSelectListContextHolder; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type GetHandle6Response = OkObjectResult; + +export type GetHandle6Error = unknown; + +export type GetHandle7Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + activityId: string; + apiVersion: string; + workflowInstanceId: string; + }; +}; + +export type GetHandle7Response = ActivityStats; + +export type GetHandle7Error = unknown; + +export type GetByDefinitionAndVersionHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + versionOptions: VersionOptions; + workflowDefinitionId: string; + }; +}; + +export type GetByDefinitionAndVersionHandleResponse = WorkflowDefinition; + +export type GetByDefinitionAndVersionHandleError = ProblemDetails; + +export type GetByVersionIdHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + versionId: string; + }; +}; + +export type GetByVersionIdHandleResponse = WorkflowDefinition; + +export type GetByVersionIdHandleError = ProblemDetails; + +export type GroupGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + groupId: string; + }; +}; + +export type GroupGetResponse = WrapResultOfGroup; + +export type GroupGetError = WrapResult; + +export type GroupSearchData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type GroupSearchResponse = WrapResultOfPagedResultDtoOfGroup; + +export type GroupSearchError = WrapResult; + +export type HistoryHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + definitionId: string; + }; +}; + +export type HistoryHandleResponse = Array; + +export type HistoryHandleError = unknown; + +export type IdentitySessionsGetSessionsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ClientId?: string; + Device?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + UserId?: string; + }; +}; + +export type IdentitySessionsGetSessionsResponse = WrapResultOfPagedResultDtoOfIdentitySessionDto; + +export type IdentitySessionsGetSessionsError = WrapResult; + +export type IdentitySessionsRevokeSessionData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + sessionId: string; + }; +}; + +export type IdentitySessionsRevokeSessionResponse = WrapResult; + +export type IdentitySessionsRevokeSessionError = WrapResult; + +export type ImportHandleData = { + body?: { + ContentType?: string; + ContentDisposition?: string; + Headers?: { + [key: string]: Array; + }; + Length?: number; + Name?: string; + FileName?: string; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + workflowDefinitionId: string; + }; +}; + +export type ImportHandleResponse = unknown; + +export type ImportHandleError = unknown; + +export type LanguageGetByNameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type LanguageGetByNameResponse = WrapResultOfLanguageDto; + +export type LanguageGetByNameError = WrapResult; + +export type LanguageDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type LanguageDeleteResponse = WrapResult; + +export type LanguageDeleteError = WrapResult; + +export type LanguageUpdateData = { + body?: LanguageUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type LanguageUpdateResponse = WrapResultOfLanguageDto; + +export type LanguageUpdateError = WrapResult; + +export type LanguageCreateData = { + body?: LanguageCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LanguageCreateResponse = WrapResultOfLanguageDto; + +export type LanguageCreateError = WrapResult; + +export type LanguageGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type LanguageGetListResponse = WrapResultOfListResultDtoOfLanguageDto; + +export type LanguageGetListError = WrapResult; + +export type LayoutCreateData = { + body?: LayoutCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LayoutCreateResponse = WrapResultOfLayoutDto; + +export type LayoutCreateError = WrapResult; + +export type LayoutGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + Framework?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type LayoutGetListResponse = WrapResultOfPagedResultDtoOfLayoutDto; + +export type LayoutGetListError = WrapResult; + +export type LayoutDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type LayoutDeleteResponse = WrapResult; + +export type LayoutDeleteError = WrapResult; + +export type LayoutGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type LayoutGetResponse = WrapResultOfLayoutDto; + +export type LayoutGetError = WrapResult; + +export type LayoutUpdateData = { + body?: LayoutUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type LayoutUpdateResponse = WrapResultOfLayoutDto; + +export type LayoutUpdateError = WrapResult; + +export type LayoutGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LayoutGetAllListResponse = WrapResultOfListResultDtoOfLayoutDto; + +export type LayoutGetAllListError = WrapResult; + +export type ListHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + version: string; + }; +}; + +export type ListHandleResponse = Array; + +export type ListHandleError = unknown; + +export type ListHandle1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + version: string; + }; +}; + +export type ListHandle1Response = Array; + +export type ListHandle1Error = unknown; + +export type ListHandle2Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; + query?: { + correlationId?: string; + orderBy?: WorkflowInstanceOrderBy; + page?: number; + pageSize?: number; + searchTerm?: string; + status?: WorkflowStatus; + workflow?: string; + }; +}; + +export type ListHandle2Response = PagedListOfWorkflowInstanceSummaryModel; + +export type ListHandle2Error = unknown; + +export type ListHandle3Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; + query?: { + ids?: string; + orderBy?: WorkflowDefinitionOrderBy; + page?: number; + pageSize?: number; + searchTerm?: string; + sortBy?: SortBy; + version?: VersionOptions; + }; +}; + +export type ListHandle3Response = PagedListOfWorkflowDefinitionSummaryModel; + +export type ListHandle3Error = unknown; + +export type SaveHandleData = { + body?: SaveWorkflowDefinitionRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + }; +}; + +export type SaveHandleResponse = WorkflowDefinition; + +export type SaveHandleError = unknown; + +export type ListHandle4Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type ListHandle4Response = unknown; + +export type ListHandle4Error = unknown; + +export type ListHandle5Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type ListHandle5Response = unknown; + +export type ListHandle5Error = unknown; + +export type ListHandle6Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + version: string; + }; +}; + +export type ListHandle6Response = Array; + +export type ListHandle6Error = unknown; + +export type ListHandle7Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type ListHandle7Response = Array; + +export type ListHandle7Error = unknown; + +export type PostHandleData = { + body?: SaveWebhookDefinitionRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + }; +}; + +export type PostHandleResponse = WebhookDefinition; + +export type PostHandleError = unknown; + +export type UpdateHandleData = { + body?: SaveWebhookDefinitionRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + }; +}; + +export type UpdateHandleResponse = WebhookDefinition; + +export type UpdateHandleError = ProblemDetails; + +export type ListAllHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; + query?: { + version?: VersionOptions; + }; +}; + +export type ListAllHandleResponse = Array; + +export type ListAllHandleError = unknown; + +export type ListByDefinitionVersionIdsHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; + query?: { + ids?: string; + }; +}; + +export type ListByDefinitionVersionIdsHandleResponse = PagedListOfWorkflowBlueprintSummaryModel; + +export type ListByDefinitionVersionIdsHandleError = unknown; + +export type ListByProviderHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + providerName: string; + }; + query?: { + page?: number; + pageSize?: number; + version?: VersionOptions; + }; +}; + +export type ListByProviderHandleResponse = PagedListOfWorkflowBlueprintSummaryModel; + +export type ListByProviderHandleError = unknown; + +export type LoggingGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type LoggingGetResponse = WrapResultOfLogDto; + +export type LoggingGetError = WrapResult; + +export type LoggingGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Application?: string; + Context?: string; + CorrelationId?: string; + EndTime?: string; + Environment?: string; + HasException?: boolean; + Level?: LogLevel; + MachineName?: string; + MaxResultCount?: number; + ProcessId?: number; + RequestId?: string; + RequestPath?: string; + SkipCount?: number; + Sorting?: string; + StartTime?: string; + ThreadId?: number; + }; +}; + +export type LoggingGetListResponse = WrapResultOfPagedResultDtoOfLogDto; + +export type LoggingGetListError = WrapResult; + +export type LoginLoginData = { + body?: UserLoginInfo; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LoginLoginResponse = WrapResultOfAbpLoginResult; + +export type LoginLoginError = WrapResult; + +export type LoginLogoutData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LoginLogoutResponse = WrapResult; + +export type LoginLogoutError = WrapResult; + +export type LoginCheckPasswordData = { + body?: UserLoginInfo; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type LoginCheckPasswordResponse = WrapResultOfAbpLoginResult; + +export type LoginCheckPasswordError = WrapResult; + +export type MenuGetCurrentUserMenuListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Framework?: string; + }; +}; + +export type MenuGetCurrentUserMenuListResponse = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetCurrentUserMenuListError = WrapResult; + +export type MenuGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type MenuGetResponse = WrapResultOfMenuDto; + +export type MenuGetError = WrapResult; + +export type MenuUpdateData = { + body?: MenuUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type MenuUpdateResponse = WrapResultOfMenuDto; + +export type MenuUpdateError = WrapResult; + +export type MenuDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type MenuDeleteResponse = WrapResult; + +export type MenuDeleteError = WrapResult; + +export type MenuGetAllData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + Framework?: string; + LayoutId?: string; + ParentId?: string; + Reverse?: boolean; + Sorting?: string; + }; +}; + +export type MenuGetAllResponse = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetAllError = WrapResult; + +export type MenuGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + Framework?: string; + LayoutId?: string; + MaxResultCount?: number; + ParentId?: string; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type MenuGetListResponse = WrapResultOfPagedResultDtoOfMenuDto; + +export type MenuGetListError = WrapResult; + +export type MenuCreateData = { + body?: MenuCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MenuCreateResponse = WrapResultOfMenuDto; + +export type MenuCreateError = WrapResult; + +export type MenuSetUserMenusData = { + body?: UserMenuInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MenuSetUserMenusResponse = WrapResult; + +export type MenuSetUserMenusError = WrapResult; + +export type MenuGetUserMenuListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Framework?: string; + Roles?: Array; + UserId: string; + }; +}; + +export type MenuGetUserMenuListResponse = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetUserMenuListError = WrapResult; + +export type MenuSetUserStartupData = { + body?: UserMenuStartupInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type MenuSetUserStartupResponse = WrapResult; + +export type MenuSetUserStartupError = WrapResult; + +export type MenuGetUserMenuList1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + framework: string; + userId: string; + }; +}; + +export type MenuGetUserMenuList1Response = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetUserMenuList1Error = WrapResult; + +export type MenuSetRoleMenusData = { + body?: RoleMenuInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MenuSetRoleMenusResponse = WrapResult; + +export type MenuSetRoleMenusError = WrapResult; + +export type MenuGetRoleMenuListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Framework?: string; + Role: string; + }; +}; + +export type MenuGetRoleMenuListResponse = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetRoleMenuListError = WrapResult; + +export type MenuSetRoleStartupData = { + body?: RoleMenuStartupInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type MenuSetRoleStartupResponse = WrapResult; + +export type MenuSetRoleStartupError = WrapResult; + +export type MenuGetRoleMenuList1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + framework: string; + role: string; + }; +}; + +export type MenuGetRoleMenuList1Response = WrapResultOfListResultDtoOfMenuDto; + +export type MenuGetRoleMenuList1Error = WrapResult; + +export type MyFeedbackGetMyFeedbacksData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Category?: string; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + Status?: FeedbackStatus; + }; +}; + +export type MyFeedbackGetMyFeedbacksResponse = WrapResultOfPagedResultDtoOfFeedbackDto; + +export type MyFeedbackGetMyFeedbacksError = WrapResult; + +export type MyFriendCreateData = { + body?: MyFriendCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MyFriendCreateResponse = WrapResult; + +export type MyFriendCreateError = WrapResult; + +export type MyFriendDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + FriendId: string; + }; +}; + +export type MyFriendDeleteResponse = WrapResult; + +export type MyFriendDeleteError = WrapResult; + +export type MyFriendGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type MyFriendGetListResponse = WrapResultOfPagedResultDtoOfUserFriend; + +export type MyFriendGetListError = WrapResult; + +export type MyFriendAddRequestData = { + body?: MyFriendAddRequestDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MyFriendAddRequestResponse = WrapResult; + +export type MyFriendAddRequestError = WrapResult; + +export type MyFriendGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + friendId: string; + }; +}; + +export type MyFriendGetResponse = WrapResultOfUserFriend; + +export type MyFriendGetError = WrapResult; + +export type MyFriendGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Sorting?: string; + }; +}; + +export type MyFriendGetAllListResponse = WrapResultOfListResultDtoOfUserFriend; + +export type MyFriendGetAllListError = WrapResult; + +export type MyNotificationMarkReadStateData = { + body?: NotificationMarkReadStateInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MyNotificationMarkReadStateResponse = WrapResult; + +export type MyNotificationMarkReadStateError = WrapResult; + +export type MyNotificationDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: number; + }; +}; + +export type MyNotificationDeleteResponse = WrapResult; + +export type MyNotificationDeleteError = WrapResult; + +export type MyNotificationGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: number; + }; +}; + +export type MyNotificationGetResponse = WrapResultOfUserNotificationDto; + +export type MyNotificationGetError = WrapResult; + +export type MyNotificationGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + ReadState?: NotificationReadState; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type MyNotificationGetListResponse = WrapResultOfPagedResultDtoOfUserNotificationDto; + +export type MyNotificationGetListError = WrapResult; + +export type MySubscriptionGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MySubscriptionGetAllListResponse = WrapResultOfListResultDtoOfUserSubscreNotificationDto; + +export type MySubscriptionGetAllListError = WrapResult; + +export type MySubscriptionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type MySubscriptionGetListResponse = WrapResultOfPagedResultDtoOfUserSubscreNotificationDto; + +export type MySubscriptionGetListError = WrapResult; + +export type MySubscriptionSubscribeData = { + body?: SubscriptionsGetByNameDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type MySubscriptionSubscribeResponse = WrapResult; + +export type MySubscriptionSubscribeError = WrapResult; + +export type MySubscriptionUnSubscribeData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Name: string; + }; +}; + +export type MySubscriptionUnSubscribeResponse = WrapResult; + +export type MySubscriptionUnSubscribeError = WrapResult; + +export type MySubscriptionIsSubscribedData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + }; +}; + +export type MySubscriptionIsSubscribedResponse = WrapResultOfUserSubscriptionsResult; + +export type MySubscriptionIsSubscribedError = WrapResult; + +export type NotificationSendData = { + body?: NotificationSendDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationSendResponse = WrapResult; + +export type NotificationSendError = WrapResult; + +export type NotificationSend1Data = { + body?: NotificationTemplateSendDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationSend1Response = WrapResult; + +export type NotificationSend1Error = WrapResult; + +export type NotificationGetAssignableNotifiersData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationGetAssignableNotifiersResponse = WrapResultOfListResultDtoOfNotificationGroupDto; + +export type NotificationGetAssignableNotifiersError = WrapResult; + +export type NotificationGetAssignableTemplatesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationGetAssignableTemplatesResponse = WrapResultOfListResultDtoOfNotificationTemplateDto; + +export type NotificationGetAssignableTemplatesError = WrapResult; + +export type NotificationDefinitionCreateData = { + body?: NotificationDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationDefinitionCreateResponse = WrapResultOfNotificationDefinitionDto; + +export type NotificationDefinitionCreateError = WrapResult; + +export type NotificationDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + AllowSubscriptionToClients?: boolean; + ContentType?: NotificationContentType; + Filter?: string; + GroupName?: string; + NotificationLifetime?: NotificationLifetime; + NotificationType?: NotificationType; + Template?: string; + }; +}; + +export type NotificationDefinitionGetListResponse = WrapResultOfListResultDtoOfNotificationDefinitionDto; + +export type NotificationDefinitionGetListError = WrapResult; + +export type NotificationDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationDefinitionDeleteResponse = WrapResult; + +export type NotificationDefinitionDeleteError = WrapResult; + +export type NotificationDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationDefinitionGetResponse = WrapResultOfNotificationDefinitionDto; + +export type NotificationDefinitionGetError = WrapResult; + +export type NotificationDefinitionUpdateData = { + body?: NotificationDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationDefinitionUpdateResponse = WrapResultOfNotificationDefinitionDto; + +export type NotificationDefinitionUpdateError = WrapResult; + +export type NotificationGroupDefinitionCreateData = { + body?: NotificationGroupDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type NotificationGroupDefinitionCreateResponse = WrapResultOfNotificationGroupDefinitionDto; + +export type NotificationGroupDefinitionCreateError = WrapResult; + +export type NotificationGroupDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type NotificationGroupDefinitionGetListResponse = WrapResultOfListResultDtoOfNotificationGroupDefinitionDto; + +export type NotificationGroupDefinitionGetListError = WrapResult; + +export type NotificationGroupDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationGroupDefinitionDeleteResponse = WrapResult; + +export type NotificationGroupDefinitionDeleteError = WrapResult; + +export type NotificationGroupDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationGroupDefinitionGetResponse = WrapResultOfNotificationGroupDefinitionDto; + +export type NotificationGroupDefinitionGetError = WrapResult; + +export type NotificationGroupDefinitionUpdateData = { + body?: NotificationGroupDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type NotificationGroupDefinitionUpdateResponse = WrapResultOfNotificationGroupDefinitionDto; + +export type NotificationGroupDefinitionUpdateError = WrapResult; + +export type OpenIddictApplicationGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictApplicationGetResponse = WrapResultOfOpenIddictApplicationDto; + +export type OpenIddictApplicationGetError = WrapResult; + +export type OpenIddictApplicationUpdateData = { + body?: OpenIddictApplicationUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictApplicationUpdateResponse = WrapResultOfOpenIddictApplicationDto; + +export type OpenIddictApplicationUpdateError = WrapResult; + +export type OpenIddictApplicationDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictApplicationDeleteResponse = WrapResult; + +export type OpenIddictApplicationDeleteError = WrapResult; + +export type OpenIddictApplicationGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OpenIddictApplicationGetListResponse = WrapResultOfPagedResultDtoOfOpenIddictApplicationDto; + +export type OpenIddictApplicationGetListError = WrapResult; + +export type OpenIddictApplicationCreateData = { + body?: OpenIddictApplicationCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OpenIddictApplicationCreateResponse = WrapResultOfOpenIddictApplicationDto; + +export type OpenIddictApplicationCreateError = WrapResult; + +export type OpenIddictAuthorizationDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictAuthorizationDeleteResponse = WrapResult; + +export type OpenIddictAuthorizationDeleteError = WrapResult; + +export type OpenIddictAuthorizationGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictAuthorizationGetResponse = WrapResultOfOpenIddictAuthorizationDto; + +export type OpenIddictAuthorizationGetError = WrapResult; + +export type OpenIddictAuthorizationGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + BeginCreationTime?: string; + ClientId?: string; + EndCreationTime?: string; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + Status?: string; + Subject?: string; + Type?: string; + }; +}; + +export type OpenIddictAuthorizationGetListResponse = WrapResultOfPagedResultDtoOfOpenIddictAuthorizationDto; + +export type OpenIddictAuthorizationGetListError = WrapResult; + +export type OpenIddictScopeCreateData = { + body?: OpenIddictScopeCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OpenIddictScopeCreateResponse = WrapResultOfOpenIddictScopeDto; + +export type OpenIddictScopeCreateError = WrapResult; + +export type OpenIddictScopeGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OpenIddictScopeGetListResponse = WrapResultOfPagedResultDtoOfOpenIddictScopeDto; + +export type OpenIddictScopeGetListError = WrapResult; + +export type OpenIddictScopeDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictScopeDeleteResponse = WrapResult; + +export type OpenIddictScopeDeleteError = WrapResult; + +export type OpenIddictScopeGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictScopeGetResponse = WrapResultOfOpenIddictScopeDto; + +export type OpenIddictScopeGetError = WrapResult; + +export type OpenIddictScopeUpdateData = { + body?: OpenIddictScopeUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictScopeUpdateResponse = WrapResultOfOpenIddictScopeDto; + +export type OpenIddictScopeUpdateError = WrapResult; + +export type OpenIddictTokenDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictTokenDeleteResponse = WrapResult; + +export type OpenIddictTokenDeleteError = WrapResult; + +export type OpenIddictTokenGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OpenIddictTokenGetResponse = WrapResultOfOpenIddictTokenDto; + +export type OpenIddictTokenGetError = WrapResult; + +export type OpenIddictTokenGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + AuthorizationId?: string; + BeginCreationTime?: string; + BeginExpirationDate?: string; + ClientId?: string; + EndCreationTime?: string; + EndExpirationDate?: string; + Filter?: string; + MaxResultCount?: number; + ReferenceId?: string; + SkipCount?: number; + Sorting?: string; + Status?: string; + Subject?: string; + Type?: string; + }; +}; + +export type OpenIddictTokenGetListResponse = WrapResultOfPagedResultDtoOfOpenIddictTokenDto; + +export type OpenIddictTokenGetListError = WrapResult; + +export type OrganizationUnitsCreateData = { + body?: OrganizationUnitCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OrganizationUnitsCreateResponse = WrapResultOfOrganizationUnitDto; + +export type OrganizationUnitsCreateError = WrapResult; + +export type OrganizationUnitsGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OrganizationUnitsGetListResponse = WrapResultOfPagedResultDtoOfOrganizationUnitDto; + +export type OrganizationUnitsGetListError = WrapResult; + +export type OrganizationUnitsDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsDeleteResponse = WrapResult; + +export type OrganizationUnitsDeleteError = WrapResult; + +export type OrganizationUnitsGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsGetResponse = WrapResultOfOrganizationUnitDto; + +export type OrganizationUnitsGetError = WrapResult; + +export type OrganizationUnitsUpdateData = { + body?: OrganizationUnitUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsUpdateResponse = WrapResultOfOrganizationUnitDto; + +export type OrganizationUnitsUpdateError = WrapResult; + +export type OrganizationUnitsFindChildrenData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Id: string; + Recursive?: boolean; + }; +}; + +export type OrganizationUnitsFindChildrenResponse = WrapResultOfListResultDtoOfOrganizationUnitDto; + +export type OrganizationUnitsFindChildrenError = WrapResult; + +export type OrganizationUnitsGetRootData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OrganizationUnitsGetRootResponse = WrapResultOfListResultDtoOfOrganizationUnitDto; + +export type OrganizationUnitsGetRootError = WrapResult; + +export type OrganizationUnitsGetLastChildOrNullData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + parentId?: string; + }; +}; + +export type OrganizationUnitsGetLastChildOrNullResponse = WrapResultOfOrganizationUnitDto; + +export type OrganizationUnitsGetLastChildOrNullError = WrapResult; + +export type OrganizationUnitsGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OrganizationUnitsGetAllListResponse = WrapResultOfListResultDtoOfOrganizationUnitDto; + +export type OrganizationUnitsGetAllListError = WrapResult; + +export type OrganizationUnitsGetRoleNamesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsGetRoleNamesResponse = WrapResultOfListResultDtoOfString; + +export type OrganizationUnitsGetRoleNamesError = WrapResult; + +export type OrganizationUnitsGetUnaddedRolesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OrganizationUnitsGetUnaddedRolesResponse = WrapResultOfPagedResultDtoOfIdentityRoleDto; + +export type OrganizationUnitsGetUnaddedRolesError = WrapResult; + +export type OrganizationUnitsGetRolesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query?: { + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OrganizationUnitsGetRolesResponse = WrapResultOfPagedResultDtoOfIdentityRoleDto; + +export type OrganizationUnitsGetRolesError = WrapResult; + +export type OrganizationUnitsAddRolesData = { + body?: OrganizationUnitAddRoleDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsAddRolesResponse = WrapResult; + +export type OrganizationUnitsAddRolesError = WrapResult; + +export type OrganizationUnitsGetUnaddedUsersData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OrganizationUnitsGetUnaddedUsersResponse = WrapResultOfPagedResultDtoOfIdentityUserDto; + +export type OrganizationUnitsGetUnaddedUsersError = WrapResult; + +export type OrganizationUnitsGetUsersData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query?: { + ExtraProperties?: { + [key: string]: unknown; + }; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OrganizationUnitsGetUsersResponse = WrapResultOfPagedResultDtoOfIdentityUserDto; + +export type OrganizationUnitsGetUsersError = WrapResult; + +export type OrganizationUnitsAddUsersData = { + body?: OrganizationUnitAddUserDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsAddUsersResponse = WrapResult; + +export type OrganizationUnitsAddUsersError = WrapResult; + +export type OrganizationUnitsMoveData = { + body?: OrganizationUnitMoveDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitsMoveResponse = WrapResult; + +export type OrganizationUnitsMoveError = WrapResult; + +export type OrganizationUnitEntityRuleGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + EntityTypeId: string; + Operation: DataAccessOperation; + OrgCode: string; + }; +}; + +export type OrganizationUnitEntityRuleGetResponse = WrapResultOfOrganizationUnitEntityRuleDto; + +export type OrganizationUnitEntityRuleGetError = WrapResult; + +export type OrganizationUnitEntityRuleCreateData = { + body?: OrganizationUnitEntityRuleCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OrganizationUnitEntityRuleCreateResponse = WrapResultOfOrganizationUnitEntityRuleDto; + +export type OrganizationUnitEntityRuleCreateError = WrapResult; + +export type OrganizationUnitEntityRuleUpdateData = { + body?: OrganizationUnitEntityRuleUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type OrganizationUnitEntityRuleUpdateResponse = WrapResultOfOrganizationUnitEntityRuleDto; + +export type OrganizationUnitEntityRuleUpdateError = WrapResult; + +export type OssContainerCreateData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type OssContainerCreateResponse = WrapResultOfOssContainerDto; + +export type OssContainerCreateError = WrapResult; + +export type OssContainerDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type OssContainerDeleteResponse = WrapResult; + +export type OssContainerDeleteError = WrapResult; + +export type OssContainerGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type OssContainerGetResponse = WrapResultOfOssContainerDto; + +export type OssContainerGetError = WrapResult; + +export type OssContainerGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Marker?: string; + MaxResultCount?: number; + Prefix?: string; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OssContainerGetListResponse = WrapResultOfOssContainersResultDto; + +export type OssContainerGetListError = WrapResult; + +export type OssContainerGetObjectListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Bucket?: string; + Delimiter?: string; + EncodingType?: string; + Marker?: string; + MaxResultCount?: number; + MD5?: boolean; + Prefix?: string; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type OssContainerGetObjectListResponse = WrapResultOfOssObjectsResultDto; + +export type OssContainerGetObjectListError = WrapResult; + +export type OssManagementSettingGetAllForCurrentTenantData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OssManagementSettingGetAllForCurrentTenantResponse = WrapResultOfSettingGroupResult; + +export type OssManagementSettingGetAllForCurrentTenantError = WrapResult; + +export type OssManagementSettingGetAllForGlobalData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OssManagementSettingGetAllForGlobalResponse = WrapResultOfSettingGroupResult; + +export type OssManagementSettingGetAllForGlobalError = WrapResult; + +export type OssObjectCreateData = { + body?: { + Bucket?: string; + Path?: string; + FileName?: string; + Overwrite?: boolean; + File?: IRemoteStreamContent; + ExpirationTime?: TimeSpan; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OssObjectCreateResponse = WrapResultOfOssObjectDto; + +export type OssObjectCreateError = WrapResult; + +export type OssObjectDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Bucket: string; + MD5?: boolean; + Object: string; + Path?: string; + }; +}; + +export type OssObjectDeleteResponse = WrapResult; + +export type OssObjectDeleteError = WrapResult; + +export type OssObjectGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Bucket: string; + MD5?: boolean; + Object: string; + Path?: string; + }; +}; + +export type OssObjectGetResponse = WrapResultOfOssObjectDto; + +export type OssObjectGetError = WrapResult; + +export type OssObjectUploadData = { + body?: { + Bucket?: string; + Path?: string; + ChunkSize: number; + CurrentChunkSize: number; + ChunkNumber: number; + TotalChunks: number; + File?: IRemoteStreamContent; + TotalSize: number; + FileName: string; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OssObjectUploadResponse = WrapResult; + +export type OssObjectUploadError = WrapResult; + +export type OssObjectBulkDeleteData = { + body?: BulkDeleteOssObjectInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type OssObjectBulkDeleteResponse = WrapResult; + +export type OssObjectBulkDeleteError = WrapResult; + +export type OssObjectGetContentData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Bucket: string; + MD5?: boolean; + Object: string; + Path?: string; + }; +}; + +export type OssObjectGetContentResponse = IRemoteStreamContent; + +export type OssObjectGetContentError = RemoteServiceErrorResponse; + +export type PackageCreateData = { + body?: PackageCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PackageCreateResponse = WrapResultOfPackageDto; + +export type PackageCreateError = WrapResult; + +export type PackageGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Authors?: string; + Description?: string; + Filter?: string; + ForceUpdate?: boolean; + MaxResultCount?: number; + Name?: string; + Note?: string; + SkipCount?: number; + Sorting?: string; + Version?: string; + }; +}; + +export type PackageGetListResponse = WrapResultOfPagedResultDtoOfPackageDto; + +export type PackageGetListError = WrapResult; + +export type PackageDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type PackageDeleteResponse = WrapResult; + +export type PackageDeleteError = WrapResult; + +export type PackageGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type PackageGetResponse = WrapResultOfPackageDto; + +export type PackageGetError = WrapResult; + +export type PackageUpdateData = { + body?: PackageUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type PackageUpdateResponse = WrapResultOfPackageDto; + +export type PackageUpdateError = WrapResult; + +export type PackageUploadBlobData = { + body?: { + Name: string; + Size?: number; + Summary?: string; + ContentType?: string; + CreatedAt?: string; + UpdatedAt?: string; + License?: string; + Authors?: string; + File: IRemoteStreamContent; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type PackageUploadBlobResponse = WrapResultOfPackageBlobDto; + +export type PackageUploadBlobError = WrapResult; + +export type PackageRemoveBlobData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + Name: string; + }; +}; + +export type PackageRemoveBlobResponse = WrapResult; + +export type PackageRemoveBlobError = WrapResult; + +export type PackageDownloadBlobData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + Name: string; + }; +}; + +export type PackageDownloadBlobResponse = IRemoteStreamContent; + +export type PackageDownloadBlobError = RemoteServiceErrorResponse; + +export type PackageGetLatestData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + }; + query?: { + Version?: string; + }; +}; + +export type PackageGetLatestResponse = WrapResultOfPackageDto; + +export type PackageGetLatestError = WrapResult; + +export type PackageGetLatest1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Version: string; + }; +}; + +export type PackageGetLatest1Response = WrapResultOfPackageDto; + +export type PackageGetLatest1Error = WrapResult; + +export type PermissionDefinitionCreateData = { + body?: PermissionDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PermissionDefinitionCreateResponse = WrapResultOfPermissionDefinitionDto; + +export type PermissionDefinitionCreateError = WrapResult; + +export type PermissionDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + GroupName?: string; + }; +}; + +export type PermissionDefinitionGetListResponse = WrapResultOfListResultDtoOfPermissionDefinitionDto; + +export type PermissionDefinitionGetListError = WrapResult; + +export type PermissionDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionDefinitionDeleteResponse = WrapResult; + +export type PermissionDefinitionDeleteError = WrapResult; + +export type PermissionDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionDefinitionGetResponse = WrapResultOfPermissionDefinitionDto; + +export type PermissionDefinitionGetError = WrapResult; + +export type PermissionDefinitionUpdateData = { + body?: PermissionDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionDefinitionUpdateResponse = WrapResultOfPermissionDefinitionDto; + +export type PermissionDefinitionUpdateError = WrapResult; + +export type PermissionGroupDefinitionCreateData = { + body?: PermissionGroupDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PermissionGroupDefinitionCreateResponse = WrapResultOfPermissionGroupDefinitionDto; + +export type PermissionGroupDefinitionCreateError = WrapResult; + +export type PermissionGroupDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type PermissionGroupDefinitionGetListResponse = WrapResultOfListResultDtoOfPermissionGroupDefinitionDto; + +export type PermissionGroupDefinitionGetListError = WrapResult; + +export type PermissionGroupDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionGroupDefinitionDeleteResponse = WrapResult; + +export type PermissionGroupDefinitionDeleteError = WrapResult; + +export type PermissionGroupDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionGroupDefinitionGetResponse = WrapResultOfPermissionGroupDefinitionDto; + +export type PermissionGroupDefinitionGetError = WrapResult; + +export type PermissionGroupDefinitionUpdateData = { + body?: PermissionGroupDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type PermissionGroupDefinitionUpdateResponse = WrapResultOfPermissionGroupDefinitionDto; + +export type PermissionGroupDefinitionUpdateError = WrapResult; + +export type PermissionsGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + providerKey?: string; + providerName?: string; + }; +}; + +export type PermissionsGetResponse = WrapResultOfGetPermissionListResultDto; + +export type PermissionsGetError = WrapResult; + +export type PermissionsUpdateData = { + body?: UpdatePermissionsDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + providerKey?: string; + providerName?: string; + }; +}; + +export type PermissionsUpdateResponse = WrapResult; + +export type PermissionsUpdateError = WrapResult; + +export type PrivateFilesUploadData = { + body?: { + Path?: string; + Object?: string; + Overwrite?: boolean; + File: IRemoteStreamContent; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PrivateFilesUploadResponse = WrapResultOfOssObjectDto; + +export type PrivateFilesUploadError = WrapResult; + +export type PrivateFilesDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Name: string; + Path?: string; + Process?: string; + TenantId?: string; + }; +}; + +export type PrivateFilesDeleteResponse = WrapResult; + +export type PrivateFilesDeleteError = WrapResult; + +export type PrivateFilesUpload1Data = { + body?: { + Bucket?: string; + Path?: string; + ChunkSize: number; + CurrentChunkSize: number; + ChunkNumber: number; + TotalChunks: number; + File?: IRemoteStreamContent; + TotalSize: number; + FileName: string; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PrivateFilesUpload1Response = WrapResult; + +export type PrivateFilesUpload1Error = WrapResult; + +export type PrivateFilesGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + Path?: string; + }; +}; + +export type PrivateFilesGetListResponse = WrapResultOfListResultDtoOfOssObjectDto; + +export type PrivateFilesGetListError = WrapResult; + +export type PrivateFilesGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + }; +}; + +export type PrivateFilesGetResponse = IRemoteStreamContent; + +export type PrivateFilesGetError = RemoteServiceErrorResponse; + +export type PrivateFilesGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Process: string; + }; +}; + +export type PrivateFilesGet1Response = IRemoteStreamContent; + +export type PrivateFilesGet1Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet2Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + }; +}; + +export type PrivateFilesGet2Response = IRemoteStreamContent; + +export type PrivateFilesGet2Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet3Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + Process: string; + }; +}; + +export type PrivateFilesGet3Response = IRemoteStreamContent; + +export type PrivateFilesGet3Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet4Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + TenantId: string; + }; +}; + +export type PrivateFilesGet4Response = IRemoteStreamContent; + +export type PrivateFilesGet4Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet5Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Process: string; + TenantId: string; + }; +}; + +export type PrivateFilesGet5Response = IRemoteStreamContent; + +export type PrivateFilesGet5Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet6Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + TenantId: string; + }; +}; + +export type PrivateFilesGet6Response = IRemoteStreamContent; + +export type PrivateFilesGet6Error = RemoteServiceErrorResponse; + +export type PrivateFilesGet7Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + Process: string; + TenantId: string; + }; +}; + +export type PrivateFilesGet7Response = IRemoteStreamContent; + +export type PrivateFilesGet7Error = RemoteServiceErrorResponse; + +export type PrivateFilesGetShareListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PrivateFilesGetShareListResponse = WrapResultOfListResultDtoOfMyFileShareDto; + +export type PrivateFilesGetShareListError = WrapResult; + +export type PrivateFilesShareData = { + body?: FileShareInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PrivateFilesShareResponse = WrapResultOfFileShareDto; + +export type PrivateFilesShareError = WrapResult; + +export type ProfileGetSessionsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ClientId?: string; + Device?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type ProfileGetSessionsResponse = WrapResultOfPagedResultDtoOfIdentitySessionDto_1; + +export type ProfileGetSessionsError = WrapResult; + +export type ProfileRevokeSessionData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + sessionId: string; + }; +}; + +export type ProfileRevokeSessionResponse = WrapResult; + +export type ProfileRevokeSessionError = WrapResult; + +export type ProfileGetTwoFactorEnabledData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileGetTwoFactorEnabledResponse = WrapResultOfTwoFactorEnabledDto; + +export type ProfileGetTwoFactorEnabledError = WrapResult; + +export type ProfileChangeTwoFactorEnabledData = { + body?: TwoFactorEnabledDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileChangeTwoFactorEnabledResponse = WrapResult; + +export type ProfileChangeTwoFactorEnabledError = WrapResult; + +export type ProfileSendChangePhoneNumberCodeData = { + body?: SendChangePhoneNumberCodeInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileSendChangePhoneNumberCodeResponse = WrapResult; + +export type ProfileSendChangePhoneNumberCodeError = WrapResult; + +export type ProfileChangePhoneNumberData = { + body?: ChangePhoneNumberInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileChangePhoneNumberResponse = WrapResult; + +export type ProfileChangePhoneNumberError = WrapResult; + +export type ProfileSendEmailConfirmLinkData = { + body?: SendEmailConfirmCodeDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileSendEmailConfirmLinkResponse = WrapResult; + +export type ProfileSendEmailConfirmLinkError = WrapResult; + +export type ProfileConfirmEmailData = { + body?: ConfirmEmailInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileConfirmEmailResponse = WrapResult; + +export type ProfileConfirmEmailError = WrapResult; + +export type ProfileGetAuthenticatorData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileGetAuthenticatorResponse = WrapResultOfAuthenticatorDto; + +export type ProfileGetAuthenticatorError = WrapResult; + +export type ProfileVerifyAuthenticatorCodeData = { + body?: VerifyAuthenticatorCodeInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileVerifyAuthenticatorCodeResponse = WrapResultOfAuthenticatorRecoveryCodeDto; + +export type ProfileVerifyAuthenticatorCodeError = WrapResult; + +export type ProfileResetAuthenticatorData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileResetAuthenticatorResponse = WrapResult; + +export type ProfileResetAuthenticatorError = WrapResult; + +export type ProfileGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileGetResponse = WrapResultOfProfileDto; + +export type ProfileGetError = WrapResult; + +export type ProfileUpdateData = { + body?: UpdateProfileDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileUpdateResponse = WrapResultOfProfileDto; + +export type ProfileUpdateError = WrapResult; + +export type ProfileChangePasswordData = { + body?: ChangePasswordInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ProfileChangePasswordResponse = WrapResult; + +export type ProfileChangePasswordError = WrapResult; + +export type PublicFilesUploadData = { + body?: { + Path?: string; + Object?: string; + Overwrite?: boolean; + File: IRemoteStreamContent; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PublicFilesUploadResponse = WrapResultOfOssObjectDto; + +export type PublicFilesUploadError = WrapResult; + +export type PublicFilesDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Name: string; + Path?: string; + Process?: string; + TenantId?: string; + }; +}; + +export type PublicFilesDeleteResponse = WrapResult; + +export type PublicFilesDeleteError = WrapResult; + +export type PublicFilesUpload1Data = { + body?: { + Bucket?: string; + Path?: string; + ChunkSize: number; + CurrentChunkSize: number; + ChunkNumber: number; + TotalChunks: number; + File?: IRemoteStreamContent; + TotalSize: number; + FileName: string; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type PublicFilesUpload1Response = WrapResult; + +export type PublicFilesUpload1Error = WrapResult; + +export type PublicFilesGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + Path?: string; + }; +}; + +export type PublicFilesGetListResponse = WrapResultOfListResultDtoOfOssObjectDto; + +export type PublicFilesGetListError = WrapResult; + +export type PublicFilesGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + }; +}; + +export type PublicFilesGetResponse = IRemoteStreamContent; + +export type PublicFilesGetError = RemoteServiceErrorResponse; + +export type PublicFilesGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Process: string; + }; +}; + +export type PublicFilesGet1Response = IRemoteStreamContent; + +export type PublicFilesGet1Error = RemoteServiceErrorResponse; + +export type PublicFilesGet2Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + }; +}; + +export type PublicFilesGet2Response = IRemoteStreamContent; + +export type PublicFilesGet2Error = RemoteServiceErrorResponse; + +export type PublicFilesGet3Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + Process: string; + }; +}; + +export type PublicFilesGet3Response = IRemoteStreamContent; + +export type PublicFilesGet3Error = RemoteServiceErrorResponse; + +export type PublicFilesGet4Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + TenantId: string; + }; +}; + +export type PublicFilesGet4Response = IRemoteStreamContent; + +export type PublicFilesGet4Error = RemoteServiceErrorResponse; + +export type PublicFilesGet5Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Process: string; + TenantId: string; + }; +}; + +export type PublicFilesGet5Response = IRemoteStreamContent; + +export type PublicFilesGet5Error = RemoteServiceErrorResponse; + +export type PublicFilesGet6Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + TenantId: string; + }; +}; + +export type PublicFilesGet6Response = IRemoteStreamContent; + +export type PublicFilesGet6Error = RemoteServiceErrorResponse; + +export type PublicFilesGet7Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + Path: string; + Process: string; + TenantId: string; + }; +}; + +export type PublicFilesGet7Response = IRemoteStreamContent; + +export type PublicFilesGet7Error = RemoteServiceErrorResponse; + +export type PublishHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + workflowDefinitionId: string; + }; +}; + +export type PublishHandleResponse = WorkflowDefinition; + +export type PublishHandleError = ProblemDetails; + +export type ResourceGetByNameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type ResourceGetByNameResponse = WrapResultOfResourceDto; + +export type ResourceGetByNameError = WrapResult; + +export type ResourceDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type ResourceDeleteResponse = WrapResult; + +export type ResourceDeleteError = WrapResult; + +export type ResourceUpdateData = { + body?: ResourceUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type ResourceUpdateResponse = WrapResultOfResourceDto; + +export type ResourceUpdateError = WrapResult; + +export type ResourceCreateData = { + body?: ResourceCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ResourceCreateResponse = WrapResultOfResourceDto; + +export type ResourceCreateError = WrapResult; + +export type ResourceGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type ResourceGetListResponse = WrapResultOfListResultDtoOfResourceDto; + +export type ResourceGetListError = WrapResult; + +export type RestoreHandleData = { + body?: { + ContentType?: string; + ContentDisposition?: string; + Headers?: { + [key: string]: Array; + }; + Length?: number; + Name?: string; + FileName?: string; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type RestoreHandleResponse = unknown; + +export type RestoreHandleError = ProblemDetails; + +export type RetractHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + workflowDefinitionId: string; + }; +}; + +export type RetractHandleResponse = WorkflowDefinition; + +export type RetractHandleError = ProblemDetails; + +export type RetryHandleData = { + body?: RetryWorkflowRequest; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + id: string; + }; +}; + +export type RetryHandleResponse = unknown; + +export type RetryHandleError = ProblemDetails; + +export type RevertHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: ApiVersion; + definitionId: string; + version: number; + }; +}; + +export type RevertHandleResponse = WorkflowDefinition; + +export type RevertHandleError = ProblemDetails; + +export type RoleGetOrganizationUnitsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleGetOrganizationUnitsResponse = WrapResultOfListResultDtoOfOrganizationUnitDto; + +export type RoleGetOrganizationUnitsError = WrapResult; + +export type RoleSetOrganizationUnitsData = { + body?: IdentityRoleAddOrRemoveOrganizationUnitDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleSetOrganizationUnitsResponse = WrapResult; + +export type RoleSetOrganizationUnitsError = WrapResult; + +export type RoleRemoveOrganizationUnitsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + ouId: string; + }; +}; + +export type RoleRemoveOrganizationUnitsResponse = WrapResult; + +export type RoleRemoveOrganizationUnitsError = WrapResult; + +export type RoleGetClaimsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleGetClaimsResponse = WrapResultOfListResultDtoOfIdentityClaimDto; + +export type RoleGetClaimsError = WrapResult; + +export type RoleAddClaimData = { + body?: IdentityRoleClaimCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleAddClaimResponse = WrapResult; + +export type RoleAddClaimError = WrapResult; + +export type RoleUpdateClaimData = { + body?: IdentityRoleClaimUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleUpdateClaimResponse = WrapResult; + +export type RoleUpdateClaimError = WrapResult; + +export type RoleDeleteClaimData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query: { + ClaimType: string; + ClaimValue: string; + }; +}; + +export type RoleDeleteClaimResponse = WrapResult; + +export type RoleDeleteClaimError = WrapResult; + +export type RoleGetAllListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type RoleGetAllListResponse = WrapResultOfListResultDtoOfIdentityRoleDto; + +export type RoleGetAllListError = WrapResult; + +export type RoleGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ExtraProperties?: { + [key: string]: unknown; + }; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type RoleGetListResponse = WrapResultOfPagedResultDtoOfIdentityRoleDto; + +export type RoleGetListError = WrapResult; + +export type RoleCreateData = { + body?: IdentityRoleCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type RoleCreateResponse = WrapResultOfIdentityRoleDto; + +export type RoleCreateError = WrapResult; + +export type RoleGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleGetResponse = WrapResultOfIdentityRoleDto; + +export type RoleGetError = WrapResult; + +export type RoleUpdateData = { + body?: IdentityRoleUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleUpdateResponse = WrapResultOfIdentityRoleDto; + +export type RoleUpdateError = WrapResult; + +export type RoleDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleDeleteResponse = WrapResult; + +export type RoleDeleteError = WrapResult; + +export type RoleEntityRuleGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + EntityTypeId: string; + Operation: DataAccessOperation; + RoleName: string; + }; +}; + +export type RoleEntityRuleGetResponse = WrapResultOfRoleEntityRuleDto; + +export type RoleEntityRuleGetError = WrapResult; + +export type RoleEntityRuleCreateData = { + body?: RoleEntityRuleCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type RoleEntityRuleCreateResponse = WrapResultOfRoleEntityRuleDto; + +export type RoleEntityRuleCreateError = WrapResult; + +export type RoleEntityRuleUpdateData = { + body?: RoleEntityRuleUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type RoleEntityRuleUpdateResponse = WrapResultOfRoleEntityRuleDto; + +export type RoleEntityRuleUpdateError = WrapResult; + +export type SecurityLogDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type SecurityLogDeleteResponse = WrapResult; + +export type SecurityLogDeleteError = WrapResult; + +export type SecurityLogGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type SecurityLogGetResponse = WrapResultOfSecurityLogDto; + +export type SecurityLogGetError = WrapResult; + +export type SecurityLogGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ActionName?: string; + ApplicationName?: string; + ClientId?: string; + CorrelationId?: string; + EndTime?: string; + Identity?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + StartTime?: string; + UserId?: string; + UserName?: string; + }; +}; + +export type SecurityLogGetListResponse = WrapResultOfPagedResultDtoOfSecurityLogDto; + +export type SecurityLogGetListError = WrapResult; + +export type SettingSetCurrentTenantData = { + body?: UpdateSettingsDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingSetCurrentTenantResponse = WrapResult; + +export type SettingSetCurrentTenantError = WrapResult; + +export type SettingSetGlobalData = { + body?: UpdateSettingsDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingSetGlobalResponse = WrapResult; + +export type SettingSetGlobalError = WrapResult; + +export type SettingGetAllForGlobalData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingGetAllForGlobalResponse = WrapResultOfSettingGroupResult; + +export type SettingGetAllForGlobalError = WrapResult; + +export type SettingGetAllForCurrentTenantData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingGetAllForCurrentTenantResponse = WrapResultOfSettingGroupResult; + +export type SettingGetAllForCurrentTenantError = WrapResult; + +export type SettingSendTestEmailData = { + body?: SendTestEmailInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingSendTestEmailResponse = WrapResult; + +export type SettingSendTestEmailError = WrapResult; + +export type SettingDefinitionCreateData = { + body?: SettingDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type SettingDefinitionCreateResponse = WrapResultOfSettingDefinitionDto; + +export type SettingDefinitionCreateError = WrapResult; + +export type SettingDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + ProviderName?: string; + }; +}; + +export type SettingDefinitionGetListResponse = WrapResultOfListResultDtoOfSettingDefinitionDto; + +export type SettingDefinitionGetListError = WrapResult; + +export type SettingDefinitionDeleteOrRestoreData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type SettingDefinitionDeleteOrRestoreResponse = WrapResult; + +export type SettingDefinitionDeleteOrRestoreError = WrapResult; + +export type SettingDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type SettingDefinitionGetResponse = WrapResultOfSettingDefinitionDto; + +export type SettingDefinitionGetError = WrapResult; + +export type SettingDefinitionUpdateData = { + body?: SettingDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type SettingDefinitionUpdateResponse = WrapResultOfSettingDefinitionDto; + +export type SettingDefinitionUpdateError = WrapResult; + +export type StaticFilesUploadData = { + body?: { + Bucket?: string; + Path?: string; + FileName?: string; + Overwrite?: boolean; + File?: IRemoteStreamContent; + ExpirationTime?: TimeSpan; + }; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type StaticFilesUploadResponse = WrapResultOfOssObjectDto; + +export type StaticFilesUploadError = WrapResult; + +export type StaticFilesGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + }; +}; + +export type StaticFilesGetResponse = IRemoteStreamContent; + +export type StaticFilesGetError = RemoteServiceErrorResponse; + +export type StaticFilesGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Process: string; + }; +}; + +export type StaticFilesGet1Response = IRemoteStreamContent; + +export type StaticFilesGet1Error = RemoteServiceErrorResponse; + +export type StaticFilesGet2Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Path: string; + }; +}; + +export type StaticFilesGet2Response = IRemoteStreamContent; + +export type StaticFilesGet2Error = RemoteServiceErrorResponse; + +export type StaticFilesGet3Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Path: string; + Process: string; + }; +}; + +export type StaticFilesGet3Response = IRemoteStreamContent; + +export type StaticFilesGet3Error = RemoteServiceErrorResponse; + +export type StaticFilesGet4Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + TenantId: string; + }; +}; + +export type StaticFilesGet4Response = IRemoteStreamContent; + +export type StaticFilesGet4Error = RemoteServiceErrorResponse; + +export type StaticFilesGet5Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Process: string; + TenantId: string; + }; +}; + +export type StaticFilesGet5Response = IRemoteStreamContent; + +export type StaticFilesGet5Error = RemoteServiceErrorResponse; + +export type StaticFilesGet6Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Path: string; + TenantId: string; + }; +}; + +export type StaticFilesGet6Response = IRemoteStreamContent; + +export type StaticFilesGet6Error = RemoteServiceErrorResponse; + +export type StaticFilesGet7Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Bucket: string; + Name: string; + Path: string; + Process: string; + TenantId: string; + }; +}; + +export type StaticFilesGet7Response = IRemoteStreamContent; + +export type StaticFilesGet7Error = RemoteServiceErrorResponse; + +export type TenantGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type TenantGetResponse = WrapResultOfTenantDto; + +export type TenantGetError = WrapResult; + +export type TenantUpdateData = { + body?: TenantUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type TenantUpdateResponse = WrapResultOfTenantDto; + +export type TenantUpdateError = WrapResult; + +export type TenantDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type TenantDeleteResponse = WrapResult; + +export type TenantDeleteError = WrapResult; + +export type TenantGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TenantGet1Response = WrapResultOfTenantDto; + +export type TenantGet1Error = WrapResult; + +export type TenantGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type TenantGetListResponse = WrapResultOfPagedResultDtoOfTenantDto; + +export type TenantGetListError = WrapResult; + +export type TenantCreateData = { + body?: TenantCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type TenantCreateResponse = WrapResultOfTenantDto; + +export type TenantCreateError = WrapResult; + +export type TenantGetConnectionStringData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + name: string; + }; +}; + +export type TenantGetConnectionStringResponse = WrapResultOfTenantConnectionStringDto; + +export type TenantGetConnectionStringError = WrapResult; + +export type TenantDeleteConnectionStringData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + name: string; + }; +}; + +export type TenantDeleteConnectionStringResponse = WrapResult; + +export type TenantDeleteConnectionStringError = WrapResult; + +export type TenantGetConnectionString1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type TenantGetConnectionString1Response = WrapResultOfListResultDtoOfTenantConnectionStringDto; + +export type TenantGetConnectionString1Error = WrapResult; + +export type TenantSetConnectionStringData = { + body?: TenantConnectionStringCreateOrUpdate; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type TenantSetConnectionStringResponse = WrapResultOfTenantConnectionStringDto; + +export type TenantSetConnectionStringError = WrapResult; + +export type TextSetTextData = { + body?: SetTextInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type TextSetTextResponse = WrapResult; + +export type TextSetTextError = WrapResult; + +export type TextRestoreToDefaultData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + CultureName: string; + Key: string; + ResourceName: string; + }; +}; + +export type TextRestoreToDefaultResponse = WrapResult; + +export type TextRestoreToDefaultError = WrapResult; + +export type TextGetByCultureKeyData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + CultureName: string; + Key: string; + ResourceName: string; + }; +}; + +export type TextGetByCultureKeyResponse = WrapResultOfTextDto; + +export type TextGetByCultureKeyError = WrapResult; + +export type TextGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + CultureName: string; + Filter?: string; + OnlyNull?: boolean; + ResourceName?: string; + TargetCultureName: string; + }; +}; + +export type TextGetListResponse = WrapResultOfListResultDtoOfTextDifferenceDto; + +export type TextGetListError = WrapResult; + +export type TextTemplateContentGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Name: string; + }; + query?: { + Culture?: string; + }; +}; + +export type TextTemplateContentGetResponse = WrapResultOfTextTemplateContentDto; + +export type TextTemplateContentGetError = WrapResult; + +export type TextTemplateContentGet1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + Culture: string; + Name: string; + }; +}; + +export type TextTemplateContentGet1Response = WrapResultOfTextTemplateContentDto; + +export type TextTemplateContentGet1Error = WrapResult; + +export type TextTemplateContentRestoreToDefaultData = { + body?: TextTemplateRestoreInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TextTemplateContentRestoreToDefaultResponse = WrapResult; + +export type TextTemplateContentRestoreToDefaultError = WrapResult; + +export type TextTemplateContentUpdateData = { + body?: TextTemplateContentUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TextTemplateContentUpdateResponse = WrapResultOfTextTemplateContentDto; + +export type TextTemplateContentUpdateError = WrapResult; + +export type TextTemplateDefinitionCreateData = { + body?: TextTemplateDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type TextTemplateDefinitionCreateResponse = WrapResultOfTextTemplateDefinitionDto; + +export type TextTemplateDefinitionCreateError = WrapResult; + +export type TextTemplateDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + IsLayout?: boolean; + IsStatic?: boolean; + }; +}; + +export type TextTemplateDefinitionGetListResponse = WrapResultOfListResultDtoOfTextTemplateDefinitionDto; + +export type TextTemplateDefinitionGetListError = WrapResult; + +export type TextTemplateDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TextTemplateDefinitionDeleteResponse = WrapResult; + +export type TextTemplateDefinitionDeleteError = WrapResult; + +export type TextTemplateDefinitionGetByNameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TextTemplateDefinitionGetByNameResponse = WrapResultOfTextTemplateDefinitionDto; + +export type TextTemplateDefinitionGetByNameError = WrapResult; + +export type TextTemplateDefinitionUpdateData = { + body?: TextTemplateDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type TextTemplateDefinitionUpdateResponse = WrapResultOfTextTemplateDefinitionDto; + +export type TextTemplateDefinitionUpdateError = WrapResult; + +export type ThemeSettingGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ThemeSettingGetResponse = WrapResultOfThemeSettingDto; + +export type ThemeSettingGetError = WrapResult; + +export type ThemeSettingChangeData = { + body?: ThemeSettingDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type ThemeSettingChangeResponse = WrapResult; + +export type ThemeSettingChangeError = WrapResult; + +export type TriggerHandleData = { + body?: TriggerWorkflowsRequestModel; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + apiVersion: string; + }; +}; + +export type TriggerHandleResponse = TriggerWorkflowsRequestModel; + +export type TriggerHandleError = ProblemDetails; + +export type TriggerEndpointHandleData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + token: string; + }; +}; + +export type TriggerEndpointHandleResponse = unknown; + +export type TriggerEndpointHandleError = unknown; + +export type TriggerEndpointHandle1Data = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + token: string; + }; +}; + +export type TriggerEndpointHandle1Response = unknown; + +export type TriggerEndpointHandle1Error = unknown; + +export type UserGetOrganizationUnitsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserGetOrganizationUnitsResponse = WrapResultOfListResultDtoOfOrganizationUnitDto; + +export type UserGetOrganizationUnitsError = WrapResult; + +export type UserSetOrganizationUnitsData = { + body?: IdentityUserOrganizationUnitUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserSetOrganizationUnitsResponse = WrapResult; + +export type UserSetOrganizationUnitsError = WrapResult; + +export type UserRemoveOrganizationUnitsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + ouId: string; + }; +}; + +export type UserRemoveOrganizationUnitsResponse = WrapResult; + +export type UserRemoveOrganizationUnitsError = WrapResult; + +export type UserGetClaimsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserGetClaimsResponse = WrapResultOfListResultDtoOfIdentityClaimDto; + +export type UserGetClaimsError = WrapResult; + +export type UserAddClaimData = { + body?: IdentityUserClaimCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserAddClaimResponse = WrapResult; + +export type UserAddClaimError = WrapResult; + +export type UserUpdateClaimData = { + body?: IdentityUserClaimUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserUpdateClaimResponse = WrapResult; + +export type UserUpdateClaimError = WrapResult; + +export type UserDeleteClaimData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; + query: { + ClaimType: string; + ClaimValue?: string; + }; +}; + +export type UserDeleteClaimResponse = WrapResult; + +export type UserDeleteClaimError = WrapResult; + +export type UserChangePasswordData = { + body?: IdentityUserSetPasswordInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + id?: string; + }; +}; + +export type UserChangePasswordResponse = WrapResult; + +export type UserChangePasswordError = WrapResult; + +export type UserChangeTwoFactorEnabledData = { + body?: TwoFactorEnabledDto_1; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + id?: string; + }; +}; + +export type UserChangeTwoFactorEnabledResponse = WrapResult; + +export type UserChangeTwoFactorEnabledError = WrapResult; + +export type UserLockData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + seconds: number; + }; +}; + +export type UserLockResponse = WrapResult; + +export type UserLockError = WrapResult; + +export type UserUnLockData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserUnLockResponse = WrapResult; + +export type UserUnLockError = WrapResult; + +export type UserGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserGetResponse = WrapResultOfIdentityUserDto; + +export type UserGetError = WrapResult; + +export type UserUpdateData = { + body?: IdentityUserUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserUpdateResponse = WrapResultOfIdentityUserDto; + +export type UserUpdateError = WrapResult; + +export type UserDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserDeleteResponse = WrapResult; + +export type UserDeleteError = WrapResult; + +export type UserGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ExtraProperties?: { + [key: string]: unknown; + }; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type UserGetListResponse = WrapResultOfPagedResultDtoOfIdentityUserDto; + +export type UserGetListError = WrapResult; + +export type UserCreateData = { + body?: IdentityUserCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserCreateResponse = WrapResultOfIdentityUserDto; + +export type UserCreateError = WrapResult; + +export type UserGetRolesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserGetRolesResponse = WrapResultOfListResultDtoOfIdentityRoleDto; + +export type UserGetRolesError = WrapResult; + +export type UserUpdateRolesData = { + body?: IdentityUserUpdateRolesDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserUpdateRolesResponse = WrapResult; + +export type UserUpdateRolesError = WrapResult; + +export type UserGetAssignableRolesData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserGetAssignableRolesResponse = WrapResultOfListResultDtoOfIdentityRoleDto; + +export type UserGetAssignableRolesError = WrapResult; + +export type UserFindByUsernameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + userName: string; + }; +}; + +export type UserFindByUsernameResponse = WrapResultOfIdentityUserDto; + +export type UserFindByUsernameError = WrapResult; + +export type UserFindByEmailData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + email: string; + }; +}; + +export type UserFindByEmailResponse = WrapResultOfIdentityUserDto; + +export type UserFindByEmailError = WrapResult; + +export type UserFavoriteMenuCreateData = { + body?: UserFavoriteMenuCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + userId: string; + }; +}; + +export type UserFavoriteMenuCreateResponse = WrapResultOfUserFavoriteMenuDto; + +export type UserFavoriteMenuCreateError = WrapResult; + +export type UserFavoriteMenuGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + userId: string; + }; + query?: { + Framework?: string; + }; +}; + +export type UserFavoriteMenuGetListResponse = WrapResultOfListResultDtoOfUserFavoriteMenuDto; + +export type UserFavoriteMenuGetListError = WrapResult; + +export type UserFavoriteMenuUpdateData = { + body?: UserFavoriteMenuUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + userId: string; + }; +}; + +export type UserFavoriteMenuUpdateResponse = WrapResultOfUserFavoriteMenuDto; + +export type UserFavoriteMenuUpdateError = WrapResult; + +export type UserFavoriteMenuCreateMyFavoriteMenuData = { + body?: UserFavoriteMenuCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserFavoriteMenuCreateMyFavoriteMenuResponse = WrapResultOfUserFavoriteMenuDto; + +export type UserFavoriteMenuCreateMyFavoriteMenuError = WrapResult; + +export type UserFavoriteMenuGetMyFavoriteMenuListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Framework?: string; + }; +}; + +export type UserFavoriteMenuGetMyFavoriteMenuListResponse = WrapResultOfListResultDtoOfUserFavoriteMenuDto; + +export type UserFavoriteMenuGetMyFavoriteMenuListError = WrapResult; + +export type UserFavoriteMenuUpdateMyFavoriteMenuData = { + body?: UserFavoriteMenuUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserFavoriteMenuUpdateMyFavoriteMenuResponse = WrapResultOfUserFavoriteMenuDto; + +export type UserFavoriteMenuUpdateMyFavoriteMenuError = WrapResult; + +export type UserFavoriteMenuDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + MenuId: string; + userId: string; + }; +}; + +export type UserFavoriteMenuDeleteResponse = WrapResult; + +export type UserFavoriteMenuDeleteError = WrapResult; + +export type UserFavoriteMenuDeleteMyFavoriteMenuData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + MenuId: string; + }; +}; + +export type UserFavoriteMenuDeleteMyFavoriteMenuResponse = WrapResult; + +export type UserFavoriteMenuDeleteMyFavoriteMenuError = WrapResult; + +export type UserGroupApplyJoinGroupData = { + body?: UserJoinGroupDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserGroupApplyJoinGroupResponse = WrapResult; + +export type UserGroupApplyJoinGroupError = WrapResult; + +export type UserGroupGetGroupUsersData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query: { + Filter?: string; + GroupId: number; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type UserGroupGetGroupUsersResponse = WrapResultOfPagedResultDtoOfGroupUserCard; + +export type UserGroupGetGroupUsersError = WrapResult; + +export type UserGroupGetMyGroupsData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserGroupGetMyGroupsResponse = WrapResultOfListResultDtoOfGroup; + +export type UserGroupGetMyGroupsError = WrapResult; + +export type UserGroupGroupAcceptUserData = { + body?: GroupAcceptUserDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserGroupGroupAcceptUserResponse = WrapResult; + +export type UserGroupGroupAcceptUserError = WrapResult; + +export type UserGroupGroupRemoveUserData = { + body?: GroupRemoveUserDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserGroupGroupRemoveUserResponse = WrapResult; + +export type UserGroupGroupRemoveUserError = WrapResult; + +export type UserLookupFindByIdData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type UserLookupFindByIdResponse = WrapResultOfUserData; + +export type UserLookupFindByIdError = WrapResult; + +export type UserLookupFindByUserNameData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + userName: string; + }; +}; + +export type UserLookupFindByUserNameResponse = WrapResultOfUserData; + +export type UserLookupFindByUserNameError = WrapResult; + +export type UserLookupSearchData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + ExtraProperties?: { + [key: string]: unknown; + }; + Filter?: string; + MaxResultCount?: number; + SkipCount?: number; + Sorting?: string; + }; +}; + +export type UserLookupSearchResponse = WrapResultOfListResultDtoOfUserData; + +export type UserLookupSearchError = WrapResult; + +export type UserLookupGetCountData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type UserLookupGetCountResponse = WrapResultOfInt64; + +export type UserLookupGetCountError = WrapResult; + +export type UserSettingGetAllForCurrentUserData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserSettingGetAllForCurrentUserResponse = WrapResultOfSettingGroupResult; + +export type UserSettingGetAllForCurrentUserError = WrapResult; + +export type UserSettingSetCurrentUserData = { + body?: UpdateSettingsDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type UserSettingSetCurrentUserResponse = WrapResult; + +export type UserSettingSetCurrentUserError = WrapResult; + +export type WebhookDefinitionCreateData = { + body?: WebhookDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookDefinitionCreateResponse = WrapResultOfWebhookDefinitionDto; + +export type WebhookDefinitionCreateError = WrapResult; + +export type WebhookDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + GroupName?: string; + }; +}; + +export type WebhookDefinitionGetListResponse = WrapResultOfListResultDtoOfWebhookDefinitionDto; + +export type WebhookDefinitionGetListError = WrapResult; + +export type WebhookDefinitionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookDefinitionDeleteResponse = WrapResult; + +export type WebhookDefinitionDeleteError = WrapResult; + +export type WebhookDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookDefinitionGetResponse = WrapResultOfWebhookDefinitionDto; + +export type WebhookDefinitionGetError = WrapResult; + +export type WebhookDefinitionUpdateData = { + body?: WebhookDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookDefinitionUpdateResponse = WrapResultOfWebhookDefinitionDto; + +export type WebhookDefinitionUpdateError = WrapResult; + +export type WebhookGroupDefinitionCreateData = { + body?: WebhookGroupDefinitionCreateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookGroupDefinitionCreateResponse = WrapResultOfWebhookGroupDefinitionDto; + +export type WebhookGroupDefinitionCreateError = WrapResult; + +export type WebhookGroupDefinitionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + Filter?: string; + }; +}; + +export type WebhookGroupDefinitionGetListResponse = WrapResultOfListResultDtoOfWebhookGroupDefinitionDto; + +export type WebhookGroupDefinitionGetListError = WrapResult; + +export type WebhookGroupDefinitionDeleteAysncData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookGroupDefinitionDeleteAysncResponse = WrapResult; + +export type WebhookGroupDefinitionDeleteAysncError = WrapResult; + +export type WebhookGroupDefinitionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookGroupDefinitionGetResponse = WrapResultOfWebhookGroupDefinitionDto; + +export type WebhookGroupDefinitionGetError = WrapResult; + +export type WebhookGroupDefinitionUpdateData = { + body?: WebhookGroupDefinitionUpdateDto; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + name: string; + }; +}; + +export type WebhookGroupDefinitionUpdateResponse = WrapResultOfWebhookGroupDefinitionDto; + +export type WebhookGroupDefinitionUpdateError = WrapResult; + +export type WebhookPublishPublishData = { + body?: WebhookPublishInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookPublishPublishResponse = WrapResult; + +export type WebhookPublishPublishError = WrapResult; + +export type WebhookSendRecordGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSendRecordGetResponse = WrapResultOfWebhookSendRecordDto; + +export type WebhookSendRecordGetError = WrapResult; + +export type WebhookSendRecordDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSendRecordDeleteResponse = WrapResult; + +export type WebhookSendRecordDeleteError = WrapResult; + +export type WebhookSendRecordDeleteManyData = { + body?: WebhookSendRecordDeleteManyInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookSendRecordDeleteManyResponse = WrapResult; + +export type WebhookSendRecordDeleteManyError = WrapResult; + +export type WebhookSendRecordGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + BeginCreationTime?: string; + EndCreationTime?: string; + Filter?: string; + MaxResultCount?: number; + ResponseStatusCode?: HttpStatusCode; + SkipCount?: number; + Sorting?: string; + State?: boolean; + SubscriptionId?: string; + TenantId?: string; + WebhookEventId?: string; + }; +}; + +export type WebhookSendRecordGetListResponse = WrapResultOfPagedResultDtoOfWebhookSendRecordDto; + +export type WebhookSendRecordGetListError = WrapResult; + +export type WebhookSendRecordResendData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSendRecordResendResponse = WrapResult; + +export type WebhookSendRecordResendError = WrapResult; + +export type WebhookSendRecordResendManyData = { + body?: WebhookSendRecordResendManyInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookSendRecordResendManyResponse = WrapResult; + +export type WebhookSendRecordResendManyError = WrapResult; + +export type WebhookSubscriptionCreateData = { + body?: WebhookSubscriptionCreateInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookSubscriptionCreateResponse = WrapResultOfWebhookSubscriptionDto; + +export type WebhookSubscriptionCreateError = WrapResult; + +export type WebhookSubscriptionGetListData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + query?: { + BeginCreationTime?: string; + EndCreationTime?: string; + Filter?: string; + IsActive?: boolean; + MaxResultCount?: number; + Secret?: string; + SkipCount?: number; + Sorting?: string; + TenantId?: string; + Webhooks?: string; + WebhookUri?: string; + }; +}; + +export type WebhookSubscriptionGetListResponse = WrapResultOfPagedResultDtoOfWebhookSubscriptionDto; + +export type WebhookSubscriptionGetListError = WrapResult; + +export type WebhookSubscriptionDeleteData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSubscriptionDeleteResponse = WrapResult; + +export type WebhookSubscriptionDeleteError = WrapResult; + +export type WebhookSubscriptionGetData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSubscriptionGetResponse = WrapResultOfWebhookSubscriptionDto; + +export type WebhookSubscriptionGetError = WrapResult; + +export type WebhookSubscriptionUpdateData = { + body?: WebhookSubscriptionUpdateInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; + path: { + id: string; + }; +}; + +export type WebhookSubscriptionUpdateResponse = WrapResultOfWebhookSubscriptionDto; + +export type WebhookSubscriptionUpdateError = WrapResult; + +export type WebhookSubscriptionDeleteManyData = { + body?: WebhookSubscriptionDeleteManyInput; + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookSubscriptionDeleteManyResponse = WrapResult; + +export type WebhookSubscriptionDeleteManyError = WrapResult; + +export type WebhookSubscriptionGetAllAvailableWebhooksData = { + headers?: { + /** + * Tenant Id in http header + */ + __tenant?: unknown; + }; +}; + +export type WebhookSubscriptionGetAllAvailableWebhooksResponse = WrapResultOfListResultDtoOfWebhookAvailableGroupDto; + +export type WebhookSubscriptionGetAllAvailableWebhooksError = WrapResult; diff --git a/apps/react-admin/src/api/management/auditing/audit-logs.ts b/apps/react-admin/src/api/management/auditing/audit-logs.ts new file mode 100644 index 000000000..2a7c528c3 --- /dev/null +++ b/apps/react-admin/src/api/management/auditing/audit-logs.ts @@ -0,0 +1,30 @@ +import type { PagedResultDto } from "#/abp-core"; + +import type { AuditLogDto, AuditLogGetListInput } from "#/management/auditing"; +import requestClient from "../../request"; + +/** + * 获取审计日志 + * @param id 日志id + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/auditing/audit-log/${id}`); +} + +/** + * 获取审计日志分页列表 + * @param input 参数 + */ +export function getPagedListApi(input: AuditLogGetListInput): Promise> { + return requestClient.get>("/api/auditing/audit-log", { + params: input, + }); +} + +/** + * 删除审计日志 + * @param id 日志id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/auditing/audit-log/${id}`); +} diff --git a/apps/react-admin/src/api/management/auditing/entity-changes.ts b/apps/react-admin/src/api/management/auditing/entity-changes.ts new file mode 100644 index 000000000..5187a6023 --- /dev/null +++ b/apps/react-admin/src/api/management/auditing/entity-changes.ts @@ -0,0 +1,16 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { EntityChangeGetWithUsernameInput, EntityChangeWithUsernameDto } from "#/management/auditing"; +import requestClient from "../../request"; + +/** + * 获取包含用户名称的实体变更列表 + * @param input 参数 + */ +export function getListWithUsernameApi( + input: EntityChangeGetWithUsernameInput, +): Promise> { + return requestClient.get>("/api/auditing/entity-changes/with-username", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/management/auditing/index.ts b/apps/react-admin/src/api/management/auditing/index.ts new file mode 100644 index 000000000..ea927ea71 --- /dev/null +++ b/apps/react-admin/src/api/management/auditing/index.ts @@ -0,0 +1,2 @@ +export * as auditLogsApi from "./audit-logs"; +export * as entityChangesApi from "./entity-changes"; diff --git a/apps/react-admin/src/api/management/identity/claim-types.ts b/apps/react-admin/src/api/management/identity/claim-types.ts new file mode 100644 index 000000000..7d4e1d9d9 --- /dev/null +++ b/apps/react-admin/src/api/management/identity/claim-types.ts @@ -0,0 +1,64 @@ +import type { ListResultDto, PagedResultDto } from "#/abp-core"; + +import type { + GetIdentityClaimTypePagedListInput, + IdentityClaimTypeCreateDto, + IdentityClaimTypeDto, + IdentityClaimTypeUpdateDto, +} from "#/management/identity"; +import requestClient from "../../request"; + +/** + * 新增用户声明 + * @param input 参数 + * @returns 用户声明实体数据传输对象 + */ +export function createApi(input: IdentityClaimTypeCreateDto): Promise { + return requestClient.post("/api/identity/claim-types", input); +} + +/** + * 删除用户声明 + * @param id 用户声明id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/identity/claim-types/${id}`); +} + +/** + * 查询用户声明 + * @param id 用户声明id + * @returns 用户声明实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/identity/claim-types/${id}`); +} + +/** + * 更新用户声明 + * @param id 用户声明id + * @returns 用户声明实体数据传输对象 + */ +export function updateApi(id: string, input: IdentityClaimTypeUpdateDto): Promise { + return requestClient.put(`/api/identity/claim-types/${id}`, input); +} + +/** + * 查询用户声明分页列表 + * @param input 过滤参数 + * @returns 用户声明实体数据传输对象分页列表 + */ +export function getPagedListApi( + input?: GetIdentityClaimTypePagedListInput, +): Promise> { + return requestClient.get>("/api/identity/claim-types", { + params: input, + }); +} + +/** + * 获取可用的声明类型列表 + */ +export function getAssignableClaimsApi(): Promise> { + return requestClient.get>("/api/identity/claim-types/actived-list"); +} diff --git a/apps/react-admin/src/api/management/identity/organization-units.ts b/apps/react-admin/src/api/management/identity/organization-units.ts new file mode 100644 index 000000000..853724019 --- /dev/null +++ b/apps/react-admin/src/api/management/identity/organization-units.ts @@ -0,0 +1,173 @@ +import type { ListResultDto, PagedResultDto } from "#/abp-core"; + +import type { IdentityRoleDto, IdentityUserDto } from "#/management/identity"; +import type { + GetIdentityRolesInput, + GetIdentityUsersInput, + GetOrganizationUnitPagedListInput, + GetUnaddedRoleListInput, + GetUnaddedUserListInput, + OrganizationUnitAddRoleDto, + OrganizationUnitAddUserDto, + OrganizationUnitCreateDto, + OrganizationUnitDto, + OrganizationUnitGetChildrenDto, + OrganizationUnitUpdateDto, +} from "#/management/identity/organization-units"; + +import requestClient from "../../request"; + +/** + * 新增组织机构 + * @param input 参数 + * @returns 组织机构实体数据传输对象 + */ +export function createApi(input: OrganizationUnitCreateDto): Promise { + return requestClient.post("/api/identity/organization-units", input); +} + +/** + * 删除组织机构 + * @param id 组织机构id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/identity/organization-units/${id}`); +} + +/** + * 查询组织机构 + * @param id 组织机构id + * @returns 组织机构实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/identity/organization-units/${id}`); +} + +/** + * 更新组织机构 + * @param id 组织机构id + * @returns 组织机构实体数据传输对象 + */ + +export function updateApi(id: string, input: OrganizationUnitUpdateDto): Promise { + return requestClient.put(`/api/identity/organization-units/${id}`, input); +} + +/** + * 查询组织机构分页列表 + * @param input 过滤参数 + * @returns 组织机构实体数据传输对象分页列表 + */ +export function getPagedListApi( + input?: GetOrganizationUnitPagedListInput, +): Promise> { + return requestClient.get>("/api/identity/organization-units", { + params: input, + }); +} + +/** + * 查询根组织机构列表 + * @returns 组织机构实体数据传输对象列表 + */ +export function getRootListApi(): Promise> { + return requestClient.get>("/api/identity/organization-units/root-node"); +} + +/** + * 查询组织机构列表 + * @returns 组织机构实体数据传输对象列表 + */ +export function getAllListApi(): Promise> { + return requestClient.get>("/api/identity/organization-units/all"); +} + +/** + * 查询下级组织机构列表 + * @param input 查询参数 + * @returns 组织机构实体数据传输对象列表 + */ +export function getChildrenApi(input: OrganizationUnitGetChildrenDto): Promise> { + return requestClient.get>("/api/identity/organization-units/find-children", { + params: input, + }); +} + +/** + * 查询组织机构用户列表 + * @param id 组织机构id + * @param input 查询过滤参数 + * @returns 用户实体数据传输对象分页列表 + */ +export function getUserListApi(id: string, input?: GetIdentityUsersInput): Promise> { + return requestClient.get>(`/api/identity/organization-units/${id}/users`, { + params: input, + }); +} + +/** + * 查询未加入组织机构的用户列表 + * @param input 查询过滤参数 + * @returns 用户实体数据传输对象分页列表 + */ +export function getUnaddedUserListApi(input: GetUnaddedUserListInput): Promise> { + return requestClient.get>( + `/api/identity/organization-units/${input.id}/unadded-users`, + { + params: input, + }, + ); +} + +/** + * 用户添加到组织机构 + * @param id 组织机构id + * @param input 用户id列表 + */ +export function addMembers(id: string, input: OrganizationUnitAddUserDto): Promise { + return requestClient.post(`/api/identity/organization-units/${id}/users`, input); +} + +/** + * 查询组织机构角色列表 + * @param id 组织机构id + * @param input 查询过滤参数 + * @returns 角色实体数据传输对象分页列表 + */ +export function getRoleListApi(id: string, input?: GetIdentityRolesInput): Promise> { + return requestClient.get>(`/api/identity/organization-units/${id}/roles`, { + params: input, + }); +} + +/** + * 查询未加入组织机构的角色列表 + * @param input 查询过滤参数 + * @returns 角色实体数据传输对象分页列表 + */ +export function getUnaddedRoleListApi(input: GetUnaddedRoleListInput): Promise> { + return requestClient.get>( + `/api/identity/organization-units/${input.id}/unadded-roles`, + { + params: input, + }, + ); +} + +/** + * 角色添加到组织机构 + * @param id 组织机构id + * @param input 角色id列表 + */ +export function addRoles(id: string, input: OrganizationUnitAddRoleDto): Promise { + return requestClient.post(`/api/identity/organization-units/${id}/roles`, input); +} + +/** + * 移动组织机构 + * @param id 组织机构id + * @param parentId 父级组织机构id + */ +export function moveTo(id: string, parentId?: string): Promise { + return requestClient.put(`api/identity/organization-units/${id}/move`, { parentId }); +} diff --git a/apps/react-admin/src/api/management/identity/role.ts b/apps/react-admin/src/api/management/identity/role.ts new file mode 100644 index 000000000..98929cefe --- /dev/null +++ b/apps/react-admin/src/api/management/identity/role.ts @@ -0,0 +1,109 @@ +import type { PagedResultDto, ListResultDto } from "#/abp-core"; + +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +} from "#/management/identity/claims"; + +import type { + GetRolePagedListInput, + IdentityRoleCreateDto, + IdentityRoleDto, + IdentityRoleUpdateDto, +} from "#/management/identity"; + +import requestClient from "../../request"; + +/** + * 新增角色 + * @param input 参数 + * @returns 角色实体数据传输对象 + */ +export function createApi(input: IdentityRoleCreateDto): Promise { + return requestClient.post("/api/identity/roles", input); +} + +/** + * 删除角色 + * @param id 角色id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/identity/roles/${id}`); +} + +/** + * 查询角色 + * @param id 角色id + * @returns 角色实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/identity/roles/${id}`); +} + +/** + * 更新角色 + * @param id 角色id + * @returns 角色实体数据传输对象 + */ +export function updateApi(id: string, input: IdentityRoleUpdateDto): Promise { + return requestClient.put(`/api/identity/roles/${id}`, input); +} + +/** + * 查询角色分页列表 + * @param input 过滤参数 + * @returns 角色实体数据传输对象分页列表 + */ +export function getPagedListApi(input?: GetRolePagedListInput): Promise> { + return requestClient.get>("/api/identity/roles", { + params: input, + }); +} + +/** + * 从组织机构中移除角色 + * @param id 角色id + * @param ouId 组织机构id + */ +export function removeOrganizationUnitApi(id: string, ouId: string): Promise { + return requestClient.delete(`/api/identity/roles/${id}/organization-units/${ouId}`); +} + +/** + * 获取角色声明列表 + * @param id 角色id + */ +export function getClaimsApi(id: string): Promise> { + return requestClient.get>(`/api/identity/roles/${id}/claims`); +} + +/** + * 删除角色声明 + * @param id 角色id + * @param input 角色声明dto + */ +export function deleteClaimApi(id: string, input: IdentityClaimDeleteDto): Promise { + return requestClient.delete(`/api/identity/roles/${id}/claims`, { + params: input, + }); +} + +/** + * 创建角色声明 + * @param id 角色id + * @param input 角色声明dto + */ +export function createClaimApi(id: string, input: IdentityClaimCreateDto): Promise { + return requestClient.post(`/api/identity/roles/${id}/claims`, input); +} + +/** + * 更新角色声明 + * @param id 角色id + * @param input 用户角色dto + */ +export function updateClaimApi(id: string, input: IdentityClaimUpdateDto): Promise { + return requestClient.put(`/api/identity/roles/${id}/claims`, input); +} diff --git a/apps/react-admin/src/api/management/identity/security-logs.ts b/apps/react-admin/src/api/management/identity/security-logs.ts new file mode 100644 index 000000000..dba450801 --- /dev/null +++ b/apps/react-admin/src/api/management/identity/security-logs.ts @@ -0,0 +1,31 @@ +import type { GetSecurityLogPagedRequest, SecurityLogDto } from "#/management/identity"; +import type { PagedResultDto } from "#/abp-core"; +import requestClient from "../../request"; + +/** + * 删除安全日志 + * @param id 安全日志id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/auditing/security-log/${id}`); +} + +/** + * 查询安全日志 + * @param id 安全日志id + * @returns 安全日志实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/auditing/security-log/${id}`); +} + +/** + * 查询安全日志分页列表 + * @param input 过滤参数 + * @returns 安全日志实体数据传输对象分页列表 + */ +export function getPagedListApi(input?: GetSecurityLogPagedRequest): Promise> { + return requestClient.get>("/api/auditing/security-log", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/management/identity/user-lookup.ts b/apps/react-admin/src/api/management/identity/user-lookup.ts new file mode 100644 index 000000000..d2f253d28 --- /dev/null +++ b/apps/react-admin/src/api/management/identity/user-lookup.ts @@ -0,0 +1,44 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { IdentityUserDto, UserLookupCountInput, UserLookupSearchInput } from "#/management/identity/user"; + +import requestClient from "../../request"; + +/** + * 通过id查询用户 + * @param id 用户id + * @returns 用户实体数据传输对象 + */ +export function findByIdApi(id: string): Promise { + return requestClient.get(`/api/identity/users/lookup/${id}`); +} + +/** + * 通过用户名查询用户 + * @param userName 用户名 + * @returns 用户实体数据传输对象 + */ +export function findByUserNameApi(userName: string): Promise { + return requestClient.get(`/api/identity/users/lookup/by-username/${userName}`); +} + +/** + * 搜索用户列表 + * @param input 搜索过滤条件 + * @returns 用户实体数据传输对象列表 + */ +export function searchApi(input?: UserLookupSearchInput): Promise> { + return requestClient.get>("/api/identity/users/lookup/search", { + params: input, + }); +} + +/** + * 搜索用户数量 + * @param input 搜索过滤条件 + */ +export function countApi(input?: UserLookupCountInput): Promise { + return requestClient.get("/api/identity/users/lookup/count", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/management/identity/user-sessions.ts b/apps/react-admin/src/api/management/identity/user-sessions.ts new file mode 100644 index 000000000..d926b6e16 --- /dev/null +++ b/apps/react-admin/src/api/management/identity/user-sessions.ts @@ -0,0 +1,22 @@ +import type { PagedResultDto } from "#/abp-core"; +import type { GetUserSessionsInput, IdentitySessionDto } from "#/management/identity/sessions"; +import requestClient from "@/api/request"; + +/** + * 查询会话列表 + * @param { GetUserSessionsInput } input 查询参数 + * @returns { Promise> } 用户会话列表 + */ +export function getSessionsApi(input?: GetUserSessionsInput): Promise> { + return requestClient.get>("/api/identity/sessions", { + params: input, + }); +} +/** + * 撤销会话 + * @param { string } sessionId 会话id + * @returns { Promise } + */ +export function revokeSessionApi(sessionId: string): Promise { + return requestClient.delete(`/api/identity/sessions/${sessionId}/revoke`); +} diff --git a/apps/react-admin/src/api/management/identity/users.ts b/apps/react-admin/src/api/management/identity/users.ts new file mode 100644 index 000000000..0a1a3174b --- /dev/null +++ b/apps/react-admin/src/api/management/identity/users.ts @@ -0,0 +1,155 @@ +import type { ListResultDto, PagedResultDto } from "#/abp-core"; +import type { IdentityRoleDto, OrganizationUnitDto } from "#/management/identity"; +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimDto, + IdentityClaimUpdateDto, +} from "#/management/identity/claims"; +import type { + ChangeUserPasswordInput, + GetUserPagedListInput, + IdentityUserCreateDto, + IdentityUserDto, + IdentityUserUpdateDto, +} from "#/management/identity"; +import requestClient from "../../request"; + +/** + * 新增用户 + * @param input 参数 + * @returns 用户实体数据传输对象 + */ +export function createApi(input: IdentityUserCreateDto): Promise { + return requestClient.post("/api/identity/users", input); +} + +/** + * 删除用户 + * @param id 用户id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/identity/users/${id}`); +} + +/** + * 查询用户 + * @param id 用户id + * @returns 用户实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/identity/users/${id}`); +} + +/** + * 更新用户 + * @param id 用户id + * @returns 用户实体数据传输对象 + */ +export function updateApi(id: string, input: IdentityUserUpdateDto): Promise { + return requestClient.put(`/api/identity/users/${id}`, input); +} + +/** + * 查询用户分页列表 + * @param input 过滤参数 + * @returns 用户实体数据传输对象分页列表 + */ +export function getPagedListApi(input?: GetUserPagedListInput): Promise> { + return requestClient.get>("/api/identity/users", { + params: input, + }); +} + +/** + * 从组织机构中移除用户 + * @param id 用户id + * @param ouId 组织机构id + */ +export function removeOrganizationUnitApi(id: string, ouId: string): Promise { + return requestClient.delete(`/api/identity/users/${id}/organization-units/${ouId}`); +} + +/** + * 获取用户组织机构列表 + * @param id 用户id + */ +export function getOrganizationUnitsApi(id: string): Promise> { + return requestClient.get>(`/api/identity/users/${id}/organization-units`); +} + +/** + * 锁定用户 + * @param id 用户id + * @param seconds 锁定时长(秒) + */ +export function lockApi(id: string, seconds: number): Promise { + return requestClient.put(`/api/identity/users/${id}/lock/${seconds}`); +} + +/** + * 解锁用户 + * @param id 用户id + */ +export function unLockApi(id: string): Promise { + return requestClient.put(`/api/identity/users/${id}/unlock`); +} + +/** + * 更改用户密码 + * @param id 用户id + * @param input 密码变更dto + */ +export function changePasswordApi(id: string, input: ChangeUserPasswordInput): Promise { + return requestClient.put(`/api/identity/users/change-password?id=${id}`, input); +} + +/** + * 获取可用的角色列表 + */ +export function getAssignableRolesApi(): Promise> { + return requestClient.get>("/api/identity/users/assignable-roles"); +} + +/** + * 获取用户角色列表 + * @param id 用户id + */ +export function getRolesApi(id: string): Promise> { + return requestClient.get>(`/api/identity/users/${id}/roles`); +} + +/** + * 获取用户声明列表 + * @param id 用户id + */ +export function getClaimsApi(id: string): Promise> { + return requestClient.get>(`/api/identity/users/${id}/claims`); +} + +/** + * 删除用户声明 + * @param id 用户id + * @param input 用户声明dto + */ +export function deleteClaimApi(id: string, input: IdentityClaimDeleteDto): Promise { + return requestClient.delete(`/api/identity/users/${id}/claims`, { params: input }); +} + +/** + * 创建用户声明 + * @param id 用户id + * @param input 用户声明dto + */ +export function createClaimApi(id: string, input: IdentityClaimCreateDto): Promise { + return requestClient.post(`/api/identity/users/${id}/claims`, input); +} + +/** + * 更新用户声明 + * @param id 用户id + * @param input 用户声明dto + */ +export function updateClaimApi(id: string, input: IdentityClaimUpdateDto): Promise { + return requestClient.put(`/api/identity/users/${id}/claims`, input); +} diff --git a/apps/react-admin/src/api/management/notifications/my-notifications.ts b/apps/react-admin/src/api/management/notifications/my-notifications.ts new file mode 100644 index 000000000..70bb6a834 --- /dev/null +++ b/apps/react-admin/src/api/management/notifications/my-notifications.ts @@ -0,0 +1,35 @@ +import type { PagedResultDto } from "#/abp-core"; + +import type { + GetMyNotifilerPagedListInput, + MarkReadStateInput, + UserNotificationDto, +} from "#/notifications/my-notifilers"; + +import requestClient from "@/api/request"; +/** + * 获取我的通知列表 + * @param {GetMyNotifilerPagedListInput} input 参数 + * @returns {Promise>} 通知分页列表 + */ +export function getMyNotifilersApi(input?: GetMyNotifilerPagedListInput): Promise> { + return requestClient.get>("/api/notifications/my-notifilers", { + params: input, + }); +} +/** + * 删除我的通知 + * @param {string} id 通知id + * @returns {void} + */ +export function deleteMyNotifilerApi(id: string): Promise { + return requestClient.delete(`/api/notifications/my-notifilers/${id}`); +} +/** + * 设置通知已读状态 + * @param {MarkReadStateInput} input 参数 + * @returns {void} + */ +export function markReadStateApi(input: MarkReadStateInput): Promise { + return requestClient.put("/api/notifications/my-notifilers/mark-read-state", input); +} diff --git a/apps/react-admin/src/api/management/notifications/notifications.ts b/apps/react-admin/src/api/management/notifications/notifications.ts new file mode 100644 index 000000000..a0121fe4f --- /dev/null +++ b/apps/react-admin/src/api/management/notifications/notifications.ts @@ -0,0 +1,39 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { NotificationGroupDto, NotificationTemplateDto } from "#/notifications/definitions"; +import type { NotificationSendInput, NotificationTemplateSendInput } from "#/notifications/notifications"; + +import requestClient from "@/api/request"; + +/** + * 获取可用通知列表 + * @returns {Promise>} 可用通知列表 + */ +export function getAssignableNotifiersApi(): Promise> { + return requestClient.get>("/api/notifications/assignables"); +} +/** + * 获取可用通知模板列表 + * @returns {Promise>} 可用通知模板列表 + */ +export function getAssignableTemplatesApi(): Promise> { + return requestClient.get>("/api/notifications/assignable-templates", { + method: "GET", + }); +} +/** + * 发送通知 + * @param input 参数 + * @returns {Promise} + */ +export function sendNotiferApi(input: NotificationSendInput): Promise { + return requestClient.post("/api/notifications/send", input); +} +/** + * 发送模板通知 + * @param input 参数 + * @returns {Promise} + */ +export function sendTemplateNotiferApi(input: NotificationTemplateSendInput): Promise { + return requestClient.post("/api/notifications/send/template", input); +} diff --git a/apps/react-admin/src/api/management/permissions/definitions.ts b/apps/react-admin/src/api/management/permissions/definitions.ts new file mode 100644 index 000000000..4abfbf3c6 --- /dev/null +++ b/apps/react-admin/src/api/management/permissions/definitions.ts @@ -0,0 +1,57 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { + PermissionDefinitionCreateDto, + PermissionDefinitionDto, + PermissionDefinitionGetListInput, + PermissionDefinitionUpdateDto, +} from "#/management/permissions/definitions"; + +import requestClient from "../../request"; + +/** + * 删除权限定义 + * @param name 权限名称 + */ +export function deleteApi(name: string): Promise { + return requestClient.delete(`/api/permission-management/definitions/${name}`); +} + +/** + * 查询权限定义 + * @param name 权限名称 + * @returns 权限定义数据传输对象 + */ +export function getApi(name: string): Promise { + return requestClient.get(`/api/permission-management/definitions/${name}`); +} + +/** + * 查询权限定义列表 + * @param input 权限过滤条件 + * @returns 权限定义数据传输对象列表 + */ +export function getListApi(input?: PermissionDefinitionGetListInput): Promise> { + return requestClient.get>("/api/permission-management/definitions", { + params: input, + }); +} + +/** + * 创建权限定义 + * @param input 权限定义参数 + * @returns 权限定义数据传输对象 + */ +export function createApi(input: PermissionDefinitionCreateDto): Promise { + return requestClient.post("/api/permission-management/definitions", input); +} + +/** + * 更新权限定义 + * @param name 权限名称 + * @param input 权限定义参数 + * @returns 权限定义数据传输对象 + */ +export function updateApi(name: string, input: PermissionDefinitionUpdateDto): Promise { + return requestClient.put(`/api/permission-management/definitions/${name}`, input); +} diff --git a/apps/react-admin/src/api/management/permissions/groups.ts b/apps/react-admin/src/api/management/permissions/groups.ts new file mode 100644 index 000000000..fe062fff3 --- /dev/null +++ b/apps/react-admin/src/api/management/permissions/groups.ts @@ -0,0 +1,68 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { + PermissionGroupDefinitionCreateDto, + PermissionGroupDefinitionDto, + PermissionGroupDefinitionGetListInput, + PermissionGroupDefinitionUpdateDto, +} from "#/management/permissions/groups"; + +import requestClient from "../../request"; + +/** + * 删除权限定义 + * @param name 权限名称 + */ +export function deleteApi(name: string): Promise { + return requestClient.delete(`/api/permission-management/definitions/groups/${name}`); +} + +/** + * 查询权限定义 + * @param name 权限名称 + * @returns 权限定义数据传输对象 + */ +export function getApi(name: string): Promise { + return requestClient.get(`/api/permission-management/definitions/groups/${name}`); +} + +/** + * 查询权限定义列表 + * @param input 权限过滤条件 + * @returns 权限定义数据传输对象列表 + */ +export function getListApi( + input?: PermissionGroupDefinitionGetListInput, +): Promise> { + return requestClient.get>( + "/api/permission-management/definitions/groups", + { + params: input, + }, + ); +} + +/** + * 创建权限定义 + * @param input 权限定义参数 + * @returns 权限定义数据传输对象 + */ +export function createApi(input: PermissionGroupDefinitionCreateDto): Promise { + return requestClient.post("/api/permission-management/definitions/groups", input); +} + +/** + * 更新权限定义 + * @param name 权限名称 + * @param input 权限定义参数 + * @returns 权限定义数据传输对象 + */ +export function updateApi( + name: string, + input: PermissionGroupDefinitionUpdateDto, +): Promise { + return requestClient.put( + `/api/permission-management/definitions/groups/${name}`, + input, + ); +} diff --git a/apps/react-admin/src/api/management/permissions/permissions.ts b/apps/react-admin/src/api/management/permissions/permissions.ts new file mode 100644 index 000000000..5425039b6 --- /dev/null +++ b/apps/react-admin/src/api/management/permissions/permissions.ts @@ -0,0 +1,25 @@ +import type { PermissionProvider, PermissionResultDto, PermissionsUpdateDto } from "#/management/permissions"; + +import requestClient from "../../request"; + +/** + * 查询权限 + * @param provider + * @returns 权限实体数据传输对象 + */ +export function getApi(provider: PermissionProvider): Promise { + return requestClient.get("/api/permission-management/permissions", { + params: provider, + }); +} + +/** + * 更新权限 + * @param provider + * @param input + */ +export function updateApi(provider: PermissionProvider, input: PermissionsUpdateDto): Promise { + return requestClient.put("/api/permission-management/permissions", input, { + params: provider, + }); +} diff --git a/apps/react-admin/src/api/management/settings/definitions.ts b/apps/react-admin/src/api/management/settings/definitions.ts new file mode 100644 index 000000000..f48262c6a --- /dev/null +++ b/apps/react-admin/src/api/management/settings/definitions.ts @@ -0,0 +1,56 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { + SettingDefinitionCreateDto, + SettingDefinitionDto, + SettingDefinitionGetListInput, + SettingDefinitionUpdateDto, +} from "#/management/settings/definitions"; +import requestClient from "@/api/request"; + +/** + * 删除设置定义 + * @param name 设置名称 + */ +export function deleteApi(name: string): Promise { + return requestClient.delete(`/api/setting-management/settings/definitions/${name}`); +} + +/** + * 查询设置定义 + * @param name 设置名称 + * @returns 设置定义数据传输对象 + */ +export function getApi(name: string): Promise { + return requestClient.get(`/api/setting-management/settings/definitions/${name}`); +} + +/** + * 查询设置定义列表 + * @param input 设置过滤条件 + * @returns 设置定义数据传输对象列表 + */ +export function getListApi(input?: SettingDefinitionGetListInput): Promise> { + return requestClient.get>("/api/setting-management/settings/definitions", { + params: input, + }); +} + +/** + * 创建设置定义 + * @param input 设置定义参数 + * @returns 设置定义数据传输对象 + */ +export function createApi(input: SettingDefinitionCreateDto): Promise { + return requestClient.post("/api/setting-management/settings/definitions", input); +} + +/** + * 更新设置定义 + * @param name 设置名称 + * @param input 设置定义参数 + * @returns 设置定义数据传输对象 + */ +export function updateApi(name: string, input: SettingDefinitionUpdateDto): Promise { + return requestClient.put(`/api/setting-management/settings/definitions/${name}`, input); +} diff --git a/apps/react-admin/src/api/management/settings/settings.ts b/apps/react-admin/src/api/management/settings/settings.ts new file mode 100644 index 000000000..399b70314 --- /dev/null +++ b/apps/react-admin/src/api/management/settings/settings.ts @@ -0,0 +1,62 @@ +import type { ListResultDto } from "#/abp-core"; + +import type { SettingGroup, SettingsUpdateInput } from "#/management/settings"; + +import requestClient from "@/api/request"; + +/** + * 获取全局设置 + * @returns 设置数据传输对象列表 + */ +export function getGlobalSettingsApi(): Promise> { + return requestClient.get>("/api/setting-management/settings/by-global"); +} + +/** + * 设置全局设置 + * @returns 设置数据传输对象列表 + */ +export function setGlobalSettingsApi(input: SettingsUpdateInput): Promise { + return requestClient.put("/api/setting-management/settings/change-global", input); +} + +/** + * 获取租户设置 + * @returns 设置数据传输对象列表 + */ +export function getTenantSettingsApi(): Promise> { + return requestClient.get>("api/setting-management/settings/by-current-tenant"); +} + +/** + * 设置租户设置 + * @returns 设置数据传输对象列表 + */ +export function setTenantSettingsApi(input: SettingsUpdateInput): Promise { + return requestClient.put("/api/setting-management/settings/change-current-tenant", input); +} +/** + * 获取用户设置 + * @returns 设置数据传输对象列表 + */ +export function getUserSettingsApi(): Promise> { + return requestClient.get>("/api/setting-management/settings/by-current-user"); +} + +/** + * 设置用户设置 + * @returns 设置数据传输对象列表 + */ +export function setUserSettingsApi(input: SettingsUpdateInput): Promise { + return requestClient.put("/api/setting-management/settings/change-current-user", input); +} + +/** + * 发送测试邮件 + * @param emailAddress 邮件接收方地址 + */ +export const sendTestEmailApi = (emailAddress: string) => { + return requestClient.post("/api/setting-management/settings/send-test-email", { + emailAddress, + }); +}; diff --git a/apps/react-admin/src/api/openiddict/applications.ts b/apps/react-admin/src/api/openiddict/applications.ts new file mode 100644 index 000000000..1b4828ecf --- /dev/null +++ b/apps/react-admin/src/api/openiddict/applications.ts @@ -0,0 +1,58 @@ +import type { PagedResultDto } from "#/abp-core"; +import type { + OpenIddictApplicationCreateDto, + OpenIddictApplicationDto, + OpenIddictApplicationGetListInput, + OpenIddictApplicationUpdateDto, +} from "#/openiddict/applications"; + +import requestClient from "../request"; + +/** + * 创建应用 + * @param input 参数 + * @returns 应用实体数据传输对象 + */ +export function createApi(input: OpenIddictApplicationCreateDto): Promise { + return requestClient.post("/api/openiddict/applications", input); +} + +/** + * 删除应用 + * @param id 应用id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/openiddict/applications/${id}`); +} + +/** + * 查询应用 + * @param id 应用id + * @returns 应用实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/openiddict/applications/${id}`); +} + +/** + * 更新应用 + * @param id 应用id + * @param input 更新参数 + * @returns 应用实体数据传输对象 + */ +export function updateApi(id: string, input: OpenIddictApplicationUpdateDto): Promise { + return requestClient.put(`/api/openiddict/applications/${id}`, input); +} + +/** + * 查询应用分页列表 + * @param input 过滤参数 + * @returns 应用实体数据传输对象分页列表 + */ +export function getPagedListApi( + input?: OpenIddictApplicationGetListInput, +): Promise> { + return requestClient.get>("/api/openiddict/applications", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/openiddict/authorizations.ts b/apps/react-admin/src/api/openiddict/authorizations.ts new file mode 100644 index 000000000..737aa891b --- /dev/null +++ b/apps/react-admin/src/api/openiddict/authorizations.ts @@ -0,0 +1,34 @@ +import type { PagedResultDto } from "#/abp-core"; +import type { OpenIddictAuthorizationDto, OpenIddictAuthorizationGetListInput } from "#/openiddict/authorizations"; + +import requestClient from "../request"; + +/** + * 删除授权 + * @param id 授权id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/openiddict/authorizations/${id}`); +} + +/** + * 查询授权 + * @param id 授权id + * @returns 授权实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/openiddict/authorizations/${id}`); +} + +/** + * 查询授权分页列表 + * @param input 过滤参数 + * @returns 授权实体数据传输对象分页列表 + */ +export function getPagedListApi( + input?: OpenIddictAuthorizationGetListInput, +): Promise> { + return requestClient.get>("/api/openiddict/authorizations", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/openiddict/open-id.ts b/apps/react-admin/src/api/openiddict/open-id.ts new file mode 100644 index 000000000..6f03b45b7 --- /dev/null +++ b/apps/react-admin/src/api/openiddict/open-id.ts @@ -0,0 +1,11 @@ +import type { OpenIdConfiguration } from "#/abp-core/openid"; + +import requestClient from "../request"; + +/** + * openid发现端点 + * @returns OpenId配置数据 + */ +export function discoveryApi(): Promise { + return requestClient.get("/.well-known/openid-configuration"); +} diff --git a/apps/react-admin/src/api/openiddict/scopes.ts b/apps/react-admin/src/api/openiddict/scopes.ts new file mode 100644 index 000000000..6239428f7 --- /dev/null +++ b/apps/react-admin/src/api/openiddict/scopes.ts @@ -0,0 +1,56 @@ +import type { PagedResultDto } from "#/abp-core"; +import type { + OpenIddictScopeCreateDto, + OpenIddictScopeDto, + OpenIddictScopeGetListInput, + OpenIddictScopeUpdateDto, +} from "#/openiddict/scopes"; + +import requestClient from "../request"; + +/** + * 创建范围 + * @param input 参数 + * @returns 范围实体数据传输对象 + */ +export function createApi(input: OpenIddictScopeCreateDto): Promise { + return requestClient.post("/api/openiddict/scopes", input); +} + +/** + * 删除范围 + * @param id 范围id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/openiddict/scopes/${id}`); +} + +/** + * 获取范围 + * @param id 范围id + * @returns 范围实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/openiddict/scopes/${id}`); +} + +/** + * 更新范围 + * @param id 范围id + * @param input 更新参数 + * @returns 范围实体数据传输对象 + */ +export function updateApi(id: string, input: OpenIddictScopeUpdateDto): Promise { + return requestClient.put(`/api/openiddict/scopes/${id}`, input); +} + +/** + * 获取范围分页列表 + * @param input 过滤参数 + * @returns 范围实体数据传输对象分页列表 + */ +export function getPagedListApi(input?: OpenIddictScopeGetListInput): Promise> { + return requestClient.get>("/api/openiddict/scopes", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/openiddict/tokens.ts b/apps/react-admin/src/api/openiddict/tokens.ts new file mode 100644 index 000000000..71dd5af84 --- /dev/null +++ b/apps/react-admin/src/api/openiddict/tokens.ts @@ -0,0 +1,31 @@ +import type { PagedResultDto } from "#/abp-core"; +import type { OpenIddictTokenDto, OpenIddictTokenGetListInput } from "#/openiddict/tokens"; +import requestClient from "../request"; + +/** + * 删除令牌 + * @param id 令牌id + */ +export function deleteApi(id: string): Promise { + return requestClient.delete(`/api/openiddict/tokens/${id}`); +} + +/** + * 获取令牌 + * @param id 令牌id + * @returns 令牌实体数据传输对象 + */ +export function getApi(id: string): Promise { + return requestClient.get(`/api/openiddict/tokens/${id}`); +} + +/** + * 获取令牌分页列表 + * @param input 过滤参数 + * @returns 令牌实体数据传输对象分页列表 + */ +export function getPagedListApi(input?: OpenIddictTokenGetListInput): Promise> { + return requestClient.get>("/api/openiddict/tokens", { + params: input, + }); +} diff --git a/apps/react-admin/src/api/request.ts b/apps/react-admin/src/api/request.ts new file mode 100644 index 000000000..2e3fb250f --- /dev/null +++ b/apps/react-admin/src/api/request.ts @@ -0,0 +1,127 @@ +import { authenticateResponseInterceptor, errorMessageResponseInterceptor, RequestClient } from "@/request-client"; +import useLocaleStore from "@/store/localeI18nStore"; +import useUserStore from "@/store/userStore"; +import userStore from "@/store/userStore"; +import { mapLocaleToAbpLanguageFormat } from "@/utils"; +import { toast } from "sonner"; +import { refreshToken } from "./account/token"; +import { wrapperResult } from "@/utils/abp/request"; +import { handleOAuthError } from "@/utils/abp/handleOAuthError"; + +const requestClient = new RequestClient({ + baseURL: import.meta.env.VITE_APP_BASE_API, +}); + +/** + * 重新认证逻辑 + */ +async function doReAuthenticate() { + console.warn("Access token or refresh token is invalid or expired. "); + //直接登出 + userStore.getState().actions.clearUserInfoAndToken(); +} + +/** + * 刷新token逻辑 + */ +async function doRefreshToken() { + console.debug("try -> Refresh token"); + + const { userToken } = useUserStore.getState(); + if (!userToken.refreshToken) { + console.warn("No refresh token available."); + return ""; + } + + try { + const res = await refreshToken({ refreshToken: userToken.refreshToken }); + + const { tokenType, accessToken, refreshToken: newRefreshToken } = res; + + if (accessToken) { + // 更新 userStore,保存新 token + useUserStore.getState().actions.setUserToken({ + accessToken: `${tokenType} ${accessToken}`, + refreshToken: newRefreshToken, + }); + console.debug("Token refreshed successfully."); + return `${tokenType} ${accessToken}`; // 返回新 token 供拦截器使用 + } + + console.error("Failed to refresh token: No access token returned."); + return ""; + } catch (error) { + console.error("Error refreshing token:", error); + return ""; // 返回空字符串,触发重登录逻辑 + } +} + +function formatToken(token: null | string) { + return token ? token : null; //有个tokenType的获取值 +} + +// 请求头处理 +requestClient.addRequestInterceptor({ + fulfilled: async (config) => { + const { userToken } = useUserStore.getState(); + if (userToken.accessToken) { + config.headers.Authorization = `${userToken.accessToken}`; + } + const { locale } = useLocaleStore.getState(); + config.headers["Accept-Language"] = mapLocaleToAbpLanguageFormat(locale); + config.headers["X-Request-From"] = "slash-admin"; + return config; + }, +}); + +// response数据解构 +requestClient.addResponseInterceptor({ + fulfilled: (response) => { + const { data, status } = response; + const { hasWrapResult, getData } = wrapperResult(response); + + if (hasWrapResult()) { + return getData(); + } + + if (status >= 200 && status < 400) { + return data; + } + + throw Object.assign({}, response, { response }); + }, +}); + +// token过期的处理 +requestClient.addResponseInterceptor( + authenticateResponseInterceptor({ + client: requestClient, + doReAuthenticate, + doRefreshToken, + enableRefreshToken: true, + formatToken, + }), +); + +// 通用的错误处理,如果没有进入上面的错误处理逻辑,就会进入这里 +requestClient.addResponseInterceptor( + errorMessageResponseInterceptor((msg: string, error) => { + // 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg + // 当前mock接口返回的错误字段是 error 或者 message + const responseData = error?.response?.data ?? {}; + if (responseData?.error_description) { + const { formatError } = handleOAuthError(); + toast.error(formatError(responseData) || msg, { + position: "top-center", + }); + return; + } + const errorMessage = responseData?.error ?? responseData?.message ?? ""; + // 如果没有错误信息,则会根据状态码进行提示 + toast.error(errorMessage || msg, { + position: "top-center", + }); + }), +); + +export default requestClient; diff --git a/apps/react-admin/src/api/services/demoService.ts b/apps/react-admin/src/api/services/demoService.ts new file mode 100644 index 000000000..857ba1a50 --- /dev/null +++ b/apps/react-admin/src/api/services/demoService.ts @@ -0,0 +1,11 @@ +import apiClient from "../apiClient"; + +export enum DemoApi { + TOKEN_EXPIRED = "/user/tokenExpired", +} + +const mockTokenExpired = () => apiClient.post({ url: DemoApi.TOKEN_EXPIRED }); + +export default { + mockTokenExpired, +}; diff --git a/apps/react-admin/src/api/services/orgService.ts b/apps/react-admin/src/api/services/orgService.ts new file mode 100644 index 000000000..b33cd49a4 --- /dev/null +++ b/apps/react-admin/src/api/services/orgService.ts @@ -0,0 +1,13 @@ +import apiClient from "../apiClient"; + +import type { Organization } from "#/entity"; + +export enum OrgApi { + Org = "/org", +} + +const getOrgList = () => apiClient.get({ url: OrgApi.Org }); + +export default { + getOrgList, +}; diff --git a/apps/react-admin/src/api/services/userService.ts b/apps/react-admin/src/api/services/userService.ts new file mode 100644 index 000000000..ad3022b71 --- /dev/null +++ b/apps/react-admin/src/api/services/userService.ts @@ -0,0 +1,33 @@ +import apiClient from "../apiClient"; + +import type { UserInfo, UserToken } from "#/entity"; + +export interface SignInReq { + username: string; + password: string; +} + +export interface SignUpReq extends SignInReq { + email: string; +} +export type SignInRes = UserToken & { user: UserInfo }; + +export enum UserApi { + SignIn = "/auth/signin", + SignUp = "/auth/signup", + Logout = "/auth/logout", + Refresh = "/auth/refresh", + User = "/user", +} + +const signin = (data: SignInReq) => apiClient.post({ url: UserApi.SignIn, data }); +const signup = (data: SignUpReq) => apiClient.post({ url: UserApi.SignUp, data }); +const logout = () => apiClient.get({ url: UserApi.Logout }); +const findById = (id: string) => apiClient.get({ url: `${UserApi.User}/${id}` }); + +export default { + signin, + signup, + findById, + logout, +}; diff --git a/apps/react-admin/src/assets/icons/ic-analysis.svg b/apps/react-admin/src/assets/icons/ic-analysis.svg new file mode 100644 index 000000000..130880561 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-analysis.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-blog.svg b/apps/react-admin/src/assets/icons/ic-blog.svg new file mode 100644 index 000000000..eb74d960d --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-blog.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-clear.svg b/apps/react-admin/src/assets/icons/ic-clear.svg new file mode 100644 index 000000000..bc535b32d --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-clear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-dashboard.svg b/apps/react-admin/src/assets/icons/ic-dashboard.svg new file mode 100644 index 000000000..6cbedde97 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-dashboard.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-left-arrow.svg b/apps/react-admin/src/assets/icons/ic-left-arrow.svg new file mode 100644 index 000000000..7301e2c0e --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-left-arrow.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-locale_en_US.svg b/apps/react-admin/src/assets/icons/ic-locale_en_US.svg new file mode 100644 index 000000000..f3980e2b7 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-locale_en_US.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-locale_zh_CN.svg b/apps/react-admin/src/assets/icons/ic-locale_zh_CN.svg new file mode 100644 index 000000000..b9aa7a2e4 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-locale_zh_CN.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-logo.svg b/apps/react-admin/src/assets/icons/ic-logo.svg new file mode 100644 index 000000000..63f85c360 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-management.svg b/apps/react-admin/src/assets/icons/ic-management.svg new file mode 100644 index 000000000..281dec2e5 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-management.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic-markdown.svg b/apps/react-admin/src/assets/icons/ic-markdown.svg new file mode 100644 index 000000000..a9f882bcd --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-markdown.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-menu.svg b/apps/react-admin/src/assets/icons/ic-menu.svg new file mode 100644 index 000000000..c9d8d36b0 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-menu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-menulevel.svg b/apps/react-admin/src/assets/icons/ic-menulevel.svg new file mode 100644 index 000000000..e557e9498 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-menulevel.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-reset-password.svg b/apps/react-admin/src/assets/icons/ic-reset-password.svg new file mode 100644 index 000000000..cf9e8c3d8 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-reset-password.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-right-arrow.svg b/apps/react-admin/src/assets/icons/ic-right-arrow.svg new file mode 100644 index 000000000..9400f219e --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-right-arrow.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-search.svg b/apps/react-admin/src/assets/icons/ic-search.svg new file mode 100644 index 000000000..d06a45119 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-search.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-setting.svg b/apps/react-admin/src/assets/icons/ic-setting.svg new file mode 100644 index 000000000..48468ac84 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-setting.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic-settings-exit-fullscreen.svg b/apps/react-admin/src/assets/icons/ic-settings-exit-fullscreen.svg new file mode 100644 index 000000000..46453e9d9 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-settings-exit-fullscreen.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-settings-fullscreen.svg b/apps/react-admin/src/assets/icons/ic-settings-fullscreen.svg new file mode 100644 index 000000000..a13fcc8ca --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-settings-fullscreen.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-settings-mode-moon.svg b/apps/react-admin/src/assets/icons/ic-settings-mode-moon.svg new file mode 100644 index 000000000..be816934f --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-settings-mode-moon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic-settings-mode-sun.svg b/apps/react-admin/src/assets/icons/ic-settings-mode-sun.svg new file mode 100644 index 000000000..aeaeeac02 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-settings-mode-sun.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic-user.svg b/apps/react-admin/src/assets/icons/ic-user.svg new file mode 100644 index 000000000..141aeba97 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic-workbench.svg b/apps/react-admin/src/assets/icons/ic-workbench.svg new file mode 100644 index 000000000..6ea1c6dea --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic-workbench.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic_blank.svg b/apps/react-admin/src/assets/icons/ic_blank.svg new file mode 100644 index 000000000..d187ec296 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_blank.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic_chat.svg b/apps/react-admin/src/assets/icons/ic_chat.svg new file mode 100644 index 000000000..d8b905cc6 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_chat.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_decline.svg b/apps/react-admin/src/assets/icons/ic_decline.svg new file mode 100644 index 000000000..0931d3895 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_decline.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/icons/ic_delivery.svg b/apps/react-admin/src/assets/icons/ic_delivery.svg new file mode 100644 index 000000000..e0b077c7d --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_delivery.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_disabled.svg b/apps/react-admin/src/assets/icons/ic_disabled.svg new file mode 100644 index 000000000..216410112 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_disabled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic_external.svg b/apps/react-admin/src/assets/icons/ic_external.svg new file mode 100644 index 000000000..d38340e5e --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_external.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file.svg b/apps/react-admin/src/assets/icons/ic_file.svg new file mode 100644 index 000000000..f5295c2e2 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_ai.svg b/apps/react-admin/src/assets/icons/ic_file_ai.svg new file mode 100644 index 000000000..4d8098a87 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_ai.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_audio.svg b/apps/react-admin/src/assets/icons/ic_file_audio.svg new file mode 100644 index 000000000..329f232a7 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_audio.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_excel.svg b/apps/react-admin/src/assets/icons/ic_file_excel.svg new file mode 100644 index 000000000..cb80eb2bf --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_excel.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_img.svg b/apps/react-admin/src/assets/icons/ic_file_img.svg new file mode 100644 index 000000000..a95194a99 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_img.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_pdf.svg b/apps/react-admin/src/assets/icons/ic_file_pdf.svg new file mode 100644 index 000000000..8ed54c947 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_pdf.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_ppt.svg b/apps/react-admin/src/assets/icons/ic_file_ppt.svg new file mode 100644 index 000000000..f2d7f144a --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_ppt.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_psd.svg b/apps/react-admin/src/assets/icons/ic_file_psd.svg new file mode 100644 index 000000000..7ecbee0c2 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_psd.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_txt.svg b/apps/react-admin/src/assets/icons/ic_file_txt.svg new file mode 100644 index 000000000..1d34c3481 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_txt.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_video.svg b/apps/react-admin/src/assets/icons/ic_file_video.svg new file mode 100644 index 000000000..fb6eca6c2 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_video.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_word.svg b/apps/react-admin/src/assets/icons/ic_file_word.svg new file mode 100644 index 000000000..b112fe589 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_word.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_file_zip.svg b/apps/react-admin/src/assets/icons/ic_file_zip.svg new file mode 100644 index 000000000..f34001e8b --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_file_zip.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_folder.svg b/apps/react-admin/src/assets/icons/ic_folder.svg new file mode 100644 index 000000000..01f6671ed --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_folder.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_label.svg b/apps/react-admin/src/assets/icons/ic_label.svg new file mode 100644 index 000000000..933e6357b --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_label.svg @@ -0,0 +1,4 @@ + + + + diff --git a/apps/react-admin/src/assets/icons/ic_mail.svg b/apps/react-admin/src/assets/icons/ic_mail.svg new file mode 100644 index 000000000..f9561c459 --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_mail.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_order.svg b/apps/react-admin/src/assets/icons/ic_order.svg new file mode 100644 index 000000000..cc8dbb75a --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_order.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/react-admin/src/assets/icons/ic_rise.svg b/apps/react-admin/src/assets/icons/ic_rise.svg new file mode 100644 index 000000000..93689126d --- /dev/null +++ b/apps/react-admin/src/assets/icons/ic_rise.svg @@ -0,0 +1 @@ + diff --git a/apps/react-admin/src/assets/images/background/cyan-blur.png b/apps/react-admin/src/assets/images/background/cyan-blur.png new file mode 100644 index 000000000..b5dbc95da Binary files /dev/null and b/apps/react-admin/src/assets/images/background/cyan-blur.png differ diff --git a/apps/react-admin/src/assets/images/background/dashboard.png b/apps/react-admin/src/assets/images/background/dashboard.png new file mode 100644 index 000000000..26a2e8896 Binary files /dev/null and b/apps/react-admin/src/assets/images/background/dashboard.png differ diff --git a/apps/react-admin/src/assets/images/background/overlay_2.jpg b/apps/react-admin/src/assets/images/background/overlay_2.jpg new file mode 100644 index 000000000..119d428b8 Binary files /dev/null and b/apps/react-admin/src/assets/images/background/overlay_2.jpg differ diff --git a/apps/react-admin/src/assets/images/background/red-blur.png b/apps/react-admin/src/assets/images/background/red-blur.png new file mode 100644 index 000000000..a0df012ff Binary files /dev/null and b/apps/react-admin/src/assets/images/background/red-blur.png differ diff --git a/apps/react-admin/src/assets/images/characters/character_3.png b/apps/react-admin/src/assets/images/characters/character_3.png new file mode 100644 index 000000000..2d639ccde Binary files /dev/null and b/apps/react-admin/src/assets/images/characters/character_3.png differ diff --git a/apps/react-admin/src/assets/images/characters/character_4.png b/apps/react-admin/src/assets/images/characters/character_4.png new file mode 100644 index 000000000..0ce49ffe4 Binary files /dev/null and b/apps/react-admin/src/assets/images/characters/character_4.png differ diff --git a/apps/react-admin/src/assets/images/characters/character_5.png b/apps/react-admin/src/assets/images/characters/character_5.png new file mode 100644 index 000000000..b8fbb44fc Binary files /dev/null and b/apps/react-admin/src/assets/images/characters/character_5.png differ diff --git a/apps/react-admin/src/assets/images/characters/character_6.png b/apps/react-admin/src/assets/images/characters/character_6.png new file mode 100644 index 000000000..f59a84417 Binary files /dev/null and b/apps/react-admin/src/assets/images/characters/character_6.png differ diff --git a/apps/react-admin/src/assets/images/characters/character_8.png b/apps/react-admin/src/assets/images/characters/character_8.png new file mode 100644 index 000000000..44f170875 Binary files /dev/null and b/apps/react-admin/src/assets/images/characters/character_8.png differ diff --git a/apps/react-admin/src/assets/images/cover/cover_3.jpg b/apps/react-admin/src/assets/images/cover/cover_3.jpg new file mode 100644 index 000000000..8390e518e Binary files /dev/null and b/apps/react-admin/src/assets/images/cover/cover_3.jpg differ diff --git a/apps/react-admin/src/assets/images/cover/cover_4.jpg b/apps/react-admin/src/assets/images/cover/cover_4.jpg new file mode 100644 index 000000000..c68f1581a Binary files /dev/null and b/apps/react-admin/src/assets/images/cover/cover_4.jpg differ diff --git a/apps/react-admin/src/assets/images/cover/profile_banner.jpeg b/apps/react-admin/src/assets/images/cover/profile_banner.jpeg new file mode 100644 index 000000000..4a0a1c7a4 Binary files /dev/null and b/apps/react-admin/src/assets/images/cover/profile_banner.jpeg differ diff --git a/apps/react-admin/src/assets/images/glass/ic_glass_bag.png b/apps/react-admin/src/assets/images/glass/ic_glass_bag.png new file mode 100644 index 000000000..41cb3c506 Binary files /dev/null and b/apps/react-admin/src/assets/images/glass/ic_glass_bag.png differ diff --git a/apps/react-admin/src/assets/images/glass/ic_glass_buy.png b/apps/react-admin/src/assets/images/glass/ic_glass_buy.png new file mode 100644 index 000000000..065ffcde1 Binary files /dev/null and b/apps/react-admin/src/assets/images/glass/ic_glass_buy.png differ diff --git a/apps/react-admin/src/assets/images/glass/ic_glass_message.png b/apps/react-admin/src/assets/images/glass/ic_glass_message.png new file mode 100644 index 000000000..10b6c9591 Binary files /dev/null and b/apps/react-admin/src/assets/images/glass/ic_glass_message.png differ diff --git a/apps/react-admin/src/assets/images/glass/ic_glass_users.png b/apps/react-admin/src/assets/images/glass/ic_glass_users.png new file mode 100644 index 000000000..415f0c9be Binary files /dev/null and b/apps/react-admin/src/assets/images/glass/ic_glass_users.png differ diff --git a/apps/react-admin/src/assets/images/logo.png b/apps/react-admin/src/assets/images/logo.png new file mode 100644 index 000000000..b0eeef4ab Binary files /dev/null and b/apps/react-admin/src/assets/images/logo.png differ diff --git a/apps/react-admin/src/components/abp/account/authenticator-settings.tsx b/apps/react-admin/src/components/abp/account/authenticator-settings.tsx new file mode 100644 index 000000000..282ea9d17 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/authenticator-settings.tsx @@ -0,0 +1,73 @@ +import { Button, Card, List, Skeleton, Modal } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { getAuthenticatorApi, resetAuthenticatorApi } from "@/api/account/profile"; +import AuthenticatorSteps from "./authenticator-steps"; +import { toast } from "sonner"; + +const AuthenticatorSettings: React.FC = () => { + const { t: $t } = useTranslation(); + const [modal, contextHolder] = Modal.useModal(); + const queryClient = useQueryClient(); + + const { data: authenticator, isLoading } = useQuery({ + queryKey: ["authenticator"], + queryFn: getAuthenticatorApi, + }); + + const { mutateAsync: resetAuthenticator } = useMutation({ + mutationFn: resetAuthenticatorApi, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["authenticator"] }); + toast.success($t("AbpAccount.YourAuthenticatorIsSuccessfullyReset")); + }, + }); + + const handleReset = () => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpAccount.ResetAuthenticatorWarning"), + centered: true, + onOk: () => resetAuthenticator(), + }); + }; + + if (isLoading) { + return ( + + + + ); + } + + return ( + <> + {contextHolder} + + {authenticator?.isAuthenticated === false ? ( + queryClient.invalidateQueries({ queryKey: ["authenticator"] })} + /> + ) : authenticator?.isAuthenticated === true ? ( + + + {$t("AbpAccount.ResetAuthenticator")} + + } + > + + + + ) : null} + + + ); +}; + +export default AuthenticatorSettings; diff --git a/apps/react-admin/src/components/abp/account/authenticator-steps.tsx b/apps/react-admin/src/components/abp/account/authenticator-steps.tsx new file mode 100644 index 000000000..22bdc8664 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/authenticator-steps.tsx @@ -0,0 +1,177 @@ +import { useState } from "react"; +import { Card, Steps, Button, Form, Input, QRCode } from "antd"; +import { useTranslation } from "react-i18next"; + +import { verifyAuthenticatorCodeApi } from "@/api/account/profile"; +import { useMutation } from "@tanstack/react-query"; +import type { AuthenticatorDto } from "#/account/profile"; +import { useCopyToClipboard } from "@/hooks/event/use-copy-to-clipboard"; +import { toast } from "sonner"; + +interface Props { + authenticator: AuthenticatorDto; + onDone: () => void; +} + +const AuthenticatorSteps: React.FC = ({ authenticator, onDone }) => { + const { t: $t } = useTranslation(); + const { copyFn } = useCopyToClipboard(); + const [form] = Form.useForm(); + const [currentStep, setCurrentStep] = useState(0); + const [codeValidated, setCodeValidated] = useState(false); + const [recoveryCodes, setRecoveryCodes] = useState([]); + + const steps = [ + { title: $t("AbpAccount.Authenticator") }, + { title: $t("AbpAccount.ValidAuthenticator") }, + { title: $t("AbpAccount.RecoveryCode") }, + ]; + + const { mutateAsync: verifyCode, isPending: isLoading } = useMutation({ + mutationFn: verifyAuthenticatorCodeApi, + onSuccess: (data) => { + setRecoveryCodes(data.recoveryCodes); + setCodeValidated(true); + handleNextStep(); + }, + }); + + const handleCopy = async (text?: string) => { + if (!text) return; + await copyFn(text); + toast.success($t("AbpUi.CopiedToTheClipboard")); + }; + + const handleValidCode = async () => { + try { + const values = await form.validateFields(); + await verifyCode(values); + } catch (error) { + console.error("Validation failed:", error); + } + }; + + const handlePrevStep = () => setCurrentStep((prev) => prev - 1); + const handleNextStep = () => setCurrentStep((prev) => prev + 1); + + const renderStepContent = () => { + switch (currentStep) { + case 0: + return ( + + + {$t("AbpAccount.Authenticator")} + {$t("AbpAccount.AuthenticatorDesc")} + + } + /> +
+
+ +
+ +
+
+
+
+ handleCopy(authenticator.sharedKey)}> + {$t("AbpAccount.Authenticator:CopyToClipboard")} + + } + > +
+
{authenticator.sharedKey}
+
+
+
+
+
+ ); + + case 1: + return ( + + + {$t("AbpAccount.ValidAuthenticator")} + {$t("AbpAccount.ValidAuthenticatorDesc")} + + } + /> +
+
+
+ + + +
+
+
+ +
+
+
+ ); + + case 2: + return ( + + {$t("AbpAccount.RecoveryCode")} + {$t("AbpAccount.RecoveryCodeDesc")} + + } + extra={ + + } + > +
+
{recoveryCodes.slice(0, 5).join("\r\n")}
+
{recoveryCodes.slice(5).join("\r\n")}
+
+
+ ); + } + }; + + return ( + + + {renderStepContent()} +
+ {currentStep > 0 && !codeValidated && ( + + )} + {currentStep < 2 && ( + + )} + {currentStep === 2 && ( + + )} +
+
+ ); +}; + +export default AuthenticatorSteps; diff --git a/apps/react-admin/src/components/abp/account/basic-settings.tsx b/apps/react-admin/src/components/abp/account/basic-settings.tsx new file mode 100644 index 000000000..9b8ef1d8e --- /dev/null +++ b/apps/react-admin/src/components/abp/account/basic-settings.tsx @@ -0,0 +1,91 @@ +import { useEffect, useState } from "react"; +import { Card, Form, Input, Avatar, Upload, Button } from "antd"; +import { UploadOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { ProfileDto, UpdateProfileDto } from "#/account/profile"; +import type { UploadChangeParam, UploadProps } from "antd/es/upload"; +import { useUserInfo } from "@/store/userStore"; +import { faker } from "@faker-js/faker"; +import { useAbpSettings } from "@/hooks/abp/use-abp-settings"; + +interface Props { + profile: ProfileDto; + onSubmit: (profile: UpdateProfileDto) => void; +} + +const BasicSettings: React.FC = ({ profile, onSubmit }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + const { isTrue } = useAbpSettings(); + const userInfo = useUserInfo(); + + const [formModel, setFormModel] = useState({} as ProfileDto); + + useEffect(() => { + setFormModel({ ...profile }); + form.setFieldsValue(profile); + }, [profile]); + + const handleAvatarChange = (_param: UploadChangeParam) => { + // TODO: Wait for OSS module integration + console.warn("Waiting for OSS module integration..."); + }; + + const handleBeforeUpload: UploadProps["beforeUpload"] = () => { + console.warn("Waiting for OSS module integration..."); + return false; + }; + + const handleSubmit = () => { + onSubmit(formModel); + }; + + return ( + +
+
+
setFormModel(values)} + > + + + + + + + + + + + + + +
+ +
+
+
+
+
+
+

{$t("AbpUi.ProfilePicture")}

+ } /> + + + +
+
+
+
+ ); +}; + +export default BasicSettings; diff --git a/apps/react-admin/src/components/abp/account/bind-settings.tsx b/apps/react-admin/src/components/abp/account/bind-settings.tsx new file mode 100644 index 000000000..386345633 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/bind-settings.tsx @@ -0,0 +1,14 @@ +import { Card, Empty } from "antd"; +import { useTranslation } from "react-i18next"; + +const BindSettings: React.FC = () => { + const { t: $t } = useTranslation(); + + return ( + + + + ); +}; + +export default BindSettings; diff --git a/apps/react-admin/src/components/abp/account/email-confirm-modal.tsx b/apps/react-admin/src/components/abp/account/email-confirm-modal.tsx new file mode 100644 index 000000000..9076852a4 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/email-confirm-modal.tsx @@ -0,0 +1,68 @@ +import { useState } from "react"; +import { Modal, Form, Input } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation } from "@tanstack/react-query"; +import { confirmEmailApi } from "@/api/account/profile"; +import { toast } from "sonner"; + +interface Props { + visible: boolean; + onSuccess: () => void; + onClose: () => void; + initialState: { + confirmToken: string; + email: string; + returnUrl?: string; + userId: string; + }; +} + +const EmailConfirmModal: React.FC = ({ visible, onClose, onSuccess, initialState }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + const [confirmLoading, setConfirmLoading] = useState(false); + + const { mutateAsync: confirmEmail } = useMutation({ + mutationFn: confirmEmailApi, + onSuccess: () => { + toast.success($t("AbpAccount.YourEmailIsSuccessfullyConfirm")); + onSuccess(); + onClose(); + if (initialState.returnUrl) { + window.location.href = initialState.returnUrl; + } + }, + onSettled: () => { + setConfirmLoading(false); + }, + }); + + const handleSubmit = async () => { + try { + setConfirmLoading(true); + await confirmEmail({ + confirmToken: decodeURIComponent(initialState.confirmToken), + }); + } catch (error) { + console.error("Email confirmation failed:", error); + } + }; + + return ( + +
+ + + +
+
+ ); +}; + +export default EmailConfirmModal; diff --git a/apps/react-admin/src/components/abp/account/notice-settings.tsx b/apps/react-admin/src/components/abp/account/notice-settings.tsx new file mode 100644 index 000000000..18e775431 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/notice-settings.tsx @@ -0,0 +1,14 @@ +import { Card, Empty } from "antd"; +import { useTranslation } from "react-i18next"; + +const BindSettings: React.FC = () => { + const { t: $t } = useTranslation(); + + return ( + + + + ); +}; + +export default BindSettings; diff --git a/apps/react-admin/src/components/abp/account/security-settings.tsx b/apps/react-admin/src/components/abp/account/security-settings.tsx new file mode 100644 index 000000000..87076eb39 --- /dev/null +++ b/apps/react-admin/src/components/abp/account/security-settings.tsx @@ -0,0 +1,158 @@ +import { useState, useEffect } from "react"; +import { Card, List, Button, Tag, Switch } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery } from "@tanstack/react-query"; +import { getTwoFactorEnabledApi, changeTwoFactorEnabledApi, sendEmailConfirmLinkApi } from "@/api/account/profile"; +import type { UserInfo } from "#/account/user"; + +interface Props { + userInfo: UserInfo | null; + onChangePassword: () => void; + onChangePhoneNumber: () => void; +} + +const SecuritySettings: React.FC = ({ userInfo, onChangePassword, onChangePhoneNumber }) => { + const { t: $t } = useTranslation(); + const [loading, setLoading] = useState(false); + const [sendMailInterval, setSendMailInterval] = useState(0); + let timer: NodeJS.Timeout; + + // Get two factor status + const { data: twoFactor, refetch: refetchTwoFactor } = useQuery({ + queryKey: ["twoFactorEnabled"], + queryFn: getTwoFactorEnabledApi, + }); + + // Change two factor mutation + const { mutateAsync: changeTwoFactor } = useMutation({ + mutationFn: changeTwoFactorEnabledApi, + onMutate: () => setLoading(true), + onSettled: () => setLoading(false), + onError: () => refetchTwoFactor(), + onSuccess: () => refetchTwoFactor(), + }); + + // Send email confirmation mutation + const { mutateAsync: sendEmailConfirm } = useMutation({ + mutationFn: (email: string) => + sendEmailConfirmLinkApi({ + appName: "ReactAdmin", + email, + returnUrl: window.location.href, + }), + onSuccess: () => { + setSendMailInterval(60); + timer = setInterval(() => { + setSendMailInterval((prev) => { + if (prev <= 0) { + clearInterval(timer); + return 0; + } + return prev - 1; + }); + }, 1000); + }, + onError: () => setSendMailInterval(0), + }); + + useEffect(() => { + return () => { + if (timer) clearInterval(timer); + }; + }, []); + + const getSendMailTitle = () => { + if (sendMailInterval > 0) { + return `${sendMailInterval} s`; + } + return $t("AbpAccount.ClickToValidation"); + }; + + return ( + + + {/* Password */} + + {$t("AbpUi.Edit")} + + } + > + + + + {/* Phone Number */} + + {$t("AbpUi.Edit")} + + } + > + + {userInfo?.phoneNumber} + {!userInfo?.phoneNumber ? ( + {$t("abp.account.settings.security.unSet")} + ) : userInfo?.phoneNumberVerified ? ( + {$t("abp.account.settings.security.verified")} + ) : ( + {$t("abp.account.settings.security.unVerified")} + )} + + } + /> + + + {/* Email */} + 0} onClick={() => sendEmailConfirm(userInfo.email)}> + {getSendMailTitle()} + + ) + } + > + + {userInfo?.email} + {userInfo?.emailVerified ? ( + {$t("abp.account.settings.security.verified")} + ) : ( + {$t("abp.account.settings.security.unVerified")} + )} + + } + /> + + + {/* Two Factor Authentication */} + {twoFactor && ( + changeTwoFactor({ enabled: checked })} + /> + } + > + + + )} + + + ); +}; + +export default SecuritySettings; diff --git a/apps/react-admin/src/components/abp/account/session-settings.tsx b/apps/react-admin/src/components/abp/account/session-settings.tsx new file mode 100644 index 000000000..54956ffaf --- /dev/null +++ b/apps/react-admin/src/components/abp/account/session-settings.tsx @@ -0,0 +1,51 @@ +import { Card, Modal } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import type { IdentitySessionDto } from "#/management/identity/sessions"; +import { getSessionsApi, revokeSessionApi } from "@/api/account/my-session"; +import { toast } from "sonner"; +import UserSessionTable from "@/pages/management/identity/sessions/user-session-table"; + +const SessionSettings: React.FC = () => { + const { t: $t } = useTranslation(); + const [modal, contextHolder] = Modal.useModal(); + const queryClient = useQueryClient(); + + // Fetch sessions + const { data: sessions = [] } = useQuery({ + queryKey: ["mySessions"], + queryFn: async () => { + const { items } = await getSessionsApi(); + return items; + }, + }); + + // Revoke session mutation + const { mutateAsync: revokeSession } = useMutation({ + mutationFn: revokeSessionApi, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["mySessions"] }); + toast.success($t("AbpIdentity.SuccessfullyRevoked")); + }, + }); + + const handleRevoke = (session: IdentitySessionDto) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpIdentity.SessionWillBeRevokedMessage"), + centered: true, + onOk: () => revokeSession(session.sessionId), + }); + }; + + return ( + <> + {contextHolder} + + + + + ); +}; + +export default SessionSettings; diff --git a/apps/react-admin/src/components/abp/auditing/entity-change-drawer.tsx b/apps/react-admin/src/components/abp/auditing/entity-change-drawer.tsx new file mode 100644 index 000000000..6aa304400 --- /dev/null +++ b/apps/react-admin/src/components/abp/auditing/entity-change-drawer.tsx @@ -0,0 +1,36 @@ +import { getListWithUsernameApi } from "@/api/management/auditing/entity-changes"; +import { EntityChangeTable } from "./entity-change-table"; +import type { EntityChangeGetWithUsernameInput } from "#/management/auditing/entity-changes"; +import { Drawer } from "antd"; +import { useQuery } from "@tanstack/react-query"; +import { useTranslation } from "react-i18next"; + +interface EntityChangeDrawerProps { + open: boolean; + onClose: () => void; + input?: EntityChangeGetWithUsernameInput; + subject?: string; +} + +export const EntityChangeDrawer: React.FC = ({ open, onClose, input, subject }) => { + const { t } = useTranslation(); + + const { data: entityChanges = [] } = useQuery({ + queryKey: ["entityChanges", input], + queryFn: async () => { + if (!input) return []; + const { items } = await getListWithUsernameApi(input); + return items.map((item) => ({ + ...item.entityChange, + userName: item.userName, + })); + }, + enabled: open && !!input, + }); + + return ( + + + + ); +}; diff --git a/apps/react-admin/src/components/abp/auditing/entity-change-table.tsx b/apps/react-admin/src/components/abp/auditing/entity-change-table.tsx new file mode 100644 index 000000000..43f271565 --- /dev/null +++ b/apps/react-admin/src/components/abp/auditing/entity-change-table.tsx @@ -0,0 +1,140 @@ +import { formatToDateTime } from "@/utils/abp"; +import { useTranslation } from "react-i18next"; +import type { EntityChangeDto, PropertyChange, ChangeType } from "#/management/auditing/entity-changes"; +import { Tag, Table, Card } from "antd"; +import type { ColumnsType } from "antd/es/table"; +import { useState, useMemo } from "react"; +import { useAuditLogs } from "@/hooks/abp/auditing/use-audit-logs"; +import Scrollbar from "@/components/scrollbar"; + +interface EntityChangeTableProps { + data: EntityChangeDto[]; + showUserName?: boolean; +} + +export const EntityChangeTable: React.FC = ({ data, showUserName = false }) => { + const [pageSize, setPageSize] = useState(10); + const [current, setCurrent] = useState(1); + const { t } = useTranslation(); + const { getChangeTypeColor, getChangeTypeValue } = useAuditLogs(); + + const columns: ColumnsType = [ + showUserName && { + title: t("AbpAuditLogging.UserName"), + dataIndex: "userName", + align: "center", + width: 100, // 设置列宽 + }, + { + title: t("AbpAuditLogging.ChangeType"), + dataIndex: "changeType", + sorter: true, + align: "center", + width: 120, // 设置列宽 + render: (type: ChangeType) => {getChangeTypeValue(type)}, + }, + { + title: t("AbpAuditLogging.StartTime"), + dataIndex: "changeTime", + sorter: true, + width: 200, // 设置列宽 + render: (value: Date) => value && formatToDateTime(value), + }, + { + title: t("AbpAuditLogging.EntityTypeFullName"), + dataIndex: "entityTypeFullName", + ellipsis: true, + sorter: true, + width: 400, // 设置列宽 + }, + { + title: t("AbpAuditLogging.EntityId"), + dataIndex: "entityId", + sorter: true, + width: 312, // 设置列宽 + }, + { + title: t("AbpAuditLogging.TenantId"), + dataIndex: "entityTenantId", + sorter: true, + width: 312, // 设置列宽 + }, + ].filter(Boolean) as ColumnsType; + + const propertyColumns: ColumnsType = [ + { + title: t("AbpAuditLogging.PropertyName"), + dataIndex: "propertyName", + sorter: true, + width: 150, // 设置列宽 + }, + { + title: t("AbpAuditLogging.NewValue"), + dataIndex: "newValue", + sorter: true, + className: "font-medium text-success", + width: 250, // 设置列宽 + }, + { + title: t("AbpAuditLogging.OriginalValue"), + dataIndex: "originalValue", + sorter: true, + className: "font-medium text-error", + width: 250, // 设置列宽 + }, + { + title: t("AbpAuditLogging.PropertyTypeFullName"), + dataIndex: "propertyTypeFullName", + sorter: true, + width: 250, // 设置列宽 + }, + ]; + + const paginatedData = useMemo(() => { + const startIndex = (current - 1) * pageSize; + return data.slice(startIndex, startIndex + pageSize); + }, [data, current, pageSize]); + + return ( + + +
+
+ { + setCurrent(page); + setPageSize(size); + }, + showSizeChanger: true, + pageSizeOptions: ["10", "25", "50", "100"], + }} + expandable={{ + expandedRowRender: (record) => ( +
+
+ + ), + }} + /> + + + + + ); +}; diff --git a/apps/react-admin/src/components/abp/claims/claim-modal.tsx b/apps/react-admin/src/components/abp/claims/claim-modal.tsx new file mode 100644 index 000000000..1da72b42f --- /dev/null +++ b/apps/react-admin/src/components/abp/claims/claim-modal.tsx @@ -0,0 +1,111 @@ +import type React from "react"; +import { useEffect } from "react"; +import { Modal, Form, Input, Select } from "antd"; +import { useTranslation } from "react-i18next"; +import type { IdentityClaimCreateDto, IdentityClaimDto, IdentityClaimUpdateDto } from "#/management/identity/claims"; +import { useQuery, useMutation } from "@tanstack/react-query"; +import { getAssignableClaimsApi } from "@/api/management/identity/claim-types"; +import { toast } from "sonner"; + +interface ClaimEditModalProps { + visible: boolean; + claim?: IdentityClaimDto; + onClose: () => void; + onChange: (data: IdentityClaimDto) => void; + createApi: (input: IdentityClaimCreateDto) => Promise; + updateApi: (input: IdentityClaimUpdateDto) => Promise; +} + +const ClaimModal: React.FC = ({ visible, claim, onClose, onChange, createApi, updateApi }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + + // Query for assignable claims + const { data: assignableClaimsData } = useQuery({ + queryKey: ["assignableClaims"], + queryFn: getAssignableClaimsApi, + enabled: visible && !claim?.id, + }); + + // Mutations for create/update + const { mutateAsync: mutateCreate, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: (_, variables) => { + onChange(variables as IdentityClaimDto); + onClose(); + toast.success($t("AbpUi.CreatedSuccessfully")); + }, + }); + + const { mutateAsync: mutateUpdate, isPending: isUpdating } = useMutation({ + mutationFn: updateApi, + onSuccess: (_, variables) => { + onChange({ + claimType: claim?.claimType, + claimValue: variables.newClaimValue, + id: claim?.id, + } as IdentityClaimDto); + onClose(); + toast.success($t("AbpUi.SavedSuccessfully")); + }, + }); + + useEffect(() => { + if (visible) { + form.resetFields(); + if (claim) { + form.setFieldsValue({ + ...claim, + newClaimValue: claim.claimValue, + }); + } + } + }, [visible, claim, form.setFieldsValue, form.resetFields]); + + const handleOk = async () => { + try { + const values = await form.validateFields(); + if (claim?.id) { + await mutateUpdate({ + claimType: claim.claimType, + claimValue: claim.claimValue, + newClaimValue: values.claimValue, + }); + } else { + await mutateCreate({ + claimType: values.claimType, + claimValue: values.claimValue, + }); + } + } catch (error) { + // Form validation error, no need to handle + } + }; + + return ( + +
+ + ({ + label: lang.displayName, + value: lang.cultureName, + }))} + /> + + + + + +
+ ); +}; + +export default DisplayNameModal; diff --git a/apps/react-admin/src/components/abp/display-names/display-name-table.tsx b/apps/react-admin/src/components/abp/display-names/display-name-table.tsx new file mode 100644 index 000000000..3454df082 --- /dev/null +++ b/apps/react-admin/src/components/abp/display-names/display-name-table.tsx @@ -0,0 +1,75 @@ +import { useState } from "react"; +import { Button, Popconfirm } from "antd"; +import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { ProTable, type ProColumns } from "@ant-design/pro-table"; +import type { DisplayNameInfo, DisplayNameProps } from "./types"; +import DisplayNameModal from "./display-name-modal"; + +const DisplayNameTable: React.FC = ({ data, onChange, onDelete }) => { + const { t: $t } = useTranslation(); + const [modalVisible, setModalVisible] = useState(false); + + const dataSource = Object.entries(data || {}).map(([culture, displayName]) => ({ + culture, + displayName, + key: culture, + })); + + const columns: ProColumns[] = [ + { + title: $t("AbpOpenIddict.DisplayName:CultureName"), + dataIndex: "culture", + align: "left", + width: 200, + }, + { + title: $t("AbpOpenIddict.DisplayName:DisplayName"), + dataIndex: "displayName", + align: "left", + width: 200, + }, + { + title: $t("AbpUi.Actions"), + width: 180, + fixed: "right", + render: (_, record) => ( + onDelete?.(record)} + > + + + ), + }, + ]; + + return ( + <> + + columns={columns} + dataSource={dataSource} + search={false} + pagination={false} + toolBarRender={() => [ + , + ]} + /> + + setModalVisible(false)} + onChange={(info) => { + onChange?.(info); + setModalVisible(false); + }} + /> + + ); +}; + +export default DisplayNameTable; diff --git a/apps/react-admin/src/components/abp/display-names/types.ts b/apps/react-admin/src/components/abp/display-names/types.ts new file mode 100644 index 000000000..2266a7a59 --- /dev/null +++ b/apps/react-admin/src/components/abp/display-names/types.ts @@ -0,0 +1,12 @@ +import type { Dictionary } from "#/abp-core"; + +export interface DisplayNameInfo { + culture: string; + displayName: string; +} + +export interface DisplayNameProps { + data?: Dictionary; + onChange?: (data: DisplayNameInfo) => void; + onDelete?: (data: DisplayNameInfo) => void; +} diff --git a/apps/react-admin/src/components/abp/localizable-input/localizable-input.tsx b/apps/react-admin/src/components/abp/localizable-input/localizable-input.tsx new file mode 100644 index 000000000..07939546d --- /dev/null +++ b/apps/react-admin/src/components/abp/localizable-input/localizable-input.tsx @@ -0,0 +1,183 @@ +import { useCallback, useEffect, useMemo, useState } from "react"; +import { Form, Input, Select } from "antd"; +import type { DefaultOptionType } from "antd/es/select"; +import { useTranslation } from "react-i18next"; +import { isNullOrWhiteSpace } from "@/utils/string"; +import type { LocalizableStringInfo } from "#/abp-core/global"; +import useAbpStore from "@/store/abpCoreStore"; +import { localizationSerializer } from "@/utils/abp/localization-serializer"; + +interface Props { + allowClear?: boolean; + disabled?: boolean; + value?: string; + onChange?: (value: string) => void; +} + +interface State { + displayName?: string; + displayNames: DefaultOptionType[]; + resourceName?: string; +} + +const LocalizableInput: React.FC = ({ allowClear, disabled, value, onChange }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + const abpStore = useAbpStore(); + const { deserialize, serialize } = localizationSerializer(); + + const [state, setState] = useState({ + displayNames: [], + displayName: undefined, + resourceName: undefined, + }); + + const isFixed = useMemo(() => { + return state.resourceName === "Fixed"; + }, [state.resourceName]); + + const resources = useMemo(() => { + if (!abpStore.localization) { + return []; + } + + const sources = Object.keys(abpStore.localization.resources).map((key) => ({ + label: key, + value: key, + })); + + return [ + { + label: $t("component.localizable_input.resources.fiexed.group"), + options: [ + { + label: $t("component.localizable_input.resources.fiexed.label"), + value: "Fixed", + }, + ], + value: "F", + }, + { + label: $t("component.localizable_input.resources.localization.group"), + options: sources, + value: "R", + }, + ]; + }, [abpStore.localization, $t]); + + const triggerDisplayNameChange = useCallback( + (displayName?: string) => { + if (!displayName) return; + + let updateValue = ""; + if (isFixed) { + updateValue = `F:${displayName}`; + } else if (!isNullOrWhiteSpace(state.resourceName)) { + const info: LocalizableStringInfo = { + name: displayName, + resourceName: state.resourceName ?? "", + }; + updateValue = serialize(info); + } + + onChange?.(updateValue); + form.setFieldValue("localizableInput", updateValue); + }, + [isFixed, state.resourceName, serialize, onChange, form], + ); + + const handleDisplayNameChange = (value?: string) => { + setState((prev) => ({ ...prev, displayName: value })); + triggerDisplayNameChange(value); + }; + + const localizationResources = abpStore.localization?.resources; + const handleResourceChange = useCallback( + (value?: string, triggerChanged = false) => { + const newDisplayNames: DefaultOptionType[] = []; + + if (value && localizationResources?.[value]) { + Object.keys(localizationResources[value].texts).forEach((key) => { + const labelText = localizationResources[value]?.texts[key]; + newDisplayNames.push({ + label: labelText ?? key, + value: key, + }); + }); + } + + setState((prev) => ({ + ...prev, + displayNames: newDisplayNames, + displayName: undefined, + resourceName: value, + })); + + if (triggerChanged) { + triggerDisplayNameChange(undefined); + } + }, + [localizationResources, triggerDisplayNameChange], + ); + useEffect(() => { + if (value) { + const info = deserialize(value); + if (state.resourceName !== info.resourceName) { + handleResourceChange(isNullOrWhiteSpace(info.resourceName) ? undefined : info.resourceName, false); + } + if (state.displayName !== info.name) { + setState((prev) => ({ + ...prev, + displayName: isNullOrWhiteSpace(info.name) ? undefined : info.name, + })); + } + } + }, [value]); + + return ( +
+ + +
+
+ handleDisplayNameChange(e.target.value)} + /> + ) : ( + + + + + + + + ); +}; + +export default PropertyModal; diff --git a/apps/react-admin/src/components/abp/properties/property-table.tsx b/apps/react-admin/src/components/abp/properties/property-table.tsx new file mode 100644 index 000000000..363713997 --- /dev/null +++ b/apps/react-admin/src/components/abp/properties/property-table.tsx @@ -0,0 +1,102 @@ +import { Button, Popconfirm, Table } from "antd"; +import type { ColumnsType } from "antd/es/table"; +import { PlusOutlined, DeleteOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { useMemo, useState } from "react"; +import PropertyModal from "./property-modal"; +import type { PropertyInfo, PropertyProps } from "./types"; + +const PropertyTable: React.FC = ({ + data = {}, + allowDelete = true, + allowEdit = true, + disabled = false, + onChange, + onDelete, +}) => { + const { t: $t } = useTranslation(); + const [modalVisible, setModalVisible] = useState(false); + + const dataSource = useMemo((): PropertyInfo[] => { + return Object.keys(data).map((key) => ({ + key, + value: data[key], + })); + }, [data]); + + const columns: ColumnsType = useMemo(() => { + const baseColumns: ColumnsType = [ + { + align: "left", + dataIndex: "key", + fixed: "left", + width: 100, + title: $t("component.extra_property_dictionary.key"), + }, + { + align: "left", + dataIndex: "value", + fixed: "left", + title: $t("component.extra_property_dictionary.value"), + }, + ]; + + if (disabled) { + return baseColumns; + } + + return [ + ...baseColumns, + { + align: "center", + dataIndex: "action", + fixed: "right", + key: "action", + title: $t("component.extra_property_dictionary.actions.title"), + width: 150, + render: (_, record: PropertyInfo) => + allowDelete && ( + handleDelete(record)} + > + + + ), + }, + ]; + }, [disabled, allowDelete, $t]); + + const handleCreate = () => { + setModalVisible(true); + }; + + const handleDelete = (prop: PropertyInfo) => { + onDelete?.(prop); + }; + + const handleChange = (prop: PropertyInfo) => { + onChange?.(prop); + setModalVisible(false); + }; + + return ( +
+
+ {!disabled && allowEdit && ( + + )} +
+
+
+ + setModalVisible(false)} onChange={handleChange} /> + + ); +}; + +export default PropertyTable; diff --git a/apps/react-admin/src/components/abp/properties/types.ts b/apps/react-admin/src/components/abp/properties/types.ts new file mode 100644 index 000000000..591fa70fc --- /dev/null +++ b/apps/react-admin/src/components/abp/properties/types.ts @@ -0,0 +1,16 @@ +import type { Dictionary } from "#/abp-core"; + +interface PropertyInfo { + key: string; + value: string; +} +interface PropertyProps { + allowDelete?: boolean; + allowEdit?: boolean; + data?: Dictionary; + disabled?: boolean; + onChange?: (data: PropertyInfo) => void; + onDelete?: (data: PropertyInfo) => void; +} + +export type { PropertyInfo, PropertyProps }; diff --git a/apps/react-admin/src/components/animate/motion-container.tsx b/apps/react-admin/src/components/animate/motion-container.tsx new file mode 100644 index 000000000..953386109 --- /dev/null +++ b/apps/react-admin/src/components/animate/motion-container.tsx @@ -0,0 +1,40 @@ +import { type MotionProps, m } from "framer-motion"; + +import { varContainer } from "./variants/container"; + +interface Props extends MotionProps { + className?: string; +} + +/** + * Motion 通用容器 + * + * variants: [变体可以用于使用单个动画道具为组件的整个子树设置动画](https://www.framer.com/motion/animation/#variants) + * + * Variants 是一组预定义的对象 + * const variants = { + * visible: { opacity: 1 }, + * hidden: { opacity: 0 }, + * } + * + * 需要指定 inital 和 animate 属性名 + * + */ +export default function MotionContainer({ children, className }: Props) { + return ( + + {children} + + ); +} diff --git a/apps/react-admin/src/components/animate/motion-lazy.tsx b/apps/react-admin/src/components/animate/motion-lazy.tsx new file mode 100644 index 000000000..ffd70a2b8 --- /dev/null +++ b/apps/react-admin/src/components/animate/motion-lazy.tsx @@ -0,0 +1,15 @@ +import { LazyMotion, domMax, m } from "framer-motion"; + +type Props = { + children: React.ReactNode; +}; +/** + * [Reduce bundle size by lazy-loading a subset of Motion's features](https://www.framer.com/motion/lazy-motion/) + */ +export function MotionLazy({ children }: Props) { + return ( + + {children} + + ); +} diff --git a/apps/react-admin/src/components/animate/motion-viewport.tsx b/apps/react-admin/src/components/animate/motion-viewport.tsx new file mode 100644 index 000000000..d2262c258 --- /dev/null +++ b/apps/react-admin/src/components/animate/motion-viewport.tsx @@ -0,0 +1,28 @@ +import { type MotionProps, m } from "framer-motion"; + +import { varContainer } from "./variants"; + +interface Props extends MotionProps { + className?: string; +} +/** + * [whileInView: 元素可以在进出视口时设置动画](https://www.framer.com/motion/scroll-animations/#scroll-triggered-animations) + * + * + viewport: [视口](https://www.framer.com/motion/scroll-animations/###viewport) + * + * + once: 仅触发一次 + */ +export default function MotionViewport({ children, className, ...other }: Props) { + return ( + + {children} + + ); +} diff --git a/apps/react-admin/src/components/animate/types.ts b/apps/react-admin/src/components/animate/types.ts new file mode 100644 index 000000000..9f98899e2 --- /dev/null +++ b/apps/react-admin/src/components/animate/types.ts @@ -0,0 +1,26 @@ +export type VariantsType = { + durationIn?: number; + durationOut?: number; + easeIn?: []; + easeOut?: []; + distance?: number; +}; + +export type TranHoverType = { + duration?: number; + ease?: []; +}; +export type TranEnterType = { + durationIn?: number; + easeIn?: []; +}; +export type TranExitType = { + durationOut?: number; + easeOut?: []; +}; + +export type BackgroundType = { + duration?: number; + ease?: []; + colors?: string[]; +}; diff --git a/apps/react-admin/src/components/animate/variants/action.ts b/apps/react-admin/src/components/animate/variants/action.ts new file mode 100644 index 000000000..4f7adbe51 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/action.ts @@ -0,0 +1,9 @@ +/** + * https://www.framer.com/motion/gestures/ + * @param hover + * @param tap + */ +export const varHover = (hover = 1.09, tap = 0.97) => ({ + hover: { scale: hover }, + tap: { scale: tap }, +}); diff --git a/apps/react-admin/src/components/animate/variants/background.ts b/apps/react-admin/src/components/animate/variants/background.ts new file mode 100644 index 000000000..a98458c6b --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/background.ts @@ -0,0 +1,103 @@ +import type { BackgroundType } from "../types"; + +export const varBgColor = (props?: BackgroundType) => { + const colors = props?.colors || ["#19dcea", "#b22cff"]; + const duration = props?.duration || 5; + const ease = props?.ease || "linear"; + + return { + animate: { + background: colors, + transition: { duration, ease }, + }, + }; +}; + +// ---------------------------------------------------------------------- + +export const varBgKenburns = (props?: BackgroundType) => { + const duration = props?.duration || 5; + const ease = props?.ease || "easeOut"; + + return { + top: { + animate: { + scale: [1, 1.25], + y: [0, -15], + transformOrigin: ["50% 16%", "50% top"], + transition: { duration, ease }, + }, + }, + bottom: { + animate: { + scale: [1, 1.25], + y: [0, 15], + transformOrigin: ["50% 84%", "50% bottom"], + transition: { duration, ease }, + }, + }, + left: { + animate: { + scale: [1, 1.25], + x: [0, 20], + y: [0, 15], + transformOrigin: ["16% 50%", "0% left"], + transition: { duration, ease }, + }, + }, + right: { + animate: { + scale: [1, 1.25], + x: [0, -20], + y: [0, -15], + transformOrigin: ["84% 50%", "0% right"], + transition: { duration, ease }, + }, + }, + }; +}; + +// ---------------------------------------------------------------------- + +export const varBgPan = (props?: BackgroundType) => { + const colors = props?.colors || ["#ee7752", "#e73c7e", "#23a6d5", "#23d5ab"]; + const duration = props?.duration || 5; + const ease = props?.ease || "linear"; + + const gradient = (deg: number) => `linear-gradient(${deg}deg, ${colors})`; + + return { + top: { + animate: { + backgroundImage: [gradient(0), gradient(0)], + backgroundPosition: ["center 99%", "center 1%"], + backgroundSize: ["100% 600%", "100% 600%"], + transition: { duration, ease }, + }, + }, + right: { + animate: { + backgroundPosition: ["1% center", "99% center"], + backgroundImage: [gradient(270), gradient(270)], + backgroundSize: ["600% 100%", "600% 100%"], + transition: { duration, ease }, + }, + }, + bottom: { + animate: { + backgroundImage: [gradient(0), gradient(0)], + backgroundPosition: ["center 1%", "center 99%"], + backgroundSize: ["100% 600%", "100% 600%"], + transition: { duration, ease }, + }, + }, + left: { + animate: { + backgroundPosition: ["99% center", "1% center"], + backgroundImage: [gradient(270), gradient(270)], + backgroundSize: ["600% 100%", "600% 100%"], + transition: { duration, ease }, + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/bounce.ts b/apps/react-admin/src/components/animate/variants/bounce.ts new file mode 100644 index 000000000..8830c8aba --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/bounce.ts @@ -0,0 +1,111 @@ +import type { VariantsType } from "../types"; + +import { varTranEnter, varTranExit } from "./transition"; + +export const varBounce = (props?: VariantsType) => { + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + in: { + initial: {}, + animate: { + scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1], + opacity: [0, 1, 1, 1, 1, 1], + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: [0.9, 1.1, 0.3], + opacity: [1, 1, 0], + }, + }, + inUp: { + initial: {}, + animate: { + y: [720, -24, 12, -4, 0], + scaleY: [4, 0.9, 0.95, 0.985, 1], + opacity: [0, 1, 1, 1, 1], + transition: { ...varTranEnter({ durationIn, easeIn }) }, + }, + exit: { + y: [12, -24, 720], + scaleY: [0.985, 0.9, 3], + opacity: [1, 1, 0], + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inDown: { + initial: {}, + animate: { + y: [-720, 24, -12, 4, 0], + scaleY: [4, 0.9, 0.95, 0.985, 1], + opacity: [0, 1, 1, 1, 1], + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + y: [-12, 24, -720], + scaleY: [0.985, 0.9, 3], + opacity: [1, 1, 0], + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inLeft: { + initial: {}, + animate: { + x: [-720, 24, -12, 4, 0], + scaleX: [3, 1, 0.98, 0.995, 1], + opacity: [0, 1, 1, 1, 1], + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: [0, 24, -720], + scaleX: [1, 0.9, 2], + opacity: [1, 1, 0], + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inRight: { + initial: {}, + animate: { + x: [720, -24, 12, -4, 0], + scaleX: [3, 1, 0.98, 0.995, 1], + opacity: [0, 1, 1, 1, 1], + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: [0, -24, 720], + scaleX: [1, 0.9, 2], + opacity: [1, 1, 0], + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + out: { + animate: { scale: [0.9, 1.1, 0.3], opacity: [1, 1, 0] }, + }, + outUp: { + animate: { + y: [-12, 24, -720], + scaleY: [0.985, 0.9, 3], + opacity: [1, 1, 0], + }, + }, + outDown: { + animate: { + y: [12, -24, 720], + scaleY: [0.985, 0.9, 3], + opacity: [1, 1, 0], + }, + }, + outLeft: { + animate: { x: [0, 24, -720], scaleX: [1, 0.9, 2], opacity: [1, 1, 0] }, + }, + outRight: { + animate: { x: [0, -24, 720], scaleX: [1, 0.9, 2], opacity: [1, 1, 0] }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/container.ts b/apps/react-admin/src/components/animate/variants/container.ts new file mode 100644 index 000000000..77ce2f1de --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/container.ts @@ -0,0 +1,26 @@ +export type Props = { + staggerIn?: number; + delayIn?: number; + staggerOut?: number; +}; + +export const varContainer = (props?: Props) => { + const staggerIn = props?.staggerIn || 0.05; + const delayIn = props?.staggerIn || 0.05; + const staggerOut = props?.staggerIn || 0.05; + + return { + animate: { + transition: { + staggerChildren: staggerIn, + delayChildren: delayIn, + }, + }, + exit: { + transition: { + staggerChildren: staggerOut, + staggerDirection: -1, + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/fade.ts b/apps/react-admin/src/components/animate/variants/fade.ts new file mode 100644 index 000000000..114b3c561 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/fade.ts @@ -0,0 +1,134 @@ +import type { VariantsType } from "../types"; + +// +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varFade = (props?: VariantsType) => { + const distance = props?.distance || 120; + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + in: { + initial: { opacity: 0 }, + animate: { opacity: 1, transition: varTranEnter }, + exit: { opacity: 0, transition: varTranExit }, + }, + inUp: { + initial: { y: distance, opacity: 0 }, + animate: { + y: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + y: distance, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inDown: { + initial: { y: -distance, opacity: 0 }, + animate: { + y: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + y: -distance, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inLeft: { + initial: { x: -distance, opacity: 0 }, + animate: { + x: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: -distance, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inRight: { + initial: { x: distance, opacity: 0 }, + animate: { + x: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: distance, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + out: { + initial: { opacity: 1 }, + animate: { opacity: 0, transition: varTranEnter({ durationIn, easeIn }) }, + exit: { opacity: 1, transition: varTranExit({ durationOut, easeOut }) }, + }, + outUp: { + initial: { y: 0, opacity: 1 }, + animate: { + y: -distance, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + y: 0, + opacity: 1, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + outDown: { + initial: { y: 0, opacity: 1 }, + animate: { + y: distance, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + y: 0, + opacity: 1, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + outLeft: { + initial: { x: 0, opacity: 1 }, + animate: { + x: -distance, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: 0, + opacity: 1, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + outRight: { + initial: { x: 0, opacity: 1 }, + animate: { + x: distance, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + x: 0, + opacity: 1, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/flip.ts b/apps/react-admin/src/components/animate/variants/flip.ts new file mode 100644 index 000000000..b7828ef8d --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/flip.ts @@ -0,0 +1,61 @@ +import type { VariantsType } from "../types"; + +// +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varFlip = (props?: VariantsType) => { + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + inX: { + initial: { rotateX: -180, opacity: 0 }, + animate: { + rotateX: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + rotateX: -180, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inY: { + initial: { rotateY: -180, opacity: 0 }, + animate: { + rotateY: 0, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + rotateY: -180, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + outX: { + initial: { rotateX: 0, opacity: 1 }, + animate: { + rotateX: 70, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + outY: { + initial: { rotateY: 0, opacity: 1 }, + animate: { + rotateY: 70, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/index.ts b/apps/react-admin/src/components/animate/variants/index.ts new file mode 100644 index 000000000..26fc19a28 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/index.ts @@ -0,0 +1,98 @@ +import { varBgColor, varBgKenburns, varBgPan } from "./background"; +import { varBounce } from "./bounce"; +import { varFade } from "./fade"; +import { varFlip } from "./flip"; +import { varRotate } from "./rotate"; +import { varScale } from "./scale"; +import { varSlide } from "./slide"; +import { varZoom } from "./zoom"; + +export * from "./action"; +export * from "./background"; +export * from "./bounce"; +export * from "./container"; +export * from "./fade"; +export * from "./flip"; +export * from "./path"; +export * from "./rotate"; +export * from "./scale"; +export * from "./slide"; +export * from "./transition"; +export * from "./zoom"; + +export function getVariant(variant = "slideInUp") { + return { + // Slide + slideInUp: varSlide().inUp, + slideInDown: varSlide().inDown, + slideInLeft: varSlide().inLeft, + slideInRight: varSlide().inRight, + slideOutUp: varSlide().outUp, + slideOutDown: varSlide().outDown, + slideOutLeft: varSlide().outLeft, + slideOutRight: varSlide().outRight, + // Fade + fadeIn: varFade().in, + fadeInUp: varFade().inUp, + fadeInDown: varFade().inDown, + fadeInLeft: varFade().inLeft, + fadeInRight: varFade().inRight, + fadeOut: varFade().out, + fadeOutUp: varFade().outUp, + fadeOutDown: varFade().outDown, + fadeOutLeft: varFade().outLeft, + fadeOutRight: varFade().outRight, + // Zoom + zoomIn: varZoom({ distance: 80 }).in, + zoomInUp: varZoom({ distance: 80 }).inUp, + zoomInDown: varZoom({ distance: 80 }).inDown, + zoomInLeft: varZoom({ distance: 240 }).inLeft, + zoomInRight: varZoom({ distance: 240 }).inRight, + zoomOut: varZoom().out, + zoomOutLeft: varZoom().outLeft, + zoomOutRight: varZoom().outRight, + zoomOutUp: varZoom().outUp, + zoomOutDown: varZoom().outDown, + // Bounce + bounceIn: varBounce().in, + bounceInUp: varBounce().inUp, + bounceInDown: varBounce().inDown, + bounceInLeft: varBounce().inLeft, + bounceInRight: varBounce().inRight, + bounceOut: varBounce().out, + bounceOutUp: varBounce().outUp, + bounceOutDown: varBounce().outDown, + bounceOutLeft: varBounce().outLeft, + bounceOutRight: varBounce().outRight, + // Flip + flipInX: varFlip().inX, + flipInY: varFlip().inY, + flipOutX: varFlip().outX, + flipOutY: varFlip().outY, + // Scale + scaleInX: varScale().inX, + scaleInY: varScale().inY, + scaleOutX: varScale().outX, + scaleOutY: varScale().outY, + // Rotate + rotateIn: varRotate().in, + rotateOut: varRotate().out, + // Background + kenburnsTop: varBgKenburns().top, + kenburnsBottom: varBgKenburns().bottom, + kenburnsLeft: varBgKenburns().left, + kenburnsRight: varBgKenburns().right, + panTop: varBgPan().top, + panBottom: varBgPan().bottom, + panLeft: varBgPan().left, + panRight: varBgPan().right, + color2x: varBgColor(), + color3x: varBgColor({ colors: ["#19dcea", "#b22cff", "#ea2222"] }), + color4x: varBgColor({ + colors: ["#19dcea", "#b22cff", "#ea2222", "#f5be10"], + }), + color5x: varBgColor({ + colors: ["#19dcea", "#b22cff", "#ea2222", "#f5be10", "#3bd80d"], + }), + }[variant]; +} diff --git a/apps/react-admin/src/components/animate/variants/path.ts b/apps/react-admin/src/components/animate/variants/path.ts new file mode 100644 index 000000000..cf31ab913 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/path.ts @@ -0,0 +1,14 @@ +// ---------------------------------------------------------------------- + +export const TRANSITION = { + duration: 2, + ease: [0.43, 0.13, 0.23, 0.96], +}; + +export const varPath = { + animate: { + fillOpacity: [0, 0, 1], + pathLength: [1, 0.4, 0], + transition: TRANSITION, + }, +}; diff --git a/apps/react-admin/src/components/animate/variants/rotate.ts b/apps/react-admin/src/components/animate/variants/rotate.ts new file mode 100644 index 000000000..6b6544003 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/rotate.ts @@ -0,0 +1,40 @@ +import type { VariantsType } from "../types"; + +// +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varRotate = (props?: VariantsType) => { + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + in: { + initial: { opacity: 0, rotate: -360 }, + animate: { + opacity: 1, + rotate: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + opacity: 0, + rotate: -360, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + out: { + initial: { opacity: 1, rotate: 0 }, + animate: { + opacity: 0, + rotate: -360, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/scale.ts b/apps/react-admin/src/components/animate/variants/scale.ts new file mode 100644 index 000000000..7c3c507e8 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/scale.ts @@ -0,0 +1,60 @@ +import type { VariantsType } from "../types"; + +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varScale = (props?: VariantsType) => { + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + inX: { + initial: { scaleX: 0, opacity: 0 }, + animate: { + scaleX: 1, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scaleX: 0, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inY: { + initial: { scaleY: 0, opacity: 0 }, + animate: { + scaleY: 1, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scaleY: 0, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + outX: { + initial: { scaleX: 1, opacity: 1 }, + animate: { + scaleX: 0, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + outY: { + initial: { scaleY: 1, opacity: 1 }, + animate: { + scaleY: 0, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/slide.ts b/apps/react-admin/src/components/animate/variants/slide.ts new file mode 100644 index 000000000..c1a9f621a --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/slide.ts @@ -0,0 +1,72 @@ +import type { VariantsType } from "../types"; + +// +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varSlide = (props?: VariantsType) => { + const distance = props?.distance || 160; + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + inUp: { + initial: { y: distance }, + animate: { y: 0, transition: varTranEnter({ durationIn, easeIn }) }, + exit: { y: distance, transition: varTranExit({ durationOut, easeOut }) }, + }, + inDown: { + initial: { y: -distance }, + animate: { y: 0, transition: varTranEnter({ durationIn, easeIn }) }, + exit: { y: -distance, transition: varTranExit({ durationOut, easeOut }) }, + }, + inLeft: { + initial: { x: -distance }, + animate: { x: 0, transition: varTranEnter({ durationIn, easeIn }) }, + exit: { x: -distance, transition: varTranExit({ durationOut, easeOut }) }, + }, + inRight: { + initial: { x: distance }, + animate: { x: 0, transition: varTranEnter({ durationIn, easeIn }) }, + exit: { x: distance, transition: varTranExit({ durationOut, easeOut }) }, + }, + + // OUT + outUp: { + initial: { y: 0 }, + animate: { + y: -distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { y: 0, transition: varTranExit({ durationOut, easeOut }) }, + }, + outDown: { + initial: { y: 0 }, + animate: { + y: distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { y: 0, transition: varTranExit({ durationOut, easeOut }) }, + }, + outLeft: { + initial: { x: 0 }, + animate: { + x: -distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { x: 0, transition: varTranExit({ durationOut, easeOut }) }, + }, + outRight: { + initial: { x: 0 }, + animate: { + x: distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { x: 0, transition: varTranExit({ durationOut, easeOut }) }, + }, + }; +}; diff --git a/apps/react-admin/src/components/animate/variants/transition.ts b/apps/react-admin/src/components/animate/variants/transition.ts new file mode 100644 index 000000000..f3616d436 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/transition.ts @@ -0,0 +1,25 @@ +import type { TranEnterType, TranExitType, TranHoverType } from "../types"; + +// https://www.framer.com/motion/transition/ +// A transition defines how values animate from one state to another. + +export const varTranHover = (props?: TranHoverType) => { + const duration = props?.duration || 0.32; + const ease = props?.ease || [0.43, 0.13, 0.23, 0.96]; + + return { duration, ease }; +}; + +export const varTranEnter = (props?: TranEnterType) => { + const duration = props?.durationIn || 0.64; + const ease = props?.easeIn || [0.43, 0.13, 0.23, 0.96]; + + return { duration, ease }; +}; + +export const varTranExit = (props?: TranExitType) => { + const duration = props?.durationOut || 0.48; + const ease = props?.easeOut || [0.43, 0.13, 0.23, 0.96]; + + return { duration, ease }; +}; diff --git a/apps/react-admin/src/components/animate/variants/zoom.ts b/apps/react-admin/src/components/animate/variants/zoom.ts new file mode 100644 index 000000000..bdf9d15a8 --- /dev/null +++ b/apps/react-admin/src/components/animate/variants/zoom.ts @@ -0,0 +1,137 @@ +import type { VariantsType } from "../types"; + +// +import { varTranEnter, varTranExit } from "./transition"; + +// ---------------------------------------------------------------------- + +export const varZoom = (props?: VariantsType) => { + const distance = props?.distance || 720; + const durationIn = props?.durationIn; + const durationOut = props?.durationOut; + const easeIn = props?.easeIn; + const easeOut = props?.easeOut; + + return { + // IN + in: { + initial: { scale: 0, opacity: 0 }, + animate: { + scale: 1, + opacity: 1, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: 0, + opacity: 0, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inUp: { + initial: { scale: 0, opacity: 0, translateY: distance }, + animate: { + scale: 1, + opacity: 1, + translateY: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: 0, + opacity: 0, + translateY: distance, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inDown: { + initial: { scale: 0, opacity: 0, translateY: -distance }, + animate: { + scale: 1, + opacity: 1, + translateY: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: 0, + opacity: 0, + translateY: -distance, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inLeft: { + initial: { scale: 0, opacity: 0, translateX: -distance }, + animate: { + scale: 1, + opacity: 1, + translateX: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: 0, + opacity: 0, + translateX: -distance, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + inRight: { + initial: { scale: 0, opacity: 0, translateX: distance }, + animate: { + scale: 1, + opacity: 1, + translateX: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + exit: { + scale: 0, + opacity: 0, + translateX: distance, + transition: varTranExit({ durationOut, easeOut }), + }, + }, + + // OUT + out: { + initial: { scale: 1, opacity: 1 }, + animate: { + scale: 0, + opacity: 0, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + outUp: { + initial: { scale: 1, opacity: 1 }, + animate: { + scale: 0, + opacity: 0, + translateY: -distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + outDown: { + initial: { scale: 1, opacity: 1 }, + animate: { + scale: 0, + opacity: 0, + translateY: distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + outLeft: { + initial: { scale: 1, opacity: 1 }, + animate: { + scale: 0, + opacity: 0, + translateX: -distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + outRight: { + initial: { scale: 1, opacity: 1 }, + animate: { + scale: 0, + opacity: 0, + translateX: distance, + transition: varTranEnter({ durationIn, easeIn }), + }, + }, + }; +}; diff --git a/apps/react-admin/src/components/card/index.tsx b/apps/react-admin/src/components/card/index.tsx new file mode 100644 index 000000000..7602531e8 --- /dev/null +++ b/apps/react-admin/src/components/card/index.tsx @@ -0,0 +1,28 @@ +import { themeVars } from "@/theme/theme.css"; +import type { CSSProperties, ReactNode } from "react"; + +type Props = { + children?: ReactNode; + className?: string; + style?: CSSProperties; +}; +export default function Card({ children, ...other }: Props) { + return ( +
+ {children} +
+ ); +} diff --git a/apps/react-admin/src/components/chart/chart.tsx b/apps/react-admin/src/components/chart/chart.tsx new file mode 100644 index 000000000..06d1bb431 --- /dev/null +++ b/apps/react-admin/src/components/chart/chart.tsx @@ -0,0 +1,15 @@ +import { memo } from "react"; +import ApexChart from "react-apexcharts"; +import { chartWrapper } from "./styles.css"; + +import type { Props as ApexChartProps } from "react-apexcharts"; + +function Chart(props: ApexChartProps) { + return ( +
+ +
+ ); +} + +export default memo(Chart); diff --git a/apps/react-admin/src/components/chart/styles.css.ts b/apps/react-admin/src/components/chart/styles.css.ts new file mode 100644 index 000000000..e81a1b19c --- /dev/null +++ b/apps/react-admin/src/components/chart/styles.css.ts @@ -0,0 +1,54 @@ +import { themeVars } from "@/theme/theme.css"; +import { rgbAlpha } from "@/utils/theme"; +import { globalStyle } from "@vanilla-extract/css"; +import { style } from "@vanilla-extract/css"; + +export const chartWrapper = style({}, "apexcharts-wrapper"); + +// TOOLTIP +globalStyle(`${chartWrapper} .apexcharts-tooltip`, { + color: themeVars.colors.text.primary, + borderRadius: themeVars.borderRadius.lg, + backdropFilter: "blur(6px)", + backgroundColor: rgbAlpha(themeVars.colors.background.paperChannel, 0.8), + boxShadow: themeVars.shadows.card, +}); + +globalStyle(`${chartWrapper} .apexcharts-tooltip-title`, { + textAlign: "center", + fontWeight: "bold", + backgroundColor: themeVars.colors.background.neutral, +}); + +// TOOLTIP X +globalStyle(`${chartWrapper} .apexcharts-xaxistooltip`, { + color: themeVars.colors.text.primary, + borderRadius: themeVars.borderRadius.lg, + backdropFilter: "blur(6px)", + borderColor: "transparent", + boxShadow: themeVars.shadows.card, + backgroundColor: themeVars.colors.background.paper, +}); + +globalStyle(`${chartWrapper} .apexcharts-xaxistooltip::before`, { + borderBottomColor: rgbAlpha(themeVars.colors.background.paperChannel, 0.8), +}); + +globalStyle(`${chartWrapper} .apexcharts-xaxistooltip::after`, { + borderBottomColor: themeVars.colors.background.paper, +}); + +// LEGEND +globalStyle(`${chartWrapper} .apexcharts-legend`, { + padding: 0, +}); + +globalStyle(`${chartWrapper} .apexcharts-legend-series`, { + display: "inline-flex !important", + alignItems: "center", +}); + +globalStyle(`${chartWrapper} .apexcharts-legend-text`, { + lineHeight: "18px", + textTransform: "capitalize", +}); diff --git a/apps/react-admin/src/components/chart/useChart.ts b/apps/react-admin/src/components/chart/useChart.ts new file mode 100644 index 000000000..be29a8c68 --- /dev/null +++ b/apps/react-admin/src/components/chart/useChart.ts @@ -0,0 +1,211 @@ +import { themeVars } from "@/theme/theme.css"; +import { removePx } from "@/utils/theme"; +import type { ApexOptions } from "apexcharts"; +import { mergeDeepRight } from "ramda"; + +import { useSettings } from "@/store/settingStore"; +import { paletteColors, presetsColors } from "@/theme/tokens/color"; + +export default function useChart(options: ApexOptions) { + const { themeColorPresets } = useSettings(); + + const LABEL_TOTAL = { + show: true, + label: "Total", + color: themeVars.colors.text.secondary, + fontSize: themeVars.typography.fontSize.sm, + lineHeight: themeVars.typography.lineHeight.tight, + }; + + const LABEL_VALUE = { + offsetY: 8, + color: themeVars.colors.text.primary, + fontSize: themeVars.typography.fontSize.sm, + lineHeight: themeVars.typography.lineHeight.tight, + }; + + const baseOptions: ApexOptions = { + // Colors + colors: [ + presetsColors[themeColorPresets].default, + + paletteColors.info.default, + paletteColors.warning.default, + paletteColors.error.default, + paletteColors.success.default, + + paletteColors.warning.light, + paletteColors.info.light, + paletteColors.error.light, + paletteColors.success.light, + ], + + // Chart + chart: { + toolbar: { show: false }, + zoom: { enabled: false }, + foreColor: themeVars.colors.text.disabled, + fontFamily: themeVars.typography.fontFamily.primary, + }, + + // States + states: { + hover: { + filter: { + type: "lighten", + value: 0.04, + }, + }, + active: { + filter: { + type: "darken", + value: 0.88, + }, + }, + }, + + // Fill + fill: { + opacity: 1, + gradient: { + type: "vertical", + shadeIntensity: 0, + opacityFrom: 0.4, + opacityTo: 0, + stops: [0, 100], + }, + }, + + // Datalabels + dataLabels: { + enabled: false, + }, + + // Stroke + stroke: { + width: 3, + curve: "smooth", + lineCap: "round", + }, + + // Grid + grid: { + strokeDashArray: 3, + borderColor: themeVars.colors.background.neutral, + xaxis: { + lines: { + show: false, + }, + }, + }, + + // Xaxis + xaxis: { + axisBorder: { show: false }, + axisTicks: { show: false }, + }, + + // Markers + markers: { + size: 0, + }, + + // Tooltip + tooltip: { + theme: undefined, + x: { + show: true, + }, + }, + + // Legend + legend: { + show: true, + fontSize: themeVars.typography.fontSize.sm, + position: "top", + horizontalAlign: "right", + markers: { + strokeWidth: 0, + }, + fontWeight: 500, + itemMargin: { + horizontal: 8, + }, + labels: { + colors: themeVars.colors.text.primary, + }, + }, + + // plotOptions + plotOptions: { + // Bar + bar: { + borderRadius: 4, + columnWidth: "28%", + borderRadiusApplication: "end", + borderRadiusWhenStacked: "last", + }, + + // Pie + Donut + pie: { + donut: { + labels: { + show: true, + value: LABEL_VALUE, + total: LABEL_TOTAL, + }, + }, + }, + + // Radialbar + radialBar: { + track: { + strokeWidth: "100%", + }, + dataLabels: { + value: LABEL_VALUE, + total: LABEL_TOTAL, + }, + }, + + // Radar + radar: { + polygons: { + fill: { colors: ["transparent"] }, + strokeColors: themeVars.colors.background.neutral, + connectorColors: themeVars.colors.background.neutral, + }, + }, + + // polarArea + polarArea: { + rings: { + strokeColor: themeVars.colors.background.neutral, + }, + spokes: { + connectorColors: themeVars.colors.background.neutral, + }, + }, + }, + + // Responsive + responsive: [ + { + // sm + breakpoint: removePx(themeVars.screens.sm), + options: { + plotOptions: { bar: { columnWidth: "40%" } }, + }, + }, + { + // md + breakpoint: removePx(themeVars.screens.md), + options: { + plotOptions: { bar: { columnWidth: "32%" } }, + }, + }, + ], + }; + + return mergeDeepRight(baseOptions, options) as ApexOptions; +} diff --git a/apps/react-admin/src/components/editor/index.tsx b/apps/react-admin/src/components/editor/index.tsx new file mode 100644 index 000000000..f57d969d9 --- /dev/null +++ b/apps/react-admin/src/components/editor/index.tsx @@ -0,0 +1,36 @@ +/* eslint-disable import/order */ +import "@/utils/highlight"; +import ReactQuill, { type ReactQuillProps } from "react-quill"; +import { StyledEditor } from "./styles"; +import Toolbar, { formats } from "./toolbar"; + +interface Props extends ReactQuillProps { + sample?: boolean; + hiddleToolbar?: boolean; +} +export default function Editor({ id = "slash-quill", sample = false, hiddleToolbar = false, ...other }: Props) { + const modules = { + ...(hiddleToolbar + ? {} + : { + toolbar: { + container: `#${id}`, + }, + }), + history: { + delay: 500, + maxStack: 100, + userOnly: true, + }, + syntax: true, + clipboard: { + matchVisual: false, + }, + }; + return ( + + {!hiddleToolbar && } + + + ); +} diff --git a/apps/react-admin/src/components/editor/styles.ts b/apps/react-admin/src/components/editor/styles.ts new file mode 100644 index 000000000..87aa9ad00 --- /dev/null +++ b/apps/react-admin/src/components/editor/styles.ts @@ -0,0 +1,189 @@ +import { themeVars } from "@/theme/theme.css"; +import styled from "styled-components"; + +const StyledEditor = styled.div` + h1 { + font-size: 64px; + line-height: 1.25; + font-weight: 800; + } + h2 { + font-size: 56px; + line-height: 1.25; + font-weight: 800; + } + h3 { + font-size: 48px; + line-height: 1.25; + font-weight: 700; + } + h4 { + font-size: 40px; + line-height: 1.25; + font-weight: 700; + } + h5 { + font-size: 32px; + line-height: 1.25; + font-weight: 700; + } + h6 { + font-size: 24px; + line-height: 1.25; + font-weight: 600; + } + img { + display: inline; + } + overflow: hidden; + position: relative; + border-radius: 8px; + border: 1px solid ${themeVars.colors.common.border}; + & .ql-container.ql-snow { + border: none; + line-height: 1.6; + font-weight: 400; + font-size: 0.875rem; + } + & .ql-editor { + min-height: 160px; + max-height: 640px; + background-color: rgba(145, 158, 171, 0.08); + &.ql-blank::before { + font-style: normal; + color: ${themeVars.colors.text.secondary}; + } + & pre.ql-syntax { + border-radius: 8px; + line-height: 1.57143; + font-size: 0.875rem; + font-family: 'Public Sans', sans-serif; + font-weight: 400; + padding: 16px; + border-radius: 8px; + background-color: ${themeVars.colors.background.neutral}; + } + } +`; + +const StyledToolbar = styled.div` + & .ql-snow.ql-toolbar button:hover .ql-fill, + .ql-snow .ql-toolbar button:hover .ql-fill, + .ql-snow.ql-toolbar button:focus .ql-fill, + .ql-snow .ql-toolbar button:focus .ql-fill, + .ql-snow.ql-toolbar button.ql-active .ql-fill, + .ql-snow .ql-toolbar button.ql-active .ql-fill, + .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, + .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, + .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, + .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, + .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, + .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, + .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, + .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, + .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, + .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, + .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, + .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, + .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, + .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, + .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, + .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, + .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, + .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, + .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, + .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, + .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, + .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { + fill: ${themeVars.colors.palette.primary.default}; + } + & .ql-snow.ql-toolbar button:hover, + .ql-snow .ql-toolbar button:hover, + .ql-snow.ql-toolbar button:focus, + .ql-snow .ql-toolbar button:focus, + .ql-snow.ql-toolbar button.ql-active, + .ql-snow .ql-toolbar button.ql-active, + .ql-snow.ql-toolbar .ql-picker-label:hover, + .ql-snow .ql-toolbar .ql-picker-label:hover, + .ql-snow.ql-toolbar .ql-picker-label.ql-active, + .ql-snow .ql-toolbar .ql-picker-label.ql-active, + .ql-snow.ql-toolbar .ql-picker-item:hover, + .ql-snow .ql-toolbar .ql-picker-item:hover, + .ql-snow.ql-toolbar .ql-picker-item.ql-selected, + .ql-snow .ql-toolbar .ql-picker-item.ql-selected { + color: ${themeVars.colors.palette.primary.default}; + } + + & .ql-snow.ql-toolbar button:hover .ql-stroke, + .ql-snow .ql-toolbar button:hover .ql-stroke, + .ql-snow.ql-toolbar button:focus .ql-stroke, + .ql-snow .ql-toolbar button:focus .ql-stroke, + .ql-snow.ql-toolbar button.ql-active .ql-stroke, + .ql-snow .ql-toolbar button.ql-active .ql-stroke, + .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, + .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, + .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, + .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, + .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, + .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, + .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, + .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, + .ql-snow.ql-toolbar button:hover .ql-stroke-miter, + .ql-snow .ql-toolbar button:hover .ql-stroke-miter, + .ql-snow.ql-toolbar button:focus .ql-stroke-miter, + .ql-snow .ql-toolbar button:focus .ql-stroke-miter, + .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, + .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, + .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, + .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, + .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, + .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, + .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, + .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, + .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, + .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { + stroke: ${themeVars.colors.palette.primary.default}; + } + + & .ql-stroke { + stroke: ${themeVars.colors.text.primary}; + } + & .ql-fill, + .ql-stroke.ql-fill { + fill: ${themeVars.colors.text.primary}; + } + + & .ql-toolbar.ql-snow { + border: none; + border-bottom: 1px solid ${themeVars.colors.common.border}; + // Button + & button { + padding: 0; + display: flex; + align-items: center; + justify-content: center; + border-radius: 4px; + } + & button svg, + span svg { + width: 20px; + height: 20px; + } + & .ql-picker-label { + border-radius: 4px; + border-color: transparent !important; + background-color: ${themeVars.colors.background.paper}; + color: ${themeVars.colors.text.primary}; + } + & .ql-picker-options { + margin-top: 4px; + border: none; + max-height: 200px; + overflow: auto; + border-radius: 8px; + color: ${themeVars.colors.text.primary}; + background-color: ${themeVars.colors.background.paper}; + } + } +`; +export { StyledEditor, StyledToolbar }; diff --git a/apps/react-admin/src/components/editor/toolbar.tsx b/apps/react-admin/src/components/editor/toolbar.tsx new file mode 100644 index 000000000..6cb9d4b42 --- /dev/null +++ b/apps/react-admin/src/components/editor/toolbar.tsx @@ -0,0 +1,104 @@ +import { StyledToolbar } from "./styles"; + +const HEADINGS = ["Heading 1", "Heading 2", "Heading 3", "Heading 4", "Heading 5", "Heading 6"]; + +export const formats = [ + "align", + "background", + "blockquote", + "bold", + "bullet", + "code", + "code-block", + "color", + "direction", + "font", + "formula", + "header", + "image", + "indent", + "italic", + "link", + "list", + "script", + "size", + "strike", + "table", + "underline", + "video", +]; + +type EditorToolbarProps = { + id: string; + isSimple?: boolean; +}; + +export default function Toolbar({ id, isSimple }: EditorToolbarProps) { + return ( + +
+
+ +
+ +
+
+ + {!isSimple && ( +
+ +
+ )} + +
+
+ + {!isSimple && ( +
+
+ )} + + {!isSimple && ( +
+
+ )} + +
+
+
+

Welcome back 👋

+

{username}

+
+
+ Welcome to join the Discord channel to discuss everything about Slash Admin, or you can visite my blog: + +
+ + + + + + + + ); +} + +function BannerSvg() { + return ( + + Banner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/carousel-card.tsx b/apps/react-admin/src/pages/dashboard/workbench/carousel-card.tsx new file mode 100644 index 000000000..b10e076b1 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/carousel-card.tsx @@ -0,0 +1,28 @@ +import { Carousel } from "antd"; + +export default function CarouselCard() { + const contentStyle: React.CSSProperties = { + margin: 0, + height: "160px", + color: "#000000", + lineHeight: "160px", + textAlign: "center", + background: "#364d79", + }; + return ( + +
+

1

+
+
+

2

+
+
+

3

+
+
+

4

+
+
+ ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/conversion_applications.tsx b/apps/react-admin/src/pages/dashboard/workbench/conversion_applications.tsx new file mode 100644 index 000000000..3df78cc38 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/conversion_applications.tsx @@ -0,0 +1,55 @@ +import { Iconify } from "@/components/icon"; +import { themeVars } from "@/theme/theme.css"; +import { Progress } from "antd"; + +export function Conversion() { + return ( + + ); +} +export function Applications() { + return ( + + ); +} + +type Props = { + percent: number; + title: string; + subtitle: string; + iconify: string; + bg?: string; + strokeColor?: string; +}; +function Basic({ percent, title, subtitle, iconify, bg, strokeColor }: Props) { + const format = (val?: number) => {val}%; + return ( +
+ +
+ {title} + {subtitle} +
+
+ +
+
+ ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/current-download.tsx b/apps/react-admin/src/pages/dashboard/workbench/current-download.tsx new file mode 100644 index 000000000..2606324ee --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/current-download.tsx @@ -0,0 +1,56 @@ +import { Typography } from "antd"; + +import Card from "@/components/card"; +import Chart from "@/components/chart/chart"; +import useChart from "@/components/chart/useChart"; + +export default function CurrentDownload() { + return ( + +
+ Current Download +
+
+ +
+
+ ); +} + +const series = [44, 55, 13, 43]; +function ChartDonut() { + const chartOptions = useChart({ + labels: ["Mac", "Window", "IOS", "Android"], + stroke: { + show: false, + }, + legend: { + position: "bottom", + horizontalAlign: "center", + }, + tooltip: { + fillSeriesColor: false, + }, + chart: { + width: 240, + }, + plotOptions: { + pie: { + donut: { + size: "90%", + labels: { + total: { + fontSize: "12px", + }, + value: { + fontSize: "18px", + fontWeight: 700, + }, + }, + }, + }, + }, + }); + + return ; +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/index.tsx b/apps/react-admin/src/pages/dashboard/workbench/index.tsx new file mode 100644 index 000000000..499315e04 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/index.tsx @@ -0,0 +1,91 @@ +import { Col, Row, Space } from "antd"; + +import AreaDownload from "./area-download"; +import BannerCard from "./banner-card"; +import { Applications, Conversion } from "./conversion_applications"; +import CurrentDownload from "./current-download"; +import NewInvoice from "./new-invoice"; +import TopAuthor from "./top-authors"; +import TopInstalled from "./top-installed"; +import TopRelated from "./top-related"; +import TotalCard from "./total-card"; + +function Workbench() { + return ( +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +export default Workbench; diff --git a/apps/react-admin/src/pages/dashboard/workbench/new-invoice.tsx b/apps/react-admin/src/pages/dashboard/workbench/new-invoice.tsx new file mode 100644 index 000000000..62e15f428 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/new-invoice.tsx @@ -0,0 +1,110 @@ +import { Space, Tag, Typography } from "antd"; +import Table, { type ColumnsType } from "antd/es/table"; + +import Card from "@/components/card"; +import { IconButton, Iconify } from "@/components/icon"; +import Scrollbar from "@/components/scrollbar"; + +interface DataType { + key: string; + id: string; + category: string; + price: string; + status: string; +} + +export default function NewInvoice() { + const columns: ColumnsType = [ + { + title: "InvoiceId", + dataIndex: "id", + key: "id", + render: (text) => {text}, + }, + { + title: "Category", + dataIndex: "category", + key: "category", + }, + { + title: "Price", + dataIndex: "price", + key: "price", + render: (text) => {text}, + }, + { + title: "Status", + key: "status", + dataIndex: "status", + render: (_status) => { + const status = _status as string; + let color = "success"; + if (status === "Progress") color = "gold"; + if (status === "Out of Date") color = "red"; + return {status}; + }, + }, + { + title: "Action", + key: "action", + render: () => ( + + + + + + ), + }, + ]; + + const data: DataType[] = [ + { + key: "1", + id: "INV-1990", + category: "Android", + price: "$83.74", + status: "Paid", + }, + { + key: "2", + id: "INV-1991", + category: "Mac", + price: "$97.14", + status: "Out of Date", + }, + { + key: "3", + id: "INV-1992", + category: "Windows", + price: "$68.71", + status: "Progress", + }, + { + key: "4", + id: "INV-1993", + category: "Android", + price: "$85.21", + status: "Paid", + }, + { + key: "5", + id: "INV-1994", + category: "Mac", + price: "$53.17", + status: "Paid", + }, + ]; + + return ( + +
+ New Invoice +
+
+ +
+ + + + ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/top-authors.tsx b/apps/react-admin/src/pages/dashboard/workbench/top-authors.tsx new file mode 100644 index 000000000..118751daa --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/top-authors.tsx @@ -0,0 +1,59 @@ +import Card from "@/components/card"; +import { Iconify } from "@/components/icon"; +import { themeVars } from "@/theme/theme.css"; +import { faker } from "@faker-js/faker"; +import { Typography } from "antd"; + +export default function TopAuthor() { + const getTrophyIconColor = (index: number) => { + switch (index) { + case 1: + return { + color: themeVars.colors.palette.info.default, + bg: `rgba(${themeVars.colors.palette.info.defaultChannel}, .4)`, + }; + case 2: { + return { + color: themeVars.colors.palette.error.default, + bg: `rgba(${themeVars.colors.palette.error.defaultChannel}, .4)`, + }; + } + default: + return { + color: themeVars.colors.palette.success.default, + bg: `rgba(${themeVars.colors.palette.success.defaultChannel}, .4)`, + }; + } + }; + return ( + +
+ Top Authors +
+
+ {new Array(3).fill("").map((_, index) => ( + // biome-ignore lint/suspicious/noArrayIndexKey: +
+ +
+ {faker.person.fullName()} +
+ + {faker.number.float({ min: 3, max: 9, multipleOf: 3 })}k +
+
+ +
+ +
+
+ ))} +
+
+ ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/top-installed.tsx b/apps/react-admin/src/pages/dashboard/workbench/top-installed.tsx new file mode 100644 index 000000000..bfa986ffa --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/top-installed.tsx @@ -0,0 +1,89 @@ +import { Typography } from "antd"; +import type { ReactNode } from "react"; + +import Card from "@/components/card"; +import { Iconify } from "@/components/icon"; + +const dataSource = [ + { + country: "Germany", + iconify: "twemoji:flag-germany", + android: "9.91k", + windows: "1.95k", + ios: "1.95k", + }, + { + country: "China", + iconify: "twemoji:flag-china", + android: "1.95k", + windows: "9.25k", + ios: "7.95k", + }, + { + country: "Australia", + iconify: "twemoji:flag-australia", + android: "3.91k", + windows: "2.95k", + ios: "4.95k", + }, + { + country: "France", + iconify: "twemoji:flag-france", + android: "3.28k", + windows: "2.29k", + ios: "8.95k", + }, + { + country: "USA", + iconify: "twemoji:flag-united-states", + android: "8.81k", + windows: "7.05k", + ios: "4.35k", + }, +]; + +const platformIcon = (platform: string) => { + let iconify: ReactNode; + if (platform === "android") { + iconify = ; + } + if (platform === "windows") { + iconify = ; + } + iconify = ; + + return
{iconify}
; +}; +export default function TopInstalled() { + return ( + +
+ Top Installed Countries +
+
+ {dataSource.map((item) => ( +
+ + {item.country} +
+
+ {platformIcon("android")} + {item.android} +
+ +
+ {platformIcon("windows")} + {item.windows} +
+ +
+ {platformIcon("ios")} + {item.ios} +
+
+
+ ))} +
+
+ ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/top-related.tsx b/apps/react-admin/src/pages/dashboard/workbench/top-related.tsx new file mode 100644 index 000000000..cba9f1528 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/top-related.tsx @@ -0,0 +1,96 @@ +import { Tag, Typography } from "antd"; + +import Card from "@/components/card"; +import { Iconify } from "@/components/icon"; +import Scrollbar from "@/components/scrollbar"; +import { themeVars } from "@/theme/theme.css"; +import { Rate } from "antd"; + +const dataSource = [ + { + logo: , + title: "Chrome", + platform: "Mac", + type: "free", + star: 4, + reviews: "9.91k", + }, + { + logo: , + title: "Drive", + platform: "Mac", + type: "free", + star: 3.5, + reviews: "1.95k", + }, + { + logo: , + title: "Dropbox", + platform: "Windows", + type: "$66.71", + star: 4.5, + reviews: "9.12k", + }, + { + logo: , + title: "Slack", + platform: "Mac", + type: "free", + star: 3.5, + reviews: "6.98k", + }, + { + logo: , + title: "Discord", + platform: "Windows", + type: "$52.17", + star: 0.5, + reviews: "8.49k", + }, +]; +export default function TopRelated() { + return ( + +
+ Top Related Applications +
+
+ + {dataSource.map((item) => ( +
+
+ {item.logo} +
+ +
+ {item.title} +
+ {item.platform === "Mac" ? ( + + ) : ( + + )} + {item.platform} + {item.type} +
+
+ +
+ + {item.reviews}reviews +
+
+ ))} +
+
+
+ ); +} diff --git a/apps/react-admin/src/pages/dashboard/workbench/total-card.tsx b/apps/react-admin/src/pages/dashboard/workbench/total-card.tsx new file mode 100644 index 000000000..40c81f1a4 --- /dev/null +++ b/apps/react-admin/src/pages/dashboard/workbench/total-card.tsx @@ -0,0 +1,79 @@ +import Card from "@/components/card"; +import Chart from "@/components/chart/chart"; +import useChart from "@/components/chart/useChart"; +import { SvgIcon } from "@/components/icon"; + +type Props = { + title: string; + increase: boolean; + percent: string; + count: string; + chartData: number[]; +}; +export default function TotalCard({ title, increase, count, percent, chartData }: Props) { + return ( + +
+
{title}
+
+ {increase ? ( + + ) : ( + + )} +
+ {increase ? "+" : "-"} + {percent} +
+
+

{count}

+
+ + +
+ ); +} + +function ChartLine({ data }: { data: number[] }) { + const series = [ + { + name: "", + data, + }, + ]; + const chartOptions = useChart({ + tooltip: { + x: { + show: false, + }, + }, + xaxis: { + labels: { + show: false, + showDuplicates: false, + }, + tooltip: { + enabled: false, + }, + crosshairs: { + show: false, + }, + }, + yaxis: { + labels: { + show: false, + }, + tooltip: { + enabled: false, + }, + crosshairs: { + show: false, + }, + }, + grid: { + show: false, + }, + }); + + return ; +} diff --git a/apps/react-admin/src/pages/functions/clipboard/index.tsx b/apps/react-admin/src/pages/functions/clipboard/index.tsx new file mode 100644 index 000000000..fa38215d8 --- /dev/null +++ b/apps/react-admin/src/pages/functions/clipboard/index.tsx @@ -0,0 +1,37 @@ +import { faker } from "@faker-js/faker"; +import { Card, Col, Input, Row, Tooltip, Typography } from "antd"; +import { type ChangeEvent, useState } from "react"; + +import { IconButton, Iconify } from "@/components/icon"; +import { useCopyToClipboard } from "@/hooks/event/use-copy-to-clipboard"; + +export default function ClipboardPage() { + const { copyFn } = useCopyToClipboard(); + + const [value, setValue] = useState("https://www.npmjs.com/package/"); + + const textOnClick = faker.lorem.paragraphs({ min: 3, max: 5 }); + + const handleChange = (e: ChangeEvent) => setValue(e.target.value); + const CopyButton = ( + + copyFn(value)}> + + + + ); + return ( + + +
+ ON CHANGE + + + + ON DOUBLE CLICK + copyFn(textOnClick)}>{textOnClick} + + + + ); +} diff --git a/apps/react-admin/src/pages/functions/token-expired/index.tsx b/apps/react-admin/src/pages/functions/token-expired/index.tsx new file mode 100644 index 000000000..0d2c6e1bf --- /dev/null +++ b/apps/react-admin/src/pages/functions/token-expired/index.tsx @@ -0,0 +1,27 @@ +import { useMutation } from "@tanstack/react-query"; +import { Button, Card, Col, Row, Typography } from "antd"; + +import demoService from "@/api/services/demoService"; + +export default function TokenExpired() { + const tokenExpiredMutation = useMutation({ + mutationFn: demoService.mockTokenExpired, + }); + const mockTokenExpired = () => { + tokenExpiredMutation.mutate(); + }; + return ( + + + + Clicking a button to simulate a token expiration scenario. + + + + + + + ); +} diff --git a/apps/react-admin/src/pages/management/audit-logs/audit-log-drawer.tsx b/apps/react-admin/src/pages/management/audit-logs/audit-log-drawer.tsx new file mode 100644 index 000000000..c6f3242e3 --- /dev/null +++ b/apps/react-admin/src/pages/management/audit-logs/audit-log-drawer.tsx @@ -0,0 +1,151 @@ +import type React from "react"; +import { useEffect, useState } from "react"; +import { Descriptions, Drawer, Tabs, Tag } from "antd"; +import { useTranslation } from "react-i18next"; +import type { AuditLogDto, Action } from "#/management/auditing/audit-logs"; +import { Table } from "antd"; +import { useAuditLogs } from "@/hooks/abp/auditing/use-audit-logs"; +import { getApi } from "@/api/management/auditing/audit-logs"; +import { EntityChangeTable } from "@/components/abp/auditing/entity-change-table"; +import { formatToDateTime } from "@/utils/abp"; +import JsonEdit from "@/components/abp/common/json-edit"; + +interface Props { + visible: boolean; + onClose: () => void; + auditLog?: AuditLogDto; +} + +const AuditLogDrawer: React.FC = ({ visible, onClose, auditLog }) => { + const { t: $t } = useTranslation(); + const [activeTab, setActiveTab] = useState("basic"); + const [auditLogModel, setAuditLogModel] = useState({} as AuditLogDto); + const { getHttpMethodColor, getHttpStatusCodeColor } = useAuditLogs(); + + const actionColumns = [ + { + title: $t("AbpAuditLogging.ServiceName"), + dataIndex: "serviceName", + key: "serviceName", + sorter: true, + }, + { + title: $t("AbpAuditLogging.MethodName"), + dataIndex: "methodName", + key: "methodName", + ellipsis: true, + sorter: true, + }, + { + title: $t("AbpAuditLogging.ExecutionTime"), + dataIndex: "executionTime", + key: "executionTime", + ellipsis: true, + sorter: true, + render: (value: string) => (value ? formatToDateTime(value) : value), + }, + { + title: $t("AbpAuditLogging.ExecutionDuration"), + dataIndex: "executionDuration", + key: "executionDuration", + ellipsis: true, + width: 150, + sorter: true, + }, + ]; + + useEffect(() => { + if (visible && auditLog?.id) { + fetchAuditLog(auditLog.id); + } + }, [visible, auditLog]); + + const fetchAuditLog = async (id: string) => { + const dto = await getApi(id); + setAuditLogModel(dto); + }; + + const expandedRowRender = (record: Action) => ( + + + {} + + + {} + + + ); + + return ( + + + + + + {auditLogModel.applicationName} + + + {formatToDateTime(auditLogModel.executionTime)} + + {auditLogModel.userName} + + {auditLogModel.httpMethod} + + + {auditLogModel.url} + + + {auditLogModel.httpStatusCode} + + + {auditLogModel.executionDuration} + + {auditLogModel.clientId} + + {auditLogModel.clientIpAddress} + + {auditLogModel.clientName} + + {auditLogModel.correlationId} + + + {auditLogModel.browserInfo} + + + {auditLogModel.comments} + + + {} + + + {auditLogModel?.extraProperties ? JSON.stringify(auditLogModel.extraProperties, null, 2) : ""} + + + + + {auditLogModel?.actions && auditLogModel.actions.length > 0 && ( + +
+ + )} + + {auditLogModel.entityChanges && auditLogModel.entityChanges?.length > 0 && ( + + + + )} + + + ); +}; + +export default AuditLogDrawer; diff --git a/apps/react-admin/src/pages/management/audit-logs/audit-log-table.tsx b/apps/react-admin/src/pages/management/audit-logs/audit-log-table.tsx new file mode 100644 index 000000000..330660a7b --- /dev/null +++ b/apps/react-admin/src/pages/management/audit-logs/audit-log-table.tsx @@ -0,0 +1,318 @@ +import type React from "react"; +import { useRef, useState } from "react"; +import { Button, Tag, Space, Card, Checkbox, type FormInstance, Tooltip } from "antd"; +import { EditOutlined, DeleteOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import ProTable, { type ProColumns, type ActionType } from "@ant-design/pro-table"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { formatToDateTime } from "@/utils/abp"; +import type { AuditLogDto } from "#/management/auditing/audit-logs"; +import { deleteApi, getPagedListApi } from "@/api/management/auditing/audit-logs"; +import { httpMethodOptions, httpStatusCodeOptions } from "./mapping"; +import AuditLogDrawer from "./audit-log-drawer"; +import { hasAccessByCodes, withAccessChecker } from "@/utils/abp/access-checker"; +import { AuditLogPermissions } from "@/constants/management/auditing/permissions"; +import { useAuditLogs } from "@/hooks/abp/auditing/use-audit-logs"; +import { antdOrderToAbpOrder } from "@/utils/abp/sort-order"; +import { toast } from "sonner"; +import DeleteModal from "@/components/abp/common/delete-modal"; + +const AuditLogTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const formRef = useRef(); + const queryClient = useQueryClient(); + const [drawerVisible, setDrawerVisible] = useState(false); + const [selectedLog, setSelectedLog] = useState(null); + const [deleteModalVisible, setDeleteModalVisible] = useState(false); + const { getHttpMethodColor, getHttpStatusCodeColor } = useAuditLogs(); + + const openDrawer = (log: AuditLogDto) => { + setSelectedLog(log); + setDrawerVisible(true); + }; + + const closeDrawer = () => { + setDrawerVisible(false); + setSelectedLog(null); + }; + + const { mutateAsync: deleteAuditLog } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["auditLogs"] }); + }, + }); + + const handleDelete = (log: AuditLogDto) => { + setSelectedLog(log); + setDeleteModalVisible(true); + }; + + const confirmDelete = async () => { + if (selectedLog) { + await deleteAuditLog(selectedLog.id); + actionRef.current?.reload(); + setDeleteModalVisible(false); + } + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpAuditLogging.RequestUrl"), + dataIndex: "url", + sorter: true, + colSize: 2, + order: 2, + width: 500, + ellipsis: true, + render: (_, record) => ( + <> + onFilter("httpStatusCode", record.httpStatusCode)} // 点击标签触发筛选 + > + {record.httpStatusCode} + + onFilter("httpMethod", record.httpMethod)} + style={{ cursor: "pointer" }} + > + {record.httpMethod} + + + + + + ), + }, + { + title: $t("AbpAuditLogging.UserName"), + dataIndex: "userName", + sorter: true, + width: 120, + }, + { + title: $t("AbpAuditLogging.ExecutionTime"), + dataIndex: "executionTime", + valueType: "dateRange", + sorter: true, + order: 1, + colSize: 2, + width: 150, + render: (_, record) => (record.executionTime ? formatToDateTime(record.executionTime) : record.executionTime), + }, + { + title: $t("AbpAuditLogging.HttpStatusCode"), + dataIndex: "httpStatusCode", + valueType: "select", + fieldProps: { + options: httpStatusCodeOptions, + }, + hideInTable: true, // Only show in search form + }, + { + title: $t("AbpAuditLogging.HttpMethod"), + dataIndex: "httpMethod", + valueType: "select", + fieldProps: { + options: httpMethodOptions, + }, + hideInTable: true, // Only show in search form + }, + { + title: $t("AbpAuditLogging.ExecutionDuration"), + dataIndex: "executionDuration", + sorter: true, + hideInSearch: true, + width: 140, //最长 + }, + { + title: $t("AbpAuditLogging.MinExecutionDuration"), + dataIndex: "minExecutionDuration", + valueType: "digit", + hideInTable: true, + }, + { + title: $t("AbpAuditLogging.MaxExecutionDuration"), + dataIndex: "maxExecutionDuration", + valueType: "digit", + hideInTable: true, + }, + { + title: $t("AbpAuditLogging.ClientId"), + dataIndex: "clientId", + sorter: true, + width: 150, + }, + { + title: $t("AbpAuditLogging.ClientIpAddress"), + dataIndex: "clientIpAddress", + sorter: true, + width: 150, + render: (_, record) => ( + <> + {record.extraProperties?.Location && {record.extraProperties.Location}} + {record.clientIpAddress} + + ), + }, + { + title: $t("AbpAuditLogging.ApplicationName"), + dataIndex: "applicationName", + sorter: true, + ellipsis: true, + width: 160, + }, + { + title: $t("AbpAuditLogging.CorrelationId"), + dataIndex: "correlationId", + sorter: true, + colSize: 2, + width: 160, + }, + { + title: $t("AbpAuditLogging.TenantName"), + dataIndex: "tenantName", + sorter: true, + width: 100, + hideInSearch: true, + }, + { + title: $t("AbpAuditLogging.BrowserInfo"), + dataIndex: "browserInfo", + sorter: true, + ellipsis: true, + width: 300, + hideInSearch: true, + }, + { + title: $t("AbpAuditLogging.HasException"), + dataIndex: "hasException", + valueType: "checkbox", + hideInTable: true, + renderFormItem: (_) => { + return ( + { + const value = e.target.checked; // 获取 Checkbox 的选中状态 + onFilter("hasException", value, false); + }} + /> + ); + }, + }, + hasAccessByCodes([AuditLogPermissions.Default, AuditLogPermissions.Delete]) + ? { + title: $t("AbpUi.Actions"), + key: "actions", + align: "center", + fixed: "right", + hideInSearch: true, + width: 220, + render: (_, record) => ( +
+ {withAccessChecker( + , + [AuditLogPermissions.Default], + )} + {withAccessChecker( + , + [AuditLogPermissions.Delete], + )} +
+ ), + } + : {}, + ]; + + const onFilter = (field: string, value: any, shouldSubmit = true) => { + // 使用 formRef 更新查询条件 + if (formRef.current) { + formRef.current.setFieldsValue({ + [field]: value, + }); + } + if (shouldSubmit) { + // 触发表格刷新 + formRef.current?.submit(); + } + }; + + return ( + <> + + + + headerTitle={$t("AbpAuditLogging.AuditLog")} + actionRef={actionRef} + formRef={formRef} //search form + rowKey="id" + columns={columns} + request={async (params, sorter) => { + const { current, pageSize, executionTime, ...filters } = params; + const [startTime, endTime] = executionTime || []; + const query = await queryClient.fetchQuery({ + //不用换,这样与antd结合比较好用 + queryKey: ["auditLogs", params, sorter], + queryFn: () => + getPagedListApi({ + maxResultCount: pageSize, + skipCount: ((current || 1) - 1) * (pageSize || 0), + sorting: sorter + ? Object.keys(sorter) + .map((key) => `${key} ${antdOrderToAbpOrder(sorter[key])}`) + .join(", ") + : undefined, + startTime: startTime || undefined, + endTime: endTime || undefined, + ...filters, + }), + }); + return { + data: query.items, + total: query.totalCount, + }; + }} + pagination={{ + showSizeChanger: true, + }} + search={{ + labelWidth: "auto", + defaultCollapsed: true, + }} + scroll={{ x: "max-content" }} + /> + + + {selectedLog && } + setDeleteModalVisible(false)} + /> + + ); +}; + +export default AuditLogTable; diff --git a/apps/react-admin/src/pages/management/audit-logs/mapping.ts b/apps/react-admin/src/pages/management/audit-logs/mapping.ts new file mode 100644 index 000000000..ab24aff3c --- /dev/null +++ b/apps/react-admin/src/pages/management/audit-logs/mapping.ts @@ -0,0 +1,57 @@ +const httpMethodOptions = [ + { label: "GET", value: "GET" }, + { label: "PUT", value: "PUT" }, + { label: "POST", value: "POST" }, + { label: "PATCH", value: "PATCH" }, + { label: "DELETE", value: "DELETE" }, + { label: "OPTIONS", value: "OPTIONS" }, + { label: "HEAD", value: "HEAD" }, +]; + +const httpStatusCodeOptions = [ + { label: "100 - Continue", value: 100 }, + { label: "101 - Switching Protocols", value: 101 }, + { label: "200 - OK", value: 200 }, + { label: "201 - Created", value: 201 }, + { label: "202 - Accepted", value: 202 }, + { label: "203 - Non Authoritative Information", value: 203 }, + { label: "204 - No Content", value: 204 }, + { label: "205 - Reset Content", value: 205 }, + { label: "206 - Partial Content", value: 206 }, + { label: "300 - Multiple Choices", value: 300 }, + { label: "301 - Moved Permanently", value: 301 }, + { label: "302 - Found & Redirect", value: 302 }, + { label: "303 - See Other", value: 303 }, + { label: "304 - Not Modified", value: 304 }, + { label: "305 - Use Proxy", value: 305 }, + { label: "306 - Switch Proxy", value: 306 }, + { label: "307 - Temporary Redirect", value: 307 }, + { label: "308 - Permanent Redirect", value: 308 }, + { label: "400 - Bad Request", value: 400 }, + { label: "401 - Unauthorized", value: 401 }, + { label: "402 - Payment Required", value: 402 }, + { label: "403 - Forbidden", value: 403 }, + { label: "404 - Not Found", value: 404 }, + { label: "405 - Method Not Allowed", value: 405 }, + { label: "406 - Not Acceptable", value: 406 }, + { label: "407 - Proxy Authentication Required", value: 407 }, + { label: "408 - Request Timeout", value: 408 }, + { label: "409 - Conflict", value: 409 }, + { label: "410 - Gone", value: 410 }, + { label: "411 - Length Required", value: 411 }, + { label: "412 - Precondition Failed", value: 412 }, + { label: "413 - Request Entity Too Large", value: 413 }, + { label: "414 - Request Uri Too Long", value: 414 }, + { label: "415 - Unsupported Media Type", value: 415 }, + { label: "416 - Requested Range Not Satisfiable", value: 416 }, + { label: "417 - Expectation Failed", value: 417 }, + { label: "426 - Upgrade Required", value: 426 }, + { label: "500 - Internal Server Error", value: 500 }, + { label: "501 - Not mplemented", value: 501 }, + { label: "502 - Bad Gateway", value: 502 }, + { label: "503 - Service Unavailable", value: 503 }, + { label: "504 - Gateway Timeout", value: 504 }, + { label: "505 - Http Version Not Supported", value: 505 }, +]; + +export { httpMethodOptions, httpStatusCodeOptions }; diff --git a/apps/react-admin/src/pages/management/blog/index.tsx b/apps/react-admin/src/pages/management/blog/index.tsx new file mode 100644 index 000000000..dbc726530 --- /dev/null +++ b/apps/react-admin/src/pages/management/blog/index.tsx @@ -0,0 +1,5 @@ +function Blog() { + return
Blog
; +} + +export default Blog; diff --git a/apps/react-admin/src/pages/management/identity/claim-types/claim-type-modal.tsx b/apps/react-admin/src/pages/management/identity/claim-types/claim-type-modal.tsx new file mode 100644 index 000000000..bc0549b00 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/claim-types/claim-type-modal.tsx @@ -0,0 +1,119 @@ +import type React from "react"; +import { useEffect } from "react"; +import { Button, Checkbox, Form, Input, Modal, Select, Space } from "antd"; +import { toast } from "sonner"; +import { useTranslation } from "react-i18next"; +import { ValueType, type IdentityClaimTypeDto } from "#/management/identity"; +import { createApi, updateApi } from "@/api/management/identity/claim-types"; +import { useMutation } from "@tanstack/react-query"; + +interface Props { + visible: boolean; + onClose: () => void; + onSuccess: () => void; + claimType?: IdentityClaimTypeDto; +} + +const ClaimTypeModal: React.FC = ({ visible, onClose, onSuccess, claimType }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + + const { mutateAsync: createClaimType, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: () => { + toast.success($t("AbpUi.CreatedSuccessfully")); + onSuccess(); + onClose(); + }, + onError: () => { + toast.error($t("AbpUi.Error")); + }, + }); + + const { mutateAsync: updateClaimType, isPending: isUpdating } = useMutation({ + mutationFn: ({ id, data }: { id: string; data: IdentityClaimTypeDto }) => updateApi(id, data), + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + onSuccess(); + onClose(); + }, + onError: () => { + toast.error($t("AbpUi.Error")); + }, + }); + + const handleSave = async () => { + try { + const values = await form.validateFields(); + if (claimType?.id) { + await updateClaimType({ id: claimType.id, data: values }); + } else { + await createClaimType(values); + } + } catch (error) { + // Form validation error, no need to handle + } + }; + + useEffect(() => { + if (visible && claimType) { + form.setFieldsValue(claimType); + } else { + form.resetFields(); + } + }, [visible, claimType, form]); + + return ( + +
+ + + + + {$t("AbpIdentity.IdentityClaim:Required")} + + + + + + + + + + + + + + + +
+ ); +}; + +export default OrganizationUnitModal; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-page.tsx b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-page.tsx new file mode 100644 index 000000000..321678241 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-page.tsx @@ -0,0 +1,20 @@ +import { useState } from "react"; +import OrganizationUnitTree from "./organization-unit-tree"; +import OrganizationUnitTable from "./organization-unit-table"; + +const OrganizationUnitPage = () => { + const [selectedKey, setSelectedKey] = useState(); + + return ( +
+
+ +
+
+ +
+
+ ); +}; + +export default OrganizationUnitPage; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-role-table.tsx b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-role-table.tsx new file mode 100644 index 000000000..a90096d56 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-role-table.tsx @@ -0,0 +1,141 @@ +import { useRef, useState } from "react"; +import { Button, Card, Modal } from "antd"; +import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { IdentityRoleDto } from "#/management/identity/role"; +import { ProTable, type ActionType, type ProColumns } from "@ant-design/pro-table"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { OrganizationUnitPermissions } from "@/constants/management/identity/permissions"; +import SelectRoleModal from "./select-role-modal"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { removeOrganizationUnitApi } from "@/api/management/identity/role"; +import { addRoles, getRoleListApi } from "@/api/management/identity/organization-units"; +import { toast } from "sonner"; + +interface Props { + selectedKey?: string; +} + +const OrganizationUnitRoleTable: React.FC = ({ selectedKey }) => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + const [modal, contextHolder] = Modal.useModal(); + const [roleModalVisible, setRoleModalVisible] = useState(false); + + // 获取角色列表 + const { data, isLoading, refetch } = useQuery({ + queryKey: ["organizationUnitRoles", selectedKey], + queryFn: () => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return getRoleListApi(selectedKey, { filter: "" }); + }, + enabled: !!selectedKey, + }); + + // 添加角色 + const { mutateAsync: addRolesToUnit } = useMutation({ + mutationFn: (roles: IdentityRoleDto[]) => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return addRoles(selectedKey, { + roleIds: roles.map((role) => role.id), + }); + }, + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + setRoleModalVisible(false); + refetch(); + + actionRef.current?.reload(); + }, + }); + + // 移除角色 + const { mutateAsync: removeRole } = useMutation({ + mutationFn: (roleId: string) => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return removeOrganizationUnitApi(roleId, selectedKey); + }, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + refetch(); + actionRef.current?.reload(); + }, + }); + + const handleDelete = (role: IdentityRoleDto) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpIdentity.OrganizationUnit:AreYouSureRemoveRole", { 0: role.name }), + onOk: () => removeRole(role.id), + }); + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpIdentity.DisplayName:RoleName"), + dataIndex: "name", + width: 200, + }, + { + title: $t("AbpUi.Actions"), + width: 180, + fixed: "right", + render: (_, record) => ( + + ), + }, + ]; + + return ( + <> + {contextHolder} + + + headerTitle={$t("AbpIdentity.Roles")} + actionRef={actionRef} + columns={columns} + dataSource={data?.items} + loading={isLoading} + rowKey="id" + search={false} + pagination={{ + showSizeChanger: true, + total: data?.totalCount, + }} + toolBarRender={() => [ + selectedKey && hasAccessByCodes([OrganizationUnitPermissions.ManageRoles]) && ( + + ), + ]} + /> + + {selectedKey && ( + setRoleModalVisible(false)} + onConfirm={addRolesToUnit} + organizationUnitId={selectedKey} + /> + )} + + ); +}; + +export default OrganizationUnitRoleTable; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-table.tsx b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-table.tsx new file mode 100644 index 000000000..1ed8e2fec --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-table.tsx @@ -0,0 +1,32 @@ +import { useState } from "react"; +import { Card, Tabs } from "antd"; +import { useTranslation } from "react-i18next"; +import OrganizationUnitRoleTable from "./organization-unit-role-table"; +import OrganizationUnitUserTable from "./organization-unit-user-table"; + +interface Props { + selectedKey?: string; +} + +type TabKeys = "users" | "roles"; + +const OrganizationUnitTable: React.FC = ({ selectedKey }) => { + const { t: $t } = useTranslation(); + const [activeTab, setActiveTab] = useState("users"); + + return ( + + setActiveTab(key as TabKeys)}> + + + + {activeTab === "users" ? ( + + ) : ( + + )} + + ); +}; + +export default OrganizationUnitTable; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-tree.tsx b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-tree.tsx new file mode 100644 index 000000000..73d02d35e --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-tree.tsx @@ -0,0 +1,260 @@ +import { useEffect, useState } from "react"; +import { Card, Button, Tree, Dropdown, Modal } from "antd"; +import { EditOutlined, DeleteOutlined, PlusOutlined, RedoOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { DataNode } from "antd/lib/tree"; +import { useMutation, useQuery } from "@tanstack/react-query"; +import { deleteApi, getChildrenApi, getRootListApi, moveTo } from "@/api/management/identity/organization-units"; +import { Iconify } from "@/components/icon"; +import { toast } from "sonner"; +import OrganizationUnitModal from "./organization-unit-modal"; +import PermissionModal from "@/components/abp/permissions/permission-modal"; + +interface Props { + onSelected?: (id?: string) => void; +} + +const OrganizationUnitTree: React.FC = ({ onSelected }) => { + const { t: $t } = useTranslation(); + // const queryClient = useQueryClient(); // + const [modal, contextHolder] = Modal.useModal(); + + const [organizationUnits, setOrganizationUnits] = useState([]); + const [loadedKeys, setLoadedKeys] = useState([]); + const [selectedKey, setSelectedKey] = useState(); + + // Modal states + const [editModalVisible, setEditModalVisible] = useState(false); + const [permissionModalVisible, setPermissionModalVisible] = useState(false); + const [selectedUnit, setSelectedUnit] = useState<{ id?: string; parentId?: string }>(); + + // 获取根节点列表 + const { refetch: refreshTree } = useQuery({ + queryKey: ["organizationUnits", "root"], + queryFn: async () => { + const { items } = await getRootListApi(); + setOrganizationUnits( + items.map((item) => ({ + isLeaf: false, + key: item.id, + title: item.displayName, + children: [], + })), + ); + setLoadedKeys([]); + return items; + }, + }); + + // 移动节点 + const { mutateAsync: moveNode } = useMutation({ + mutationFn: ({ id, parentId }: { id: string; parentId?: string }) => moveTo(id, parentId), + onSuccess: () => { + refreshTree(); + }, + }); + + // 删除节点 + const { mutateAsync: deleteNode } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + refreshTree(); + }, + }); + + const updateTreeData = (list: DataNode[], key: React.Key, children: DataNode[]): DataNode[] => { + return list.map((node) => { + if (node.key === key) { + return { + ...node, + children, // 更新子节点 + }; + } + if (node.children) { + return { + ...node, + children: updateTreeData(node.children, key, children), // 递归更新子节点 + }; + } + return node; + }); + }; + const findNodeById = (nodes: DataNode[], id?: string): DataNode | undefined => { + if (!id) return undefined; + + for (const node of nodes) { + if (node.key === id) return node; + if (node.children) { + const found = findNodeById(node.children, id); + if (found) return found; + } + } + return undefined; + }; + useEffect(() => { + onSelected?.(selectedKey); + }, [selectedKey]); + + const handleMenuClick = async (key: string, id: string) => { + switch (key) { + case "create": + setSelectedUnit({ parentId: id }); + setEditModalVisible(true); + break; + case "update": + setSelectedUnit({ id }); + setEditModalVisible(true); + break; + case "permissions": + // const unit = await getApi(id); + setSelectedUnit({ id }); + setPermissionModalVisible(true); + break; + case "delete": + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpUi.ItemWillBeDeletedMessage"), + onOk: () => deleteNode(id), + }); + break; + case "refresh": + refreshTree(); + break; + } + }; + + const menuItems = [ + { + key: "update", + icon: , + label: $t("AbpUi.Edit"), + }, + { + key: "create", + icon: , + label: $t("AbpIdentity.OrganizationUnit:AddChildren"), + }, + { + key: "delete", + icon: , + label: $t("AbpUi.Delete"), + }, + { + key: "permissions", + icon: , + label: $t("AbpPermissionManagement.Permissions"), + }, + { + key: "refresh", + icon: , + label: $t("AbpIdentity.OrganizationUnit:RefreshRoot"), + }, + ]; + + return ( + <> + {contextHolder} + } + onClick={() => { + setSelectedUnit({}); + setEditModalVisible(true); + }} + > + {$t("AbpIdentity.OrganizationUnit:AddRoot")} + + } + > + { + // 加载子节点 + const nodeKey = String(node.key); + const { items } = await getChildrenApi({ id: nodeKey }); + node.isLeaf = items.length === 0; + node.children = items.map((item): DataNode => { + return { + isLeaf: false, + key: item.id, + title: item.displayName, + children: [], + }; + }); + setOrganizationUnits((prevUnits) => updateTreeData(prevUnits, nodeKey, node.children || [])); + + setLoadedKeys((prev) => [...prev, String(node.key)]); + }} + loadedKeys={loadedKeys} + treeData={organizationUnits} + blockNode + draggable + onDrop={(info) => { + if (!info.dragNode.key) return; + const dragKey = String(info.dragNode.key); + const dropKey = + info.dropPosition === -1 + ? undefined // 作为根节点 + : String(info.node.key); // 作为子节点 + moveNode({ id: dragKey, parentId: dropKey }); + }} + onRightClick={(_) => {}} + onSelect={(selectedKeys) => { + if (selectedKeys.length === 0) { + setSelectedKey(undefined); + return; + } + setSelectedKey(String(selectedKeys[0])); + }} + titleRender={(nodeData) => ( + handleMenuClick(key, String(nodeData.key)), + }} + > +
+ {String(nodeData.title)} + + + +
+
+ )} + /> +
+ { + setEditModalVisible(false); + setSelectedUnit(undefined); + }} + onChange={() => { + refreshTree(); + }} + /> + + { + setPermissionModalVisible(false); + setSelectedUnit(undefined); + }} + onChange={() => { + refreshTree(); + }} + /> + + ); +}; + +export default OrganizationUnitTree; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-user-table.tsx b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-user-table.tsx new file mode 100644 index 000000000..c927b3a4a --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/organization-unit-user-table.tsx @@ -0,0 +1,142 @@ +import { useRef, useState } from "react"; +import { Button, Card, Modal } from "antd"; +import { DeleteOutlined, PlusOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { IdentityUserDto } from "#/management/identity"; +import { ProTable, type ActionType, type ProColumns } from "@ant-design/pro-table"; +import { useMutation, useQuery } from "@tanstack/react-query"; +import { addMembers, getUserListApi } from "@/api/management/identity/organization-units"; +import { removeOrganizationUnitApi } from "@/api/management/identity/users"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { OrganizationUnitPermissions } from "@/constants/management/identity/permissions"; +import SelectMemberModal from "./select-member-modal"; +import { toast } from "sonner"; + +interface Props { + selectedKey?: string; +} + +const OrganizationUnitUserTable: React.FC = ({ selectedKey }) => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const [modal, contextHolder] = Modal.useModal(); + const [memberModalVisible, setMemberModalVisible] = useState(false); + + // 获取用户列表 + const { data, isLoading, refetch } = useQuery({ + queryKey: ["organizationUnitUsers", selectedKey], + queryFn: () => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return getUserListApi(selectedKey, {}); + }, + enabled: !!selectedKey, + }); + + // 添加成员 + const { mutateAsync: addUsers } = useMutation({ + mutationFn: (users: IdentityUserDto[]) => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return addMembers(selectedKey, { userIds: users.map((u) => u.id) }); + }, + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + refetch(); + actionRef.current?.reload(); + setMemberModalVisible(false); + }, + }); + + // 移除成员 + const { mutateAsync: removeUser } = useMutation({ + mutationFn: (userId: string) => { + if (!selectedKey) { + return Promise.reject(new Error("selectedKey is undefined")); + } + return removeOrganizationUnitApi(userId, selectedKey); + }, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + refetch(); + actionRef.current?.reload(); + }, + }); + + const columns: ProColumns[] = [ + { + title: $t("AbpIdentity.DisplayName:UserName"), + dataIndex: "userName", + width: 100, + }, + { + title: $t("AbpIdentity.DisplayName:Email"), + dataIndex: "email", + width: 120, + }, + { + title: $t("AbpUi.Actions"), + width: 120, + fixed: "right", + render: (_, record) => ( + + ), + }, + ]; + + const getAddMemberEnabled = selectedKey && hasAccessByCodes([OrganizationUnitPermissions.ManageUsers]); + + return ( + <> + {contextHolder} + + + headerTitle={$t("AbpIdentity.Users")} + actionRef={actionRef} + rowKey="id" + columns={columns} + dataSource={data?.items} + loading={isLoading} + search={false} + pagination={{ + showSizeChanger: true, + total: data?.totalCount, + }} + toolBarRender={() => [ + getAddMemberEnabled && ( + + ), + ]} + /> + + {selectedKey && ( + setMemberModalVisible(false)} + onConfirm={addUsers} + organizationUnitId={selectedKey} + /> + )} + + ); +}; + +export default OrganizationUnitUserTable; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/select-member-modal.tsx b/apps/react-admin/src/pages/management/identity/organization-units/select-member-modal.tsx new file mode 100644 index 000000000..997789c18 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/select-member-modal.tsx @@ -0,0 +1,83 @@ +import { useState } from "react"; +import { Modal } from "antd"; +import { useTranslation } from "react-i18next"; +import type { IdentityUserDto } from "#/management/identity"; +import { ProTable, type ProColumns } from "@ant-design/pro-table"; +import { useQuery } from "@tanstack/react-query"; +import { getUnaddedUserListApi } from "@/api/management/identity/organization-units"; + +interface Props { + visible: boolean; + onClose: () => void; + onConfirm: (users: IdentityUserDto[]) => void; + organizationUnitId: string; +} + +const SelectMemberModal: React.FC = ({ visible, onClose, onConfirm, organizationUnitId }) => { + const { t: $t } = useTranslation(); + const [selectedUsers, setSelectedUsers] = useState([]); + const [searchParams, setSearchParams] = useState<{ filter?: string }>({}); + + // 获取可添加的用户列表 + const { data, isLoading } = useQuery({ + queryKey: ["organizationUnitUsers", "unAdded", organizationUnitId, searchParams], + queryFn: () => + getUnaddedUserListApi({ + id: organizationUnitId, + ...searchParams, + }), + enabled: visible, + }); + + const columns: ProColumns[] = [ + { + title: $t("AbpIdentity.DisplayName:UserName"), + dataIndex: "userName", + width: 100, + }, + { + title: $t("AbpIdentity.DisplayName:Email"), + dataIndex: "email", + width: 120, + }, + ]; + + return ( + onConfirm(selectedUsers)} + width="800px" + > + + rowKey="id" + columns={columns} + dataSource={data?.items} + loading={isLoading} + rowSelection={{ + selections: true, + onChange: (_, rows) => setSelectedUsers(rows), + }} + search={{ + labelWidth: "auto", + span: 12, + }} + request={async (params) => { + setSearchParams({ filter: params.filter }); + return { + data: data?.items, + success: true, + total: data?.totalCount, + }; + }} + pagination={{ + showSizeChanger: true, + total: data?.totalCount, + }} + /> + + ); +}; + +export default SelectMemberModal; diff --git a/apps/react-admin/src/pages/management/identity/organization-units/select-role-modal.tsx b/apps/react-admin/src/pages/management/identity/organization-units/select-role-modal.tsx new file mode 100644 index 000000000..8e971e6da --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/organization-units/select-role-modal.tsx @@ -0,0 +1,65 @@ +import { useState } from "react"; +import { Modal, Table } from "antd"; +import { useTranslation } from "react-i18next"; +import type { IdentityRoleDto } from "#/management/identity/role"; +import { useQuery } from "@tanstack/react-query"; +import { getUnaddedRoleListApi } from "@/api/management/identity/organization-units"; + +interface Props { + visible: boolean; + onClose: () => void; + onConfirm: (roles: IdentityRoleDto[]) => void; + organizationUnitId: string; +} + +const SelectRoleModal: React.FC = ({ visible, onClose, onConfirm, organizationUnitId }) => { + const { t: $t } = useTranslation(); + const [selectedRoles, setSelectedRoles] = useState([]); + const [searchParams, setSearchParams] = useState<{ filter?: string }>({}); + + // 获取可添加的角色列表 + const { data, isLoading } = useQuery({ + queryKey: ["organizationUnitRoles", "unAdded", organizationUnitId, searchParams], + queryFn: () => + getUnaddedRoleListApi({ + id: organizationUnitId, + ...searchParams, + }), + enabled: visible, + }); + + const columns = [ + { + title: $t("AbpIdentity.DisplayName:RoleName"), + dataIndex: "name", + width: 200, + }, + ]; + + return ( + onConfirm(selectedRoles)} + width="800px" + > +
setSelectedRoles(rows), + }} + pagination={{ + total: data?.totalCount, + showSizeChanger: true, + }} + /> + + ); +}; + +export default SelectRoleModal; diff --git a/apps/react-admin/src/pages/management/identity/roles/role-claim-modal.tsx b/apps/react-admin/src/pages/management/identity/roles/role-claim-modal.tsx new file mode 100644 index 000000000..dd10eac5f --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/roles/role-claim-modal.tsx @@ -0,0 +1,72 @@ +import type React from "react"; +import { Modal } from "antd"; +import { useTranslation } from "react-i18next"; +import type { IdentityRoleDto } from "#/management/identity"; +import type { + IdentityClaimCreateDto, + IdentityClaimDeleteDto, + IdentityClaimUpdateDto, +} from "#/management/identity/claims"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { createClaimApi, deleteClaimApi, getClaimsApi, updateClaimApi } from "@/api/management/identity/role"; +import { IdentityRolePermissions } from "@/constants/management/identity/permissions"; +import ClaimTable from "@/components/abp/claims/claim-table"; + +interface Props { + visible: boolean; + onClose: () => void; + role: IdentityRoleDto; +} + +//TODO on change 结合测试配置的role的claims和其它calims获取的地方 +const RoleClaimModal: React.FC = ({ visible, onClose, role }) => { + const { t: $t } = useTranslation(); + const queryClient = useQueryClient(); + const queryKey = ["roleClaims", role.id]; + + // Mutations for CRUD operations + const { mutateAsync: createClaim } = useMutation({ + mutationFn: (input: IdentityClaimCreateDto) => createClaimApi(role.id, input), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey }); + }, + }); + + const { mutateAsync: updateClaim } = useMutation({ + mutationFn: (input: IdentityClaimUpdateDto) => updateClaimApi(role.id, input), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey }); + }, + }); + + const { mutateAsync: deleteClaim } = useMutation({ + mutationFn: (input: IdentityClaimDeleteDto) => deleteClaimApi(role.id, input), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey }); + }, + }); + + return ( + + getClaimsApi(role.id)} + queryKey={queryKey} + /> + + ); +}; + +export default RoleClaimModal; diff --git a/apps/react-admin/src/pages/management/identity/roles/role-modal.tsx b/apps/react-admin/src/pages/management/identity/roles/role-modal.tsx new file mode 100644 index 000000000..d1b3cbdd7 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/roles/role-modal.tsx @@ -0,0 +1,103 @@ +import type React from "react"; +import { useEffect } from "react"; +import { Modal, Form, Input, Checkbox } from "antd"; +import { useTranslation } from "react-i18next"; +import type { IdentityRoleDto } from "#/management/identity"; +import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; +import { createApi, getApi, updateApi } from "@/api/management/identity/role"; +import { toast } from "sonner"; + +interface Props { + visible: boolean; + onClose: () => void; + onChange: () => void; + role?: IdentityRoleDto; +} + +const defaultModel: Partial = { + isDefault: false, + isPublic: true, + isStatic: false, +}; + +const RoleModal: React.FC = ({ visible, onClose, onChange, role }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + const queryClient = useQueryClient(); + // Query for getting role details + const { data: roleData, isLoading: isLoadingRole } = useQuery({ + queryKey: ["role", role?.id], + queryFn: () => { + if (!role?.id) { + return Promise.reject(new Error("role id is undefined")); + } + return getApi(role.id); + }, + enabled: visible && !!role?.id, + }); + + // Mutations for create/update + const { mutateAsync: createRole, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: (_) => { + onChange(); + toast.success($t("AbpUi.CreatedSuccessfully")); + onClose(); + }, + }); + + const { mutateAsync: updateRole, isPending: isUpdating } = useMutation({ + mutationFn: ({ id, data }: { id: string; data: IdentityRoleDto }) => updateApi(id, data), + onSuccess: (_) => { + onChange(); + queryClient.invalidateQueries({ queryKey: ["role", role?.id] }); + toast.success($t("AbpUi.SavedSuccessfully")); + onClose(); + }, + }); + + useEffect(() => { + if (visible) { + form.setFieldsValue(role?.id ? (roleData ?? role) : defaultModel); + } else { + form.resetFields(); + } + }, [visible, roleData, role]); + + const handleOk = async () => { + try { + const values = await form.validateFields(); + if (role?.id) { + await updateRole({ id: role.id, data: values }); + } else { + await createRole(values); + } + } catch (error) { + // Form validation error, no need to handle + } + }; + + return ( + +
+ + {$t("AbpIdentity.DisplayName:IsDefault")} + + + {$t("AbpIdentity.DisplayName:IsPublic")} + + + + + +
+ ); +}; + +export default RoleModal; diff --git a/apps/react-admin/src/pages/management/identity/roles/role-table.tsx b/apps/react-admin/src/pages/management/identity/roles/role-table.tsx new file mode 100644 index 000000000..0d0dce368 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/roles/role-table.tsx @@ -0,0 +1,252 @@ +import { useRef, useState } from "react"; +import { Button, Dropdown, Modal, Tag, Space, Card } from "antd"; +import { EditOutlined, DeleteOutlined, EllipsisOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import type { IdentityRoleDto } from "#/management/identity/role"; +import { type ActionType, ProTable, type ProColumns } from "@ant-design/pro-table"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { deleteApi, getPagedListApi } from "@/api/management/identity/role"; +import RoleModal from "./role-modal"; +import RoleClaimModal from "./role-claim-modal"; +import PermissionModal from "@/components/abp/permissions/permission-modal"; +import { toast } from "sonner"; +import { Iconify } from "@/components/icon"; +import useAbpStore from "@/store/abpCoreStore"; +import { IdentityRolePermissions } from "@/constants/management/identity/permissions"; +import { AuditLogPermissions } from "@/constants/management/auditing/permissions"; +import { EntityChangeDrawer } from "@/components/abp/auditing/entity-change-drawer"; + +const RoleTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + const abpStore = useAbpStore(); + const [modal, contextHolder] = Modal.useModal(); + // Modal states + const [roleModalVisible, setRoleModalVisible] = useState(false); + const [claimModalVisible, setClaimModalVisible] = useState(false); + const [permissionModalVisible, setPermissionModalVisible] = useState(false); + const [entityChangeDrawerVisible, setEntityChangeDrawerVisible] = useState(false); + const [selectedRole, setSelectedRole] = useState(); + const [searchParams, setSearchParams] = useState<{ filter?: string }>({}); + + // 获取角色列表 + const { data, isLoading } = useQuery({ + queryKey: ["roles", searchParams], + queryFn: () => getPagedListApi(searchParams), + }); + + // 删除角色 + const { mutateAsync: deleteRole } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["roles"] }); + }, + }); + + const handleDelete = (role: IdentityRoleDto) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpIdentity.RoleDeletionConfirmationMessage", { 0: role.name }), + onOk: () => deleteRole(role.id), + }); + }; + + const handleMenuClick = (key: string, role: IdentityRoleDto) => { + setSelectedRole(role); + switch (key) { + case "permissions": + setPermissionModalVisible(true); + break; + case "claims": + setClaimModalVisible(true); + break; + case "entity-changes": + setEntityChangeDrawerVisible(true); + break; + } + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + valueType: "text", + hideInTable: true, + }, + { + title: $t("AbpIdentity.DisplayName:RoleName"), + dataIndex: "name", + render: (_, record) => ( + + {record.isStatic && {$t("AbpIdentity.Static")}} + {record.isDefault && {$t("AbpIdentity.DisplayName:IsDefault")}} + {record.isPublic && {$t("AbpIdentity.Public")}} + {record.name} + + ), + hideInSearch: true, + }, + { + title: $t("AbpUi.Actions"), + width: 220, + fixed: "right", + hideInSearch: true, + render: (_, record) => ( +
+
+ {hasAccessByCodes([IdentityRolePermissions.Update]) && ( + + )} +
+
+ {hasAccessByCodes([IdentityRolePermissions.Delete]) && !record.isStatic && ( + + )} +
+
+ , + label: $t("AbpPermissionManagement.Permissions"), + } + : null, + hasAccessByCodes([IdentityRolePermissions.ManageClaims]) + ? { + key: "claims", + icon: , + label: $t("AbpIdentity.ManageClaim"), + } + : null, + hasAccessByCodes([AuditLogPermissions.Default]) + ? { + key: "entity-changes", + icon: , + label: $t("AbpAuditLogging.EntitiesChanged"), + } + : null, + ].filter(Boolean), + onClick: ({ key }) => handleMenuClick(key as string, record), + }} + > +
+
+ ), + }, + ]; + + return ( + <> + {contextHolder} + + + headerTitle={$t("AbpIdentity.Roles")} + actionRef={actionRef} + rowKey="id" + columns={columns} + dataSource={data?.items} + loading={isLoading} + search={{ + labelWidth: "auto", + span: 12, + defaultCollapsed: true, + }} + pagination={{ + showSizeChanger: true, + total: data?.totalCount, + }} + request={async (params) => { + const { filter } = params; + setSearchParams({ filter }); + // 强制重新请求数据 + await queryClient.invalidateQueries({ queryKey: ["roles"] }); + return { data: data?.items, success: true, total: data?.totalCount }; + }} + toolBarRender={() => [ + hasAccessByCodes([IdentityRolePermissions.Create]) && ( + + ), + ]} + /> + + { + setRoleModalVisible(false); + setSelectedRole(undefined); + }} + onChange={() => { + // actionRef.current?.reload(); + queryClient.invalidateQueries({ queryKey: ["roles"] }); + }} + /> + {selectedRole && ( + { + setClaimModalVisible(false); + setSelectedRole(undefined); + }} + // onChange={() => { + // actionRef.current?.reload(); + // }} + /> + )} + { + setPermissionModalVisible(false); + setSelectedRole(undefined); + }} + onChange={() => { + // actionRef.current?.reload(); + queryClient.invalidateQueries({ queryKey: ["roles"] }); + }} + /> + { + setEntityChangeDrawerVisible(false); + setSelectedRole(undefined); + }} + /> + + ); +}; + +export default RoleTable; diff --git a/apps/react-admin/src/pages/management/identity/security-logs/security-log-drawer.tsx b/apps/react-admin/src/pages/management/identity/security-logs/security-log-drawer.tsx new file mode 100644 index 000000000..d0d091972 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/security-logs/security-log-drawer.tsx @@ -0,0 +1,66 @@ +import type React from "react"; +import { Drawer, Descriptions } from "antd"; +import { formatToDateTime } from "@/utils/abp"; +import { useTranslation } from "react-i18next"; +import { useQuery } from "@tanstack/react-query"; +import { getApi } from "@/api/management/identity/security-logs"; + +interface Props { + visible: boolean; + onClose: () => void; + securityLogId?: string; +} + +const SecurityLogDrawer: React.FC = ({ visible, onClose, securityLogId }) => { + const { t: $t } = useTranslation(); + + const { data: formModel, isLoading } = useQuery({ + queryKey: ["securityLog", securityLogId], + queryFn: () => { + if (!securityLogId) { + return Promise.reject(new Error("securityLogId is undefined")); + } + return getApi(securityLogId); + }, + enabled: visible && !!securityLogId, + }); + + return ( + + + + {formModel?.applicationName} + + + {formModel?.creationTime ? formatToDateTime(formModel.creationTime) : ""} + + {formModel?.identity} + {formModel?.tenantName} + {formModel?.action} + {formModel?.correlationId} + {formModel?.userId} + {formModel?.userName} + {formModel?.clientId} + + {formModel?.clientIpAddress} + + + {formModel?.browserInfo} + + + + {formModel?.extraProperties ? JSON.stringify(formModel.extraProperties, null, 2) : ""} + + + + ); +}; + +export default SecurityLogDrawer; diff --git a/apps/react-admin/src/pages/management/identity/security-logs/security-logs-table.tsx b/apps/react-admin/src/pages/management/identity/security-logs/security-logs-table.tsx new file mode 100644 index 000000000..6f76cb866 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/security-logs/security-logs-table.tsx @@ -0,0 +1,220 @@ +import { useRef, useState } from "react"; +import { Space, Button, Tag, Card } from "antd"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import ProTable, { type ProColumns, type ActionType } from "@ant-design/pro-table"; +import { EditOutlined, DeleteOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { formatToDateTime } from "@/utils/abp"; +import type { SecurityLogDto } from "#/management/identity"; +import { antdOrderToAbpOrder } from "@/utils/abp/sort-order"; +import { SecurityLogPermissions } from "@/constants/management/identity/permissions"; +import { hasAccessByCodes, withAccessChecker } from "@/utils/abp/access-checker"; +import { toast } from "sonner"; +import SecurityLogDrawer from "./security-log-drawer"; +import { deleteApi, getPagedListApi } from "@/api/management/identity/security-logs"; +import DeleteModal from "@/components/abp/common/delete-modal"; + +const SecurityLogs = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + //drawer + const [drawerVisible, setDrawerVisible] = useState(false); + const [selectedLogId, setSelectedLogId] = useState(); + //Modal + const [deleteModalVisible, setDeleteModalVisible] = useState(false); + + const openDrawer = (id: string) => { + setSelectedLogId(id); + setDrawerVisible(true); + }; + + const closeDrawer = () => { + setDrawerVisible(false); + setSelectedLogId(undefined); + }; + + const { mutateAsync: deleteSecurityLog } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["securityLogs"] }); + }, + }); + + const handleDelete = (log: SecurityLogDto) => { + setSelectedLogId(log.id); + setDeleteModalVisible(true); + }; + + const confirmDelete = async () => { + if (selectedLogId) { + await deleteSecurityLog(selectedLogId); + actionRef.current?.reload(); + setDeleteModalVisible(false); + } + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpAuditLogging.CreationTime"), + dataIndex: "creationTime", + valueType: "dateRange", + sorter: true, + width: 180, + render: (_, record) => { + // formatter + return record.creationTime ? formatToDateTime(record.creationTime) : record.creationTime; + }, + }, + { + title: $t("AbpAuditLogging.Identity"), + dataIndex: "identity", + sorter: true, + width: 180, + }, + { + title: $t("AbpAuditLogging.UserName"), + dataIndex: "userName", + sorter: true, + width: 150, + }, + { + title: $t("AbpAuditLogging.ClientId"), + dataIndex: "clientId", + sorter: true, + width: 200, + }, + { + title: $t("AbpAuditLogging.ClientIpAddress"), + dataIndex: "clientIpAddress", + sorter: true, + width: 200, + hideInSearch: true, + render: (_, record) => ( + <> + {/* 展示地址 */} + {record.extraProperties?.Location && {record.extraProperties.Location}} + {record.clientIpAddress} + + ), + }, + { + title: $t("AbpAuditLogging.ApplicationName"), + dataIndex: "applicationName", + sorter: true, + width: 200, + ellipsis: true, + }, + { + title: $t("AbpAuditLogging.TenantName"), + dataIndex: "tenantName", + hideInSearch: true, + sorter: true, + width: 180, + }, + { + title: $t("AbpAuditLogging.Actions"), + dataIndex: "action", + sorter: true, + width: 180, + }, + { + title: $t("AbpAuditLogging.CorrelationId"), + dataIndex: "correlationId", + sorter: true, + width: 200, + }, + { + title: $t("AbpAuditLogging.BrowserInfo"), + dataIndex: "browserInfo", + width: 200, + sorter: true, + hideInSearch: true, + ellipsis: true, + }, + hasAccessByCodes([SecurityLogPermissions.Default, SecurityLogPermissions.Delete]) + ? { + title: $t("AbpUi.Actions"), + key: "actions", + align: "center", + fixed: "right", + hideInSearch: true, + width: 150, + render: (_, record) => ( +
+ {withAccessChecker( + , + [SecurityLogPermissions.Default], + )} + {withAccessChecker( + , + [SecurityLogPermissions.Delete], + )} +
+ ), + } + : {}, + ]; + + return ( + <> + + + + headerTitle={$t("AbpAuditLogging.SecurityLog")} + actionRef={actionRef} + rowKey="id" + search={{ + labelWidth: "auto", + defaultCollapsed: true, + }} + columns={columns} + request={async (params, sorter) => { + const { creationTime, current, pageSize, ...rest } = params; + const [startTime, endTime] = creationTime || []; + + const query = await queryClient.fetchQuery({ + queryKey: ["securityLogs", params, sorter], + queryFn: () => + getPagedListApi({ + maxResultCount: pageSize, + skipCount: ((current || 1) - 1) * (pageSize || 0), + sorting: sorter + ? Object.keys(sorter) + .map((key) => `${key} ${antdOrderToAbpOrder(sorter[key])}`) + .join(", ") + : undefined, + startTime: startTime || undefined, // 转换为 startTime 参数 + endTime: endTime || undefined, // 转换为 endTime 参数 + ...rest, + }), + }); + + return { + data: query.items, + total: query.totalCount, + }; + }} + pagination={{ + showSizeChanger: true, + }} + scroll={{ x: "max-content" }} + /> + + + setDeleteModalVisible(false)} + /> + + + ); +}; + +export default SecurityLogs; diff --git a/apps/react-admin/src/pages/management/identity/sessions/session-table.tsx b/apps/react-admin/src/pages/management/identity/sessions/session-table.tsx new file mode 100644 index 000000000..d18cd166f --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/sessions/session-table.tsx @@ -0,0 +1,189 @@ +import { useRef, useState, useTransition } from "react"; +import { Button, Card, Modal, Select, Space, Tag } from "antd"; +import { DeleteOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { ProTable, type ActionType, type ProColumns } from "@ant-design/pro-table"; +import type { IdentitySessionDto } from "#/management/identity/sessions"; +import type { IdentityUserDto } from "#/management/identity/user"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { IdentitySessionPermissions } from "@/constants/management/identity/permissions"; +import { getPagedListApi as getUserListApi } from "@/api/management/identity/users"; +import { getSessionsApi, revokeSessionApi } from "@/api/management/identity/user-sessions"; +import { useApplication } from "@/store/abpCoreStore"; +import { toast } from "sonner"; + +const SessionTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + const [modal, contextHolder] = Modal.useModal(); + const application = useApplication(); + + const [searchText, setSearchText] = useState(""); + const [isPending, startTransition] = useTransition(); + + // Fetch users for select + const { data: users = [] } = useQuery({ + queryKey: ["users", searchText], + queryFn: () => + getUserListApi({ + maxResultCount: 25, + filter: searchText, + }).then((res) => res.items), + enabled: !isPending, + }); + + // Revoke session mutation + const { mutateAsync: revokeSession } = useMutation({ + mutationFn: revokeSessionApi, + onSuccess: () => { + toast.success($t("AbpIdentity.SuccessfullyRevoked")); + actionRef.current?.reload(); + }, + }); + + const handleDelete = (session: IdentitySessionDto) => { + if (session.sessionId === application?.currentUser.sessionId) return; + + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpIdentity.SessionWillBeRevokedMessage"), + onOk: () => revokeSession(session.sessionId), + }); + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + hideInTable: true, + }, + { + title: $t("AbpIdentity.DisplayName:UserName"), + dataIndex: "userId", + hideInTable: true, + renderFormItem: () => ( + + + + + ); +}; + +export default UserLockModal; diff --git a/apps/react-admin/src/pages/management/identity/users/user-modal.tsx b/apps/react-admin/src/pages/management/identity/users/user-modal.tsx new file mode 100644 index 000000000..88f3e25fc --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/users/user-modal.tsx @@ -0,0 +1,315 @@ +import { useEffect, useState } from "react"; +import { Modal, Form, Input, Checkbox, Tabs, Transfer, Tree } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import type { IdentityUserDto } from "#/management/identity/user"; +import type { DataNode } from "antd/es/tree"; +import type { TransferItem } from "antd/es/transfer"; +import { toast } from "sonner"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { + createApi, + getApi, + updateApi, + getAssignableRolesApi, + getRolesApi, + getOrganizationUnitsApi, +} from "@/api/management/identity/users"; +import { getRootListApi, getChildrenApi } from "@/api/management/identity/organization-units"; +import { useAbpSettings } from "@/hooks/abp/use-abp-settings"; + +interface UserModalProps { + visible: boolean; + userId?: string; + onClose: () => void; + onChange: () => void; +} + +const defaultModel: Partial = { + isActive: true, +}; + +const UserModal: React.FC = ({ visible, userId, onClose, onChange }) => { + const { t: $t } = useTranslation(); + const queryClient = useQueryClient(); + const [form] = Form.useForm(); + const { isTrue } = useAbpSettings(); + + const [activeTab, setActiveTab] = useState("info"); + const [assignedRoles, setAssignedRoles] = useState([]); + const [organizationUnits, setOrganizationUnits] = useState([]); + const [loadedOuKeys, setLoadedOuKeys] = useState([]); + const [checkedOuKeys, setCheckedOuKeys] = useState([]); + const [targetKeys, setTargetKeys] = useState([]); + + // Check policies + const canManageRoles = hasAccessByCodes(["AbpIdentity.Users.Update.ManageRoles"]); + const canManageOu = hasAccessByCodes(["AbpIdentity.Users.ManageOrganizationUnits"]); + + // API mutations + const { mutateAsync: createUser, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: () => { + toast.success($t("AbpUi.CreatedSuccessfully")); + onChange(); + onClose(); + queryClient.invalidateQueries({ queryKey: ["users"] }); + }, + }); + + const { mutateAsync: updateUser, isPending: isUpdating } = useMutation({ + mutationFn: (data: IdentityUserDto) => updateApi(data.id, data), + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + onChange(); + onClose(); + queryClient.invalidateQueries({ queryKey: ["users"] }); + queryClient.invalidateQueries({ queryKey: ["userRoles"] }); + queryClient.invalidateQueries({ queryKey: ["assignableRoles"] }); + queryClient.invalidateQueries({ queryKey: ["permissions"] }); //角色更新会带来permission的变化 + }, + }); + + // Fetch user data + const { data: userData } = useQuery({ + queryKey: ["users", userId], + queryFn: () => { + if (!userId) { + return Promise.reject(new Error("userId is undefined")); + } + return getApi(userId); + }, + enabled: visible && !!userId, + }); + + // Fetch roles + const { data: userRoles } = useQuery({ + queryKey: ["userRoles", userId], + queryFn: () => { + if (!userId) { + return Promise.reject(new Error("userId is undefined")); + } + return getRolesApi(userId); + }, + enabled: visible && !!userId && canManageRoles, + }); + + // Fetch assignable roles + const { data: assignableRoles } = useQuery({ + queryKey: ["assignableRoles"], + queryFn: getAssignableRolesApi, + enabled: visible && canManageRoles, + }); + + // Fetch organization units + const { data: userOus } = useQuery({ + queryKey: ["userOus", userId], + queryFn: () => { + if (!userId) { + return Promise.reject(new Error("userId is undefined")); + } + return getOrganizationUnitsApi(userId); + }, + enabled: visible && !!userId && canManageOu, + }); + + const { data: ousRootList } = useQuery({ + queryKey: ["ousRootList"], + queryFn: () => { + if (!userId) { + return Promise.reject(new Error("userId is undefined")); + } + return getRootListApi(); + }, + enabled: visible && !!userId && canManageOu, + }); + + useEffect(() => { + if (visible) { + // Reset states + setActiveTab("info"); + setAssignedRoles([]); + setOrganizationUnits([]); + setLoadedOuKeys([]); + form.resetFields(); + + if (userData) { + // userData.roleNames = userRoles?.items.map((item) => item.name) || []; + form.setFieldsValue(userData); + } else { + form.setFieldsValue(defaultModel); + } + + // Initialize roles + if (assignableRoles) { + setAssignedRoles( + assignableRoles.items.map((item) => ({ + key: item.name, + title: item.name, + ...item, + })), + ); + } + if (userRoles) { + // 初始化 targetKeys + const userRoleNames = userRoles.items.map((item) => item.name); + setTargetKeys(userRoleNames); + form.setFieldValue("roleNames", userRoleNames); + } + + // Initialize organization units + if (userOus && ousRootList) { + //TODO 根据用户的组织关系信息,计算checkedKeys,让用户的父组织们都halfChecked + setOrganizationUnits( + ousRootList.items.map((item) => ({ + isLeaf: false, + key: item.id, + title: item.displayName, + children: [], + })), + ); + setCheckedOuKeys(userOus.items.map((item) => item.id)); + } + } + }, [visible, userData, assignableRoles, userOus]); + + const handleOk = async () => { + try { + const values = await form.validateFields(); + if (userId) { + await updateUser({ ...values, id: userId }); //admin用户更新不了? + } else { + await createUser(values); + } + } catch (error) { + console.error("Validation failed:", error); + } + }; + + // 更新组织机构树结构 + const updateTreeData = (list: DataNode[], key: React.Key, children: DataNode[]): DataNode[] => { + return list.map((node) => { + if (node.key === key) { + return { ...node, children }; + } + if (node.children) { + return { ...node, children: updateTreeData(node.children, key, children) }; + } + return node; + }); + }; + + // Load organization unit children with tree update + const onLoadOuChildren = async (treeNode: any) => { + const nodeKey = String(treeNode.key); + const { items } = await getChildrenApi({ id: nodeKey }); + const children = items.map( + (item): DataNode => ({ + isLeaf: false, + key: item.id, + title: item.displayName, + children: [], + }), + ); + setOrganizationUnits((prev) => updateTreeData(prev, nodeKey, children)); + setLoadedOuKeys((prev) => [...prev, nodeKey]); + }; + + return ( + +
+ + + + {$t("AbpIdentity.DisplayName:IsActive")} + + + + + {!userId && ( + + + + )} + + + + + + + + + + + + + + {$t("AbpIdentity.Description:LockoutEnabled")} + + + + {canManageRoles && ( + + + { + console.log("targetKeys", targetKeys); + const stringTargetKeys = targetKeys.map(String); // 转换成 string[] + setTargetKeys(stringTargetKeys); // 触发react更新 + form.setFieldValue("roleNames", targetKeys); //提交时从form获取roleNames + }} + render={(item) => item.title || ""} + listStyle={{ + width: "47%", + height: "338px", + }} + titles={[$t("AbpIdentity.Assigned"), $t("AbpIdentity.Available")]} + /> + + + )} + + {userId && canManageOu && ( + + + + )} + + +
+ ); +}; + +export default UserModal; diff --git a/apps/react-admin/src/pages/management/identity/users/user-password-modal.tsx b/apps/react-admin/src/pages/management/identity/users/user-password-modal.tsx new file mode 100644 index 000000000..15fa046a1 --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/users/user-password-modal.tsx @@ -0,0 +1,77 @@ +import { Form, Input, Modal, Button } from "antd"; +import { useTranslation } from "react-i18next"; +import { useMutation } from "@tanstack/react-query"; +import { changePasswordApi } from "@/api/management/identity/users"; +import { toast } from "sonner"; + +interface UserPasswordModalProps { + visible: boolean; + userId?: string; + onClose: () => void; + onChange: () => void; +} + +const UserPasswordModal: React.FC = ({ visible, userId, onClose, onChange }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + + const { mutateAsync: changePassword, isPending } = useMutation({ + mutationFn: (password: string) => { + if (!userId) { + return Promise.reject(new Error("userId is undefined")); + } + return changePasswordApi(userId, { password }); + }, + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + onChange(); + onClose(); + form.resetFields(); + }, + }); + + // Generate a random password + const generatePassword = () => { + const length = 12; + const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+"; + let password = ""; + for (let i = 0; i < length; i++) { + password += charset.charAt(Math.floor(Math.random() * charset.length)); + } + form.setFieldsValue({ password }); + }; + + const handleOk = async () => { + try { + const values = await form.validateFields(); + await changePassword(values.password); + } catch (error) { + console.error("Validation failed:", error); + } + }; + + return ( + +
+ + {$t("AbpIdentity.RandomPassword")}} + onSearch={generatePassword} + allowClear={false} + /> + + +
+ ); +}; + +export default UserPasswordModal; diff --git a/apps/react-admin/src/pages/management/identity/users/user-table.tsx b/apps/react-admin/src/pages/management/identity/users/user-table.tsx new file mode 100644 index 000000000..4d6101c5a --- /dev/null +++ b/apps/react-admin/src/pages/management/identity/users/user-table.tsx @@ -0,0 +1,395 @@ +import { useRef, useState } from "react"; +import { Button, Dropdown, Modal, Space, Tag } from "antd"; +import { + EditOutlined, + DeleteOutlined, + EllipsisOutlined, + LockOutlined, + UnlockOutlined, + PlusOutlined, +} from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { IdentityUserDto } from "#/management/identity/user"; +import { ProTable, type ActionType, type ProColumns } from "@ant-design/pro-table"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { deleteApi, getPagedListApi, unLockApi } from "@/api/management/identity/users"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { IdentityUserPermissions } from "@/constants/management/identity/permissions"; +import { AuditLogPermissions } from "@/constants/management/auditing/permissions"; +import { Iconify } from "@/components/icon"; +import { toast } from "sonner"; +import { formatToDateTime } from "@/utils/abp"; +import useAbpStore from "@/store/abpCoreStore"; + +// Modals +import UserModal from "./user-modal"; +import UserLockModal from "./user-lock-modal"; +import UserClaimModal from "./user-claim-modal"; +import UserPasswordModal from "./user-password-modal"; +import PermissionModal from "@/components/abp/permissions/permission-modal"; +import { EntityChangeDrawer } from "@/components/abp/auditing/entity-change-drawer"; +import Card from "@/components/card"; + +const UserTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const [modal, contextHolder] = Modal.useModal(); + const queryClient = useQueryClient(); + const abpStore = useAbpStore(); + + // Modal visibility states + const [userModalVisible, setUserModalVisible] = useState(false); + const [lockModalVisible, setLockModalVisible] = useState(false); + const [claimModalVisible, setClaimModalVisible] = useState(false); + const [passwordModalVisible, setPasswordModalVisible] = useState(false); + const [permissionModalVisible, setPermissionModalVisible] = useState(false); + const [entityChangeDrawerVisible, setEntityChangeDrawerVisible] = useState(false); + + // Selected user state + const [selectedUser, setSelectedUser] = useState(); + + // Check if user is locked + const isLocked = (user: IdentityUserDto) => { + if (!user.lockoutEnd) return false; + const lockTime = new Date(user.lockoutEnd); + return lockTime > new Date(); + }; + + // API Mutations + const { mutateAsync: deleteUser } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["users"] }); + }, + }); + + const { mutateAsync: unlockUser } = useMutation({ + mutationFn: unLockApi, + onSuccess: () => { + toast.success($t("AbpIdentity.SavedSuccessfully")); + actionRef.current?.reload(); + queryClient.invalidateQueries({ queryKey: ["users"] }); + }, + }); + + // Handle actions + const handleMenuClick = (key: string, user: IdentityUserDto) => { + setSelectedUser(user); + switch (key) { + case "lock": + setLockModalVisible(true); + break; + case "unlock": + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + onOk: () => unlockUser(user.id), + }); + break; + case "permissions": + setPermissionModalVisible(true); + break; + case "claims": + setClaimModalVisible(true); + break; + case "password": + setPasswordModalVisible(true); + break; + case "entity-changes": + setEntityChangeDrawerVisible(true); + break; + } + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + hideInTable: true, + }, + { + title: $t("AbpIdentity.DisplayName:IsActive"), + dataIndex: "isActive", + width: 100, + align: "center", + hideInSearch: true, + render: (_, record) => ( + {record.isActive ? $t("AbpUi.Yes") : $t("AbpUi.No")} + ), + }, + { + title: $t("AbpIdentity.DisplayName:UserName"), + dataIndex: "userName", + hideInSearch: true, + width: 150, + }, + { + title: $t("AbpIdentity.DisplayName:Email"), + dataIndex: "email", + hideInSearch: true, + width: 180, + sorter: true, + }, + { + title: $t("AbpIdentity.DisplayName:PhoneNumber"), + dataIndex: "phoneNumber", + hideInSearch: true, + width: 120, + }, + { + title: $t("AbpIdentity.DisplayName:Surname"), + dataIndex: "surname", + hideInSearch: true, + width: 100, + }, + { + title: $t("AbpIdentity.DisplayName:Name"), + dataIndex: "name", + hideInSearch: true, + + width: 100, + }, + { + title: $t("AbpIdentity.LockoutEnd"), + hideInSearch: true, + dataIndex: "lockoutEnd", + width: 160, + render: (_, record) => (record.lockoutEnd ? formatToDateTime(record.lockoutEnd) : "-"), + }, + { + title: $t("AbpUi.Actions"), + width: 200, + hideInSearch: true, + fixed: "right", + render: (_, record) => ( + + {hasAccessByCodes([IdentityUserPermissions.Update]) && ( + + )} + {hasAccessByCodes([IdentityUserPermissions.Delete]) && ( + + )} + handleMenuClick(key, record), + }} + > + + ), + ]} + /> + + + {/* User Modal */} + { + setUserModalVisible(false); + setSelectedUser(undefined); + }} + onChange={() => actionRef.current?.reload()} + /> + + {/* Lock Modal */} + {selectedUser && ( + { + setLockModalVisible(false); + setSelectedUser(undefined); + }} + onChange={() => { + actionRef.current?.reload(); + queryClient.invalidateQueries({ queryKey: ["users"] }); + }} + /> + )} + + {/* Claim Modal */} + {selectedUser && ( + { + setClaimModalVisible(false); + setSelectedUser(undefined); + }} + onChange={() => actionRef.current?.reload()} + /> + )} + + {/* Password Modal */} + {selectedUser && ( + { + setPasswordModalVisible(false); + setSelectedUser(undefined); + }} + onChange={() => actionRef.current?.reload()} + /> + )} + + {/* Permission Modal */} + { + setPermissionModalVisible(false); + setSelectedUser(undefined); + }} + onChange={() => actionRef.current?.reload()} + /> + + {/* Entity Change Drawer */} + { + setEntityChangeDrawerVisible(false); + setSelectedUser(undefined); + }} + /> + + ); +}; + +export default UserTable; diff --git a/apps/react-admin/src/pages/management/notifications/my-notification-modal.tsx b/apps/react-admin/src/pages/management/notifications/my-notification-modal.tsx new file mode 100644 index 000000000..396bfd140 --- /dev/null +++ b/apps/react-admin/src/pages/management/notifications/my-notification-modal.tsx @@ -0,0 +1,25 @@ +import { Modal } from "antd"; +import type { Notification } from "#/notifications"; +import Editor from "@/components/editor"; + +interface Props { + visible: boolean; + notification?: Notification; + onClose: () => void; +} + +const MyNotificationModal: React.FC = ({ visible, notification, onClose }) => { + return ( + + + + ); +}; + +export default MyNotificationModal; diff --git a/apps/react-admin/src/pages/management/notifications/my-notification-table.tsx b/apps/react-admin/src/pages/management/notifications/my-notification-table.tsx new file mode 100644 index 000000000..898664d47 --- /dev/null +++ b/apps/react-admin/src/pages/management/notifications/my-notification-table.tsx @@ -0,0 +1,275 @@ +import { useRef, useState } from "react"; +import { Button, Card, Dropdown, Modal, Space, type MenuProps } from "antd"; +import { DeleteOutlined, DownOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { ProTable, type ActionType, type ProColumns } from "@ant-design/pro-table"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { type Notification, NotificationReadState, NotificationType } from "#/notifications"; +import { + deleteMyNotifilerApi, + getMyNotifilersApi, + markReadStateApi, +} from "@/api/management/notifications/my-notifications"; +import MyNotificationModal from "./my-notification-modal"; +import { formatToDateTime } from "@/utils/abp"; +import { Icon } from "@iconify/react"; +import { toast } from "sonner"; +import { useNotificationSerializer } from "@/utils/abp/notifications/useNotificationSerializer"; + +const MyNotificationTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const [modal, contextHolder] = Modal.useModal(); + const queryClient = useQueryClient(); + + const { deserialize } = useNotificationSerializer(); + const [selectedRows, setSelectedRows] = useState([]); + const [modalVisible, setModalVisible] = useState(false); + const [selectedNotification, setSelectedNotification] = useState(); + + // Delete notification mutation + const { mutateAsync: deleteNotification } = useMutation({ + mutationFn: deleteMyNotifilerApi, + onSuccess: () => { + toast.success($t("AbpUi.SuccessfullyDeleted")); + queryClient.invalidateQueries({ queryKey: ["notifications"] }); + actionRef.current?.reload(); + }, + }); + + // Mark read state mutation + const { mutateAsync: markReadState } = useMutation({ + mutationFn: markReadStateApi, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["notifications"] }); + actionRef.current?.reload(); + }, + }); + + const handleDelete = (notification: Notification) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpUi.ItemWillBeDeletedMessageWithFormat", { 0: notification.title }), + onOk: () => deleteNotification(notification.id), + }); + }; + + const handleRead = async (ids: string[], state: NotificationReadState) => { + await markReadState({ idList: ids, state }); + queryClient.invalidateQueries({ queryKey: ["notifications"] }); + setSelectedRows([]); + }; + + const handleClickNotification = (notification: Notification) => { + setSelectedNotification(notification); + setModalVisible(true); + handleRead([notification.id], NotificationReadState.Read); + }; + + const bulkActionMenu: MenuProps["items"] = [ + { + key: "read", + icon: , + label: $t("Notifications.Read"), + onClick: () => + handleRead( + selectedRows.map((row) => row.id), + NotificationReadState.Read, + ), + }, + { + key: "unread", + icon: , + label: $t("Notifications.UnRead"), + onClick: () => + handleRead( + selectedRows.map((row) => row.id), + NotificationReadState.UnRead, + ), + }, + ]; + + const rowActionMenu = (record: Notification): MenuProps["items"] => [ + { + key: "read", + icon: , + label: $t("Notifications.Read"), + onClick: () => handleRead([record.id], NotificationReadState.Read), + }, + { + key: "unread", + icon: , + label: $t("Notifications.UnRead"), + onClick: () => handleRead([record.id], NotificationReadState.UnRead), + }, + ]; + + const columns: ProColumns[] = [ + { + title: $t("Notifications.Notifications:State"), + dataIndex: "readState", + valueType: "select", + fieldProps: { + allowClear: true, + options: [ + { + label: $t("Notifications.Read"), + value: NotificationReadState.Read, + }, + { + label: $t("Notifications.UnRead"), + value: NotificationReadState.UnRead, + }, + ], + }, + initialValue: NotificationReadState.UnRead, + hideInTable: true, + }, + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + valueType: "text", + hideInTable: true, // hide in table + }, + { + title: $t("Notifications.Notifications:Type"), + dataIndex: "type", + + hideInSearch: true, + valueEnum: { + [NotificationType.Application]: $t("Notifications.NotificationType:Application"), + [NotificationType.ServiceCallback]: $t("Notifications.NotificationType:ServiceCallback"), + [NotificationType.System]: $t("Notifications.NotificationType:System"), + [NotificationType.User]: $t("Notifications.NotificationType:User"), + }, + }, + { + title: $t("Notifications.Notifications:SendTime"), + dataIndex: "creationTime", + hideInSearch: true, + render: (_, record) => formatToDateTime(record.creationTime), + }, + { + title: $t("Notifications.Notifications:Title"), + dataIndex: "title", + hideInSearch: true, + render: (_, record) => ( +
+ + +
+ ), + }, + { + title: $t("Notifications.Notifications:Content"), + dataIndex: "message", + hideInSearch: true, + render: (_, record) => ( + + ), + }, + { + title: $t("AbpUi.Actions"), + fixed: "right", + hideInSearch: true, + width: 200, + render: (_, record) => ( + + + + + + + ), + }, + ]; + + return ( + <> + {contextHolder} + + + headerTitle={$t("Notifications.Notifications")} + actionRef={actionRef} + rowKey="id" + columns={columns} + rowSelection={{ + onChange: (_, rows) => setSelectedRows(rows), + }} + toolBarRender={() => [ + selectedRows.length > 0 && ( + + + + ), + ]} + request={async (params) => { + const { current, pageSize, filter, readState } = params; + const query = await queryClient.fetchQuery({ + queryKey: ["notifications", params], + queryFn: async () => + getMyNotifilersApi({ + maxResultCount: pageSize, + skipCount: ((current || 1) - 1) * (pageSize || 0), + filter, + readState, + }), + }); + return { + data: query.items.map((item) => { + const notification = deserialize(item); + return { + ...item, + ...notification, + }; + }), + success: true, + total: query.totalCount, + }; + }} + pagination={{ + showSizeChanger: true, + }} + scroll={{ x: "max-content" }} + search={{ + labelWidth: "auto", + defaultCollapsed: false, + }} + /> + + setModalVisible(false)} + /> + + ); +}; + +export default MyNotificationTable; diff --git a/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-modal.tsx b/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-modal.tsx new file mode 100644 index 000000000..2e2c4ed6b --- /dev/null +++ b/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-modal.tsx @@ -0,0 +1,159 @@ +import { useEffect, useState } from "react"; +import { Form, Input, Modal, Tabs } from "antd"; +import { useTranslation } from "react-i18next"; +import type { PermissionGroupDefinitionDto } from "#/management/permissions/groups"; +import type { PropertyInfo } from "@/components/abp/properties/types"; +import { createApi, getApi, updateApi } from "@/api/management/permissions/groups"; +import LocalizableInput from "@/components/abp/localizable-input/localizable-input"; +import PropertyTable from "@/components/abp/properties/property-table"; +import { toast } from "sonner"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; + +interface Props { + visible: boolean; + onClose: () => void; + onChange: (data: PermissionGroupDefinitionDto) => void; + groupName?: string; +} + +type TabKeys = "basic" | "props"; + +const defaultModel: PermissionGroupDefinitionDto = {} as PermissionGroupDefinitionDto; + +const PermissionGroupDefinitionModal: React.FC = ({ visible, onClose, onChange, groupName }) => { + const { t: $t } = useTranslation(); + const queryClient = useQueryClient(); + const [form] = Form.useForm(); + const [formModel, setFormModel] = useState({ ...defaultModel }); + const [isEditModel, setIsEditModel] = useState(false); + const [activeTab, setActiveTab] = useState("basic"); + + // 获取权限组详情 getApi 用 useMutation + const { mutateAsync: fetchGroup, isPending: isFetching } = useMutation({ + mutationFn: getApi, + onMutate: () => { + setIsEditModel(true); + }, + onSuccess: (dto) => { + setFormModel(dto); + form.setFieldsValue(dto); + }, + }); + + // 创建权限组 + const { mutateAsync: createGroup, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: (res) => { + toast.success($t("AbpUi.SavedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + onChange(res); + onClose(); + }, + }); + + // 更新权限组 + const { mutateAsync: updateGroup, isPending: isUpdating } = useMutation({ + mutationFn: (data: PermissionGroupDefinitionDto) => updateApi(data.name, data), + onSuccess: (res) => { + toast.success($t("AbpUi.SavedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + onChange(res); + onClose(); + }, + }); + + useEffect(() => { + if (visible) { + setIsEditModel(false); + setActiveTab("basic"); + setFormModel({ ...defaultModel }); + form.resetFields(); + + if (groupName) { + fetchGroup(groupName); + } + } + }, [visible, groupName]); + + const handleOk = async () => { + try { + const values = await form.validateFields(); + const submitData = { + ...values, + extraProperties: formModel.extraProperties, + }; + + if (isEditModel) { + await updateGroup(submitData); + } else { + await createGroup(submitData); + } + } catch (error) { + console.error(error); + } + }; + + const handlePropChange = (prop: PropertyInfo) => { + setFormModel((prev) => ({ + ...prev, + extraProperties: { + ...prev.extraProperties, + [prop.key]: prop.value, + }, + })); + }; + + const handlePropDelete = (prop: PropertyInfo) => { + setFormModel((prev) => { + const newProps = { ...prev.extraProperties }; + delete newProps[prop.key]; + return { + ...prev, + extraProperties: newProps, + }; + }); + }; + + return ( + +
+ setActiveTab(key as TabKeys)}> + + + + + + + + + + + + + +
+ ); +}; + +export default PermissionGroupDefinitionModal; diff --git a/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-table.tsx b/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-table.tsx new file mode 100644 index 000000000..77730f051 --- /dev/null +++ b/apps/react-admin/src/pages/management/permissions/definitions/permission-group-definition-table.tsx @@ -0,0 +1,219 @@ +import { useCallback, useRef, useState } from "react"; +import { Button, Card, Dropdown, Modal } from "antd"; +import { EditOutlined, DeleteOutlined, PlusOutlined, EllipsisOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import type { PermissionGroupDefinitionDto } from "#/management/permissions/groups"; +import { type ActionType, ProTable, type ProColumns } from "@ant-design/pro-table"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import { localizationSerializer } from "@/utils/abp/localization-serializer"; +import { deleteApi, getListApi } from "@/api/management/permissions/groups"; +import { GroupDefinitionsPermissions, PermissionDefinitionsPermissions } from "@/constants/management/permissions"; +import PermissionGroupDefinitionModal from "./permission-group-definition-modal"; +import PermissionDefinitionModal from "../permissions/permission-definition-modal"; +import { useLocalizer } from "@/hooks/abp/use-localization"; +import { toast } from "sonner"; +import { Iconify } from "@/components/icon"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; + +const PermissionGroupDefinitionTable: React.FC = () => { + const { t: $t } = useTranslation(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + const [modal, contextHolder] = Modal.useModal(); + const { deserialize } = localizationSerializer(); + + // Modal states + const [groupModalVisible, setGroupModalVisible] = useState(false); + const [permissionModalVisible, setPermissionModalVisible] = useState(false); + const [selectedGroup, setSelectedGroup] = useState(); + const [selectedGroupForPermission, setSelectedGroupForPermission] = useState(); + const { Lr } = useLocalizer( + undefined, + useCallback(() => { + actionRef.current?.reload(); + setPermissionModalVisible(false); + setGroupModalVisible(false); + }, []), + ); + + const [searchParams, setSearchParams] = useState<{ filter?: string }>({}); + + // 获取权限组列表 + const { data, isLoading } = useQuery({ + queryKey: ["permissionGroups", searchParams], + queryFn: async () => { + const { items } = await getListApi(searchParams); + return items.map((item) => { + const localizableString = deserialize(item.displayName); + return { + ...item, + displayName: Lr(localizableString.resourceName, localizableString.name), + }; + }); + }, + }); + + // 删除权限组 + const { mutateAsync: deleteGroup } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + }, + }); + + const handleCreate = () => { + setSelectedGroup(undefined); + setGroupModalVisible(true); + }; + + const handleUpdate = (group: PermissionGroupDefinitionDto) => { + setSelectedGroup(group); + setGroupModalVisible(true); + }; + + const handleDelete = (group: PermissionGroupDefinitionDto) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpUi.ItemWillBeDeletedMessageWithFormat", { 0: group.name }), + onOk: () => deleteGroup(group.name), + }); + }; + + const handleMenuClick = (key: string, group: PermissionGroupDefinitionDto) => { + if (key === "permissions") { + setSelectedGroupForPermission(group.name); + setPermissionModalVisible(true); + } + }; + + const columns: ProColumns[] = [ + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + valueType: "text", + hideInTable: true, // hide in table + }, + { + title: $t("AbpPermissionManagement.DisplayName:Name"), + dataIndex: "name", + width: "auto", + hideInSearch: true, + }, + { + title: $t("AbpPermissionManagement.DisplayName:DisplayName"), + dataIndex: "displayName", + width: "auto", + hideInSearch: true, + }, + { + title: $t("AbpUi.Actions"), + width: 220, + fixed: "right", + hideInSearch: true, + render: (_, record) => ( +
+
+ {hasAccessByCodes([GroupDefinitionsPermissions.Update]) && ( + + )} +
+ {!record.isStatic && ( + <> +
+ {hasAccessByCodes([GroupDefinitionsPermissions.Delete]) && ( + + )} +
+
+ , + label: $t("AbpPermissionManagement.PermissionDefinitions:AddNew"), + } + : null, + ].filter((item) => item !== null), // 过滤 + onClick: ({ key }) => handleMenuClick(key as string, record), + }} + > +
+ + )} +
+ ), + }, + ]; + + return ( + <> + {contextHolder} + + + headerTitle={$t("AbpPermissionManagement.GroupDefinitions")} + actionRef={actionRef} + columns={columns} + dataSource={data} + loading={isLoading} + rowKey="name" + pagination={{ + showSizeChanger: true, + total: data?.length, + }} + search={{ + labelWidth: "auto", + span: 12, + defaultCollapsed: true, + }} + toolBarRender={() => [ + hasAccessByCodes([GroupDefinitionsPermissions.Create]) && ( + + ), + ]} + request={async (params) => { + const { filter } = params; + setSearchParams({ filter }); + // 强制重新请求数据 + await queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + return { data, success: true, total: data?.length }; + }} + /> + + setGroupModalVisible(false)} + onChange={() => { + setGroupModalVisible(false); + actionRef.current?.reload(); + }} + /> + + { + console.log("close"); + setPermissionModalVisible(false); + }} + onChange={() => { + setPermissionModalVisible(false); + actionRef.current?.reload(); + }} + groupName={selectedGroupForPermission} + /> + + ); +}; + +export default PermissionGroupDefinitionTable; diff --git a/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-modal.tsx b/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-modal.tsx new file mode 100644 index 000000000..17ba7eaf4 --- /dev/null +++ b/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-modal.tsx @@ -0,0 +1,272 @@ +import { useEffect, useState } from "react"; +import { Modal, Form, Input, Checkbox, Select, Tabs, TreeSelect } from "antd"; +import { createApi, getListApi as getPermissionsApi, updateApi } from "@/api/management/permissions/definitions"; +import { getListApi as getGroupsApi } from "@/api/management/permissions/groups"; +import { toast } from "sonner"; +import { useTranslation } from "react-i18next"; +import { useTypesMap } from "./types"; +import type { PermissionDefinitionDto } from "#/management/permissions/definitions"; +// import type { PermissionGroupDefinitionDto } from "#/permissions/groups"; +import { listToTree } from "@/utils/tree"; +import { useLocalizer } from "@/hooks/abp/use-localization"; +import { localizationSerializer } from "@/utils/abp/localization-serializer"; +import type { PropertyInfo } from "@/components/abp/properties/types"; +import LocalizableInput from "@/components/abp/localizable-input/localizable-input"; +import PropertyTable from "@/components/abp/properties/property-table"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; + +const { TabPane } = Tabs; +const { Option } = Select; + +interface PermissionDefinitionModalProps { + visible: boolean; + onClose: () => void; + onChange: () => void; + permission?: PermissionDefinitionDto; + groupName?: string; +} + +interface PermissionTreeVo { + children: PermissionTreeVo[]; + displayName: string; + groupName: string; + name: string; + disabled?: boolean; +} + +type TabKeys = "basic" | "props"; + +const defaultModel: PermissionDefinitionDto = {} as PermissionDefinitionDto; + +const PermissionDefinitionModal: React.FC = ({ + visible, + onClose, + onChange, + permission, + groupName, +}) => { + const { t: $t } = useTranslation(); + const queryClient = useQueryClient(); + const [form] = Form.useForm(); + const { multiTenancySideOptions, providerOptions } = useTypesMap($t); + const [activeTab, setActiveTab] = useState("basic"); + const [formModel, setFormModel] = useState({ ...defaultModel }); + const { Lr } = useLocalizer(); + const { deserialize } = localizationSerializer(); + + // 查询权限组列表 + const { data: availableGroups = [] } = useQuery({ + queryKey: ["permissionGroups", groupName], + queryFn: async () => { + const { items } = await getGroupsApi({ filter: groupName }); + return items + .filter((group) => !group.isStatic) + .map((group) => { + const localizableGroup = deserialize(group.displayName); + return { + ...group, + displayName: Lr(localizableGroup.resourceName, localizableGroup.name), + }; + }); + }, + + enabled: visible, + }); + + // 查询权限列表 + const { data: availablePermissions = [] } = useQuery({ + queryKey: ["permissions", formModel.groupName], + queryFn: async () => { + const { items } = await getPermissionsApi({ groupName: formModel.groupName }); + const permissions = items.map((permission) => { + const localizablePermission = deserialize(permission.displayName); + return { + ...permission, + disabled: permission.name === formModel.name, + displayName: Lr(localizablePermission.resourceName, localizablePermission.name), + }; + }); + return listToTree(permissions, { id: "name", pid: "parentName" }); + }, + enabled: visible && !!formModel.groupName, + }); + + // 创建权限 + const { mutateAsync: createPermission, isPending: isCreating } = useMutation({ + mutationFn: createApi, + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissions"] }); + queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + onChange(); + onClose(); + }, + }); + + // 更新权限 + const { mutateAsync: updatePermission, isPending: isUpdating } = useMutation({ + mutationFn: (data: PermissionDefinitionDto) => updateApi(data.name, data), + onSuccess: () => { + toast.success($t("AbpUi.SavedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissions"] }); + queryClient.invalidateQueries({ queryKey: ["permissionGroups"] }); + onChange(); + onClose(); + }, + }); + + useEffect(() => { + if (visible) { + setActiveTab("basic"); + form.resetFields(); + + if (permission) { + const initialModel = { + ...permission, + extraProperties: permission.extraProperties || {}, + }; + setFormModel(initialModel); + form.setFieldsValue(initialModel); + } else { + setFormModel({ ...defaultModel }); + if (groupName) { + form.setFieldsValue({ groupName }); + } + } + } + }, [visible, permission, groupName]); + + const handleOk = async () => { + try { + const values = await form.validateFields(); + const submitData = { + ...values, + extraProperties: formModel.extraProperties, + }; + + if (permission) { + await updatePermission(submitData); + } else { + await createPermission(submitData); + } + } catch (error) { + console.error(error); + } + }; + + const handleGroupChange = (groupName?: string) => { + setFormModel((prev) => ({ ...prev, groupName: groupName || "" })); + }; + + const handlePropChange = (prop: PropertyInfo) => { + setFormModel((prev) => ({ + ...prev, + extraProperties: { + ...prev.extraProperties, + [prop.key]: prop.value, + }, + })); + }; + + const handlePropDelete = (prop: PropertyInfo) => { + setFormModel((prev) => { + const newProps = { ...prev.extraProperties }; + delete newProps[prop.key]; + return { + ...prev, + extraProperties: newProps, + }; + }); + }; + + return ( + +
+ setActiveTab(key as TabKeys)}> + + + {$t("AbpPermissionManagement.DisplayName:IsEnabled")} + + + + + {availablePermissions.length > 0 && ( + + + + )} + + + + + + + + + + + + + + + + + + +
+ ); +}; + +export default PermissionDefinitionModal; diff --git a/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-table.tsx b/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-table.tsx new file mode 100644 index 000000000..39179f7cf --- /dev/null +++ b/apps/react-admin/src/pages/management/permissions/permissions/permission-definition-table.tsx @@ -0,0 +1,288 @@ +import { useCallback, useRef, useState } from "react"; +import { Button, Card, Modal, Space, Table, Tag } from "antd"; +import { EditOutlined, DeleteOutlined, PlusOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; + +import type { MultiTenancySides, PermissionDefinitionDto } from "#/management/permissions/definitions"; +import { type ActionType, ProTable, type ProColumns } from "@ant-design/pro-table"; + +import { localizationSerializer } from "@/utils/abp/localization-serializer"; + +import { deleteApi, getListApi as getPermissionsApi } from "@/api/management/permissions/definitions"; +import { getListApi as getGroupsApi } from "@/api/management/permissions/groups"; +import { GroupDefinitionsPermissions } from "@/constants/management/permissions"; +import { hasAccessByCodes } from "@/utils/abp/access-checker"; +import PermissionDefinitionModal from "./permission-definition-modal"; +import { useLocalizer } from "@/hooks/abp/use-localization"; +import { useTypesMap } from "./types"; +import { listToTree } from "@/utils/tree"; +import type { ExtraPropertyDictionary } from "#/abp-core"; +import type { ColumnsType } from "antd/es/table"; +import { toast } from "sonner"; + +interface PermissionVo { + children: PermissionVo[]; + displayName: string; + groupName: string; + isEnabled: boolean; + isStatic: boolean; + multiTenancySide: MultiTenancySides; + name: string; + parentName?: string; + providers: string[]; + stateCheckers: string; + extraProperties: ExtraPropertyDictionary; +} + +interface PermissionGroupVo { + displayName: string; + name: string; + permissions: PermissionVo[]; +} + +const PermissionDefinitionTable: React.FC = () => { + const { t: $t } = useTranslation(); + const [modal, contextHolder] = Modal.useModal(); + const actionRef = useRef(); + const queryClient = useQueryClient(); + const [modalVisible, setModalVisible] = useState(false); + const [selectedPermission, setSelectedPermission] = useState(); + + const [searchParams, setSearchParams] = useState<{ filter?: string }>({}); + + const { Lr } = useLocalizer( + undefined, + useCallback(() => { + actionRef.current?.reload(); + setModalVisible(false); + }, []), + ); + + const { deserialize } = localizationSerializer(); + const { multiTenancySidesMap, providersMap } = useTypesMap($t); + + // 删除权限操作 + const { mutateAsync: deletePermission } = useMutation({ + mutationFn: deleteApi, + onSuccess: () => { + toast.success($t("AbpUi.DeletedSuccessfully")); + queryClient.invalidateQueries({ queryKey: ["permissions", "permissionGroups"] }); + }, + }); + + // 获取权限数据 + const { data, isLoading } = useQuery({ + queryKey: ["permissions", "permissionGroups", searchParams], + queryFn: async () => { + const [groupRes, permissionRes] = await Promise.all([ + getGroupsApi(searchParams), + getPermissionsApi(searchParams), + ]); + + const groups: PermissionGroupVo[] = groupRes.items.map((group) => { + const localizableGroup = deserialize(group.displayName); + const permissions = permissionRes.items + .filter((permission) => permission.groupName === group.name) + .map((permission) => { + const localizablePermission = deserialize(permission.displayName); + return { + ...permission, + displayName: Lr(localizablePermission.resourceName, localizablePermission.name), + }; + }); + return { + ...group, + displayName: Lr(localizableGroup.resourceName, localizableGroup.name), + permissions: listToTree(permissions, { + id: "name", + pid: "parentName", + }), + }; + }); + + return groups; + }, + }); + + const handleDelete = async (permission: PermissionDefinitionDto) => { + modal.confirm({ + title: $t("AbpUi.AreYouSure"), + content: $t("AbpUi.ItemWillBeDeletedMessageWithFormat", { 0: permission.name }), + onOk: () => deletePermission(permission.name), + }); + }; + + const mainColumns: ProColumns[] = [ + { + title: $t("abp.sequence"), + dataIndex: "index", + valueType: "index", + width: 50, + render: (_, __, index) => index + 1, + }, + { + title: $t("AbpUi.Search"), + dataIndex: "filter", + valueType: "text", + hideInTable: true, // hide in table + }, + { + title: $t("AbpPermissionManagement.DisplayName:Name"), + dataIndex: "name", + width: 150, + hideInSearch: true, + }, + { + title: $t("AbpPermissionManagement.DisplayName:DisplayName"), + dataIndex: "displayName", + width: 150, + hideInSearch: true, + }, + ]; + + const subColumns: ColumnsType = [ + { + title: $t("AbpPermissionManagement.DisplayName:Name"), + dataIndex: "name", + width: 200, + ellipsis: true, + }, + { + title: $t("AbpPermissionManagement.DisplayName:DisplayName"), + dataIndex: "displayName", + width: 200, + }, + { + align: "center", + minWidth: 100, + // slots: { default: 'tenant' }, + title: $t("AbpPermissionManagement.DisplayName:MultiTenancySide"), + render: (_, record) => ( + + {multiTenancySidesMap[record.multiTenancySide]} + + ), + }, + { + title: $t("AbpPermissionManagement.DisplayName:Providers"), + width: 200, + render: (_, record) => ( + + {record.providers.map((provider) => ( + + {providersMap[provider]} + + ))} + + ), + }, + { + title: $t("AbpUi.Actions"), + width: 180, + fixed: "right", + render: (_, record) => ( + + {hasAccessByCodes([GroupDefinitionsPermissions.Update]) && ( + + )} + {!record.isStatic && hasAccessByCodes([GroupDefinitionsPermissions.Delete]) && ( + + )} + + ), + }, + ]; + + const expandedRowRender = (group: PermissionGroupVo) => { + return ( + + columns={subColumns} + dataSource={group.permissions} + pagination={false} + rowKey={(record) => record.name} + indentSize={30} + expandable={{ + defaultExpandAllRows: false, + childrenColumnName: "children", // 指定子项字段 + }} + /> + ); + }; + + // 工具栏 + const toolBarRender = () => [ + hasAccessByCodes([GroupDefinitionsPermissions.Create]) && ( + + ), + ]; + + return ( + <> + {contextHolder} + + + + headerTitle={$t("AbpPermissionManagement.PermissionDefinitions")} + actionRef={actionRef} + columns={mainColumns} + dataSource={data} + loading={isLoading} + rowKey={(record) => record.name} + expandable={{ expandedRowRender }} + toolBarRender={toolBarRender} + pagination={{ + showSizeChanger: true, + total: data?.length, + }} + search={{ + labelWidth: "auto", + span: 12, //search part width + defaultCollapsed: true, + }} + request={async (params) => { + const { filter } = params; + setSearchParams({ filter: filter }); + //强制重新请求数据(用于table的刷新按钮) + await queryClient.invalidateQueries({ queryKey: ["permissions", "permissionGroups"] }); + return { data, success: true, total: data?.length }; + }} + /> + + { + setModalVisible(false); + setSelectedPermission(undefined); + }} + onChange={() => { + setModalVisible(false); + actionRef.current?.reload(); + }} + /> + + ); +}; + +export default PermissionDefinitionTable; diff --git a/apps/react-admin/src/pages/management/permissions/permissions/types.ts b/apps/react-admin/src/pages/management/permissions/permissions/types.ts new file mode 100644 index 000000000..a0001a9b8 --- /dev/null +++ b/apps/react-admin/src/pages/management/permissions/permissions/types.ts @@ -0,0 +1,46 @@ +import { MultiTenancySides } from "#/management/permissions/definitions"; +import type { TFunction } from "i18next"; + +export function useTypesMap($t: TFunction) { + const multiTenancySidesMap: { [key: number]: string } = { + [MultiTenancySides.Both]: $t("AbpPermissionManagement.MultiTenancySides:Both"), + [MultiTenancySides.Host]: $t("AbpPermissionManagement.MultiTenancySides:Host"), + [MultiTenancySides.Tenant]: $t("AbpPermissionManagement.MultiTenancySides:Tenant"), + }; + + const multiTenancySideOptions = [ + { + label: multiTenancySidesMap[MultiTenancySides.Tenant], + value: MultiTenancySides.Tenant, + }, + { + label: multiTenancySidesMap[MultiTenancySides.Host], + value: MultiTenancySides.Host, + }, + { + label: multiTenancySidesMap[MultiTenancySides.Both], + value: MultiTenancySides.Both, + }, + ]; + + const providersMap: { [key: string]: string } = { + C: $t("AbpPermissionManagement.Providers:Client"), + O: $t("AbpPermissionManagement.Providers:OrganizationUnit"), + R: $t("AbpPermissionManagement.Providers:Role"), + U: $t("AbpPermissionManagement.Providers:User"), + }; + + const providerOptions = [ + { label: providersMap.R, value: "R" }, + { label: providersMap.U, value: "U" }, + { label: providersMap.O, value: "O" }, + { label: providersMap.C, value: "C" }, + ]; + + return { + multiTenancySideOptions, + multiTenancySidesMap, + providerOptions, + providersMap, + }; +} diff --git a/apps/react-admin/src/pages/management/settings/definitions/setting-definition-modal.tsx b/apps/react-admin/src/pages/management/settings/definitions/setting-definition-modal.tsx new file mode 100644 index 000000000..df581c229 --- /dev/null +++ b/apps/react-admin/src/pages/management/settings/definitions/setting-definition-modal.tsx @@ -0,0 +1,228 @@ +import { useEffect, useState } from "react"; +import { Form, Input, Modal, Tabs, Select, Checkbox } from "antd"; +import TextArea from "antd/es/input/TextArea"; +import { useTranslation } from "react-i18next"; +import type { SettingDefinitionDto } from "#/management/settings/definitions"; +import type { PropertyInfo } from "@/components/abp/properties/types"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { createApi, getApi, updateApi } from "@/api/management/settings/definitions"; +import LocalizableInput from "@/components/abp/localizable-input/localizable-input"; +import PropertyTable from "@/components/abp/properties/property-table"; +import { toast } from "sonner"; +import { CircleLoading } from "@/components/loading"; +import { mergeDeepRight } from "ramda"; + +interface Props { + visible: boolean; + settingName?: string; + onClose: () => void; + onChange: (data: SettingDefinitionDto) => void; +} + +type TabKeys = "basic" | "props"; + +const defaultModel = {} as SettingDefinitionDto; + +const SettingDefinitionModal: React.FC = ({ visible, settingName, onClose, onChange }) => { + const { t: $t } = useTranslation(); + const [form] = Form.useForm(); + const queryClient = useQueryClient(); + const [activeTab, setActiveTab] = useState("basic"); + const [formModel, setFormModel] = useState(defaultModel); + + const providerOptions = [ + { label: $t("AbpSettingManagement.Providers:Default"), value: "D" }, + { label: $t("AbpSettingManagement.Providers:Configuration"), value: "C" }, + { label: $t("AbpSettingManagement.Providers:Global"), value: "G" }, + { label: $t("AbpSettingManagement.Providers:Tenant"), value: "T" }, + { label: $t("AbpSettingManagement.Providers:User"), value: "U" }, + ]; + // Fetch setting data if editing + const { data: settingData, isLoading } = useQuery({ + queryKey: ["settingDefinition", settingName], + queryFn: () => { + if (!settingName) { + return Promise.reject(new Error("settingName is undefined")); + } + return getApi(settingName); + }, + enabled: !!settingName && visible, + }); + + useEffect(() => { + if (settingData && settingData.name === settingName) { + setFormModel(settingData); + form.setFieldsValue(settingData); + } + }, [settingData]); + + useEffect(() => { + if (visible) { + setActiveTab("basic"); + } + }, [visible]); + + // Create/Update mutations + const { mutateAsync: createSetting } = useMutation({ + mutationFn: createApi, + onSuccess: (data) => { + toast.success($t("AbpUi.SavedSuccessfully")); + onChange(data); + onClose(); + }, + }); + + const { mutateAsync: updateSetting } = useMutation({ + mutationFn: ({ name, input }: { name: string; input: SettingDefinitionDto }) => updateApi(name, input), + onSuccess: (data) => { + queryClient.invalidateQueries({ queryKey: ["settingDefinition", settingName] }); + toast.success($t("AbpUi.SavedSuccessfully")); + onChange(data); + onClose(); + }, + }); + + const handlePropertyChange = (prop: PropertyInfo) => { + setFormModel((prev) => ({ + ...prev, + extraProperties: { + ...prev.extraProperties, + [prop.key]: prop.value, + }, + })); + }; + + const handlePropertyDelete = (prop: PropertyInfo) => { + setFormModel((prev) => { + const newProperties = { ...prev.extraProperties }; + delete newProperties[prop.key]; + return { + ...prev, + extraProperties: newProperties, + }; + }); + }; + + const handleSubmit = async () => { + if (formModel.isStatic) return; + + try { + await form.validateFields(); + if (settingName) { + await updateSetting({ name: settingName, input: formModel }); + } else { + await createSetting(formModel); + } + } catch (error) { + console.error("Validation failed:", error); + } + }; + + return ( + { + onClose(); + form.resetFields(); + setFormModel(defaultModel); + form.resetFields(); + }} + onClose={() => { + onClose(); + form.resetFields(); + setFormModel(defaultModel); + form.resetFields(); + }} + onOk={handleSubmit} + okButtonProps={{ disabled: formModel.isStatic }} + width="50%" + destroyOnClose + > + {!!settingName && visible && isLoading ? ( + + ) : ( +
{ + setFormModel((prevModel) => { + return mergeDeepRight(prevModel, changedValues); + }); + }} + > + setActiveTab(key as TabKeys)}> + + + + + + \n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n").replace(/(^|\n)\s*/g, ''); + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = ` +
+ +
    +
    + +

    +
    + + +
    + + +
    + +
    + + +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +`.replace(/(^|\n)\s*/g, ''); /** * @returns {boolean} */ - var resetOldContainer = function resetOldContainer() { - var oldContainer = getContainer(); + const resetOldContainer = () => { + const oldContainer = getContainer(); if (!oldContainer) { return false; } @@ -990,31 +744,31 @@ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); return true; }; - var resetValidationMessage$1 = function resetValidationMessage() { + const resetValidationMessage$1 = () => { globalState.currentInstance.resetValidationMessage(); }; - var addInputChangeListeners = function addInputChangeListeners() { - var popup = getPopup(); - var input = getDirectChildByClass(popup, swalClasses.input); - var file = getDirectChildByClass(popup, swalClasses.file); + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getDirectChildByClass(popup, swalClasses.input); + const file = getDirectChildByClass(popup, swalClasses.file); /** @type {HTMLInputElement} */ - var range = popup.querySelector(".".concat(swalClasses.range, " input")); + const range = popup.querySelector(`.${swalClasses.range} input`); /** @type {HTMLOutputElement} */ - var rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); - var select = getDirectChildByClass(popup, swalClasses.select); + const rangeOutput = popup.querySelector(`.${swalClasses.range} output`); + const select = getDirectChildByClass(popup, swalClasses.select); /** @type {HTMLInputElement} */ - var checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); - var textarea = getDirectChildByClass(popup, swalClasses.textarea); + const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`); + const textarea = getDirectChildByClass(popup, swalClasses.textarea); input.oninput = resetValidationMessage$1; file.onchange = resetValidationMessage$1; select.onchange = resetValidationMessage$1; checkbox.onchange = resetValidationMessage$1; textarea.oninput = resetValidationMessage$1; - range.oninput = function () { + range.oninput = () => { resetValidationMessage$1(); rangeOutput.value = range.value; }; - range.onchange = function () { + range.onchange = () => { resetValidationMessage$1(); rangeOutput.value = range.value; }; @@ -1024,15 +778,13 @@ * @param {string | HTMLElement} target * @returns {HTMLElement} */ - var getTarget = function getTarget(target) { - return typeof target === 'string' ? document.querySelector(target) : target; - }; + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; /** * @param {SweetAlertOptions} params */ - var setupAccessibility = function setupAccessibility(params) { - var popup = getPopup(); + const setupAccessibility = params => { + const popup = getPopup(); popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); if (!params.toast) { @@ -1043,7 +795,7 @@ /** * @param {HTMLElement} targetElement */ - var setupRTL = function setupRTL(targetElement) { + const setupRTL = targetElement => { if (window.getComputedStyle(targetElement).direction === 'rtl') { addClass(getContainer(), swalClasses.rtl); } @@ -1054,20 +806,21 @@ * * @param {SweetAlertOptions} params */ - var init = function init(params) { + const init = params => { // Clean up the old popup container if it exists - var oldContainerExisted = resetOldContainer(); + const oldContainerExisted = resetOldContainer(); if (isNodeEnv()) { error('SweetAlert2 requires document to initialize'); return; } - var container = document.createElement('div'); + const container = document.createElement('div'); container.className = swalClasses.container; if (oldContainerExisted) { addClass(container, swalClasses['no-transition']); } setInnerHtml(container, sweetHTML); - var targetElement = getTarget(params.target); + container.dataset['swal2Theme'] = params.theme; + const targetElement = getTarget(params.target); targetElement.appendChild(container); setupAccessibility(params); setupRTL(targetElement); @@ -1078,14 +831,14 @@ * @param {HTMLElement | object | string} param * @param {HTMLElement} target */ - var parseHtmlToContainer = function parseHtmlToContainer(param, target) { + const parseHtmlToContainer = (param, target) => { // DOM element if (param instanceof HTMLElement) { target.appendChild(param); } // Object - else if (_typeof(param) === 'object') { + else if (typeof param === 'object') { handleObject(param, target); } @@ -1099,7 +852,7 @@ * @param {any} param * @param {HTMLElement} target */ - var handleObject = function handleObject(param, target) { + const handleObject = (param, target) => { // JQuery element(s) if (param.jquery) { handleJqueryElem(target, param); @@ -1115,10 +868,10 @@ * @param {HTMLElement} target * @param {any} elem */ - var handleJqueryElem = function handleJqueryElem(target, elem) { + const handleJqueryElem = (target, elem) => { target.textContent = ''; if (0 in elem) { - for (var i = 0; (i in elem); i++) { + for (let i = 0; i in elem; i++) { target.appendChild(elem[i].cloneNode(true)); } } else { @@ -1126,35 +879,13 @@ } }; - /** - * @returns {'webkitAnimationEnd' | 'animationend' | false} - */ - var animationEndEvent = function () { - // Prevent run in Node env - if (isNodeEnv()) { - return false; - } - var testEl = document.createElement('div'); - - // Chrome, Safari and Opera - if (typeof testEl.style.webkitAnimation !== 'undefined') { - return 'webkitAnimationEnd'; - } - - // Standard syntax - if (typeof testEl.style.animation !== 'undefined') { - return 'animationend'; - } - return false; - }(); - /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderActions = function renderActions(instance, params) { - var actions = getActions(); - var loader = getLoader(); + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); if (!actions || !loader) { return; } @@ -1183,9 +914,9 @@ * @param {SweetAlertOptions} params */ function renderButtons(actions, loader, params) { - var confirmButton = getConfirmButton(); - var denyButton = getDenyButton(); - var cancelButton = getCancelButton(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); if (!confirmButton || !denyButton || !cancelButton) { return; } @@ -1241,22 +972,22 @@ * @param {SweetAlertOptions} params */ function renderButton(button, buttonType, params) { - var buttonName = /** @type {'Confirm' | 'Deny' | 'Cancel'} */capitalizeFirstLetter(buttonType); - toggle(button, params["show".concat(buttonName, "Button")], 'inline-block'); - setInnerHtml(button, params["".concat(buttonType, "ButtonText")] || ''); // Set caption text - button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")] || ''); // ARIA label + const buttonName = /** @type {'Confirm' | 'Deny' | 'Cancel'} */capitalizeFirstLetter(buttonType); + toggle(button, params[`show${buttonName}Button`], 'inline-block'); + setInnerHtml(button, params[`${buttonType}ButtonText`] || ''); // Set caption text + button.setAttribute('aria-label', params[`${buttonType}ButtonAriaLabel`] || ''); // ARIA label // Add buttons custom classes button.className = swalClasses[buttonType]; - applyCustomClass(button, params, "".concat(buttonType, "Button")); + applyCustomClass(button, params, `${buttonType}Button`); } /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderCloseButton = function renderCloseButton(instance, params) { - var closeButton = getCloseButton(); + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); if (!closeButton) { return; } @@ -1272,8 +1003,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderContainer = function renderContainer(instance, params) { - var container = getContainer(); + const renderContainer = (instance, params) => { + const container = getContainer(); if (!container) { return; } @@ -1321,7 +1052,7 @@ if (!grow) { return; } - addClass(container, swalClasses["grow-".concat(grow)]); + addClass(container, swalClasses[`grow-${grow}`]); } /** @@ -1339,22 +1070,25 @@ domCache: new WeakMap() }; + /// + + /** @type {InputClass[]} */ - var inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderInput = function renderInput(instance, params) { - var popup = getPopup(); + const renderInput = (instance, params) => { + const popup = getPopup(); if (!popup) { return; } - var innerParams = privateProps.innerParams.get(instance); - var rerender = !innerParams || params.input !== innerParams.input; - inputClasses.forEach(function (inputClass) { - var inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputClasses.forEach(inputClass => { + const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); if (!inputContainer) { return; } @@ -1380,21 +1114,24 @@ /** * @param {SweetAlertOptions} params */ - var showInput = function showInput(params) { + const showInput = params => { if (!params.input) { return; } if (!renderInputType[params.input]) { - error("Unexpected type of input! Expected ".concat(Object.keys(renderInputType).join(' | '), ", got \"").concat(params.input, "\"")); + error(`Unexpected type of input! Expected ${Object.keys(renderInputType).join(' | ')}, got "${params.input}"`); return; } - var inputContainer = getInputContainer(params.input); - var input = renderInputType[params.input](inputContainer, params); + const inputContainer = getInputContainer(params.input); + if (!inputContainer) { + return; + } + const input = renderInputType[params.input](inputContainer, params); show(inputContainer); // input autofocus if (params.inputAutoFocus) { - setTimeout(function () { + setTimeout(() => { focusInput(input); }); } @@ -1403,9 +1140,9 @@ /** * @param {HTMLInputElement} input */ - var removeAttributes = function removeAttributes(input) { - for (var i = 0; i < input.attributes.length; i++) { - var attrName = input.attributes[i].name; + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; if (!['id', 'type', 'value', 'style'].includes(attrName)) { input.removeAttribute(attrName); } @@ -1416,13 +1153,17 @@ * @param {InputClass} inputClass * @param {SweetAlertOptions['inputAttributes']} inputAttributes */ - var setAttributes = function setAttributes(inputClass, inputAttributes) { - var input = getInput$1(getPopup(), inputClass); + const setAttributes = (inputClass, inputAttributes) => { + const popup = getPopup(); + if (!popup) { + return; + } + const input = getInput$1(popup, inputClass); if (!input) { return; } removeAttributes(input); - for (var attr in inputAttributes) { + for (const attr in inputAttributes) { input.setAttribute(attr, inputAttributes[attr]); } }; @@ -1430,10 +1171,13 @@ /** * @param {SweetAlertOptions} params */ - var setCustomClass = function setCustomClass(params) { - var inputContainer = getInputContainer(params.input); - if (_typeof(params.customClass) === 'object') { - addClass(inputContainer, params.customClass.input); + const setCustomClass = params => { + if (!params.input) { + return; + } + const inputContainer = getInputContainer(params.input); + if (inputContainer) { + applyCustomClass(inputContainer, params, 'input'); } }; @@ -1441,8 +1185,8 @@ * @param {HTMLInputElement | HTMLTextAreaElement} input * @param {SweetAlertOptions} params */ - var setInputPlaceholder = function setInputPlaceholder(input, params) { - if (!input.placeholder || params.inputPlaceholder) { + const setInputPlaceholder = (input, params) => { + if (!input.placeholder && params.inputPlaceholder) { input.placeholder = params.inputPlaceholder; } }; @@ -1452,13 +1196,13 @@ * @param {Input} prependTo * @param {SweetAlertOptions} params */ - var setInputLabel = function setInputLabel(input, prependTo, params) { + const setInputLabel = (input, prependTo, params) => { if (params.inputLabel) { - var label = document.createElement('label'); - var labelClass = swalClasses['input-label']; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; label.setAttribute('for', input.id); label.className = labelClass; - if (_typeof(params.customClass) === 'object') { + if (typeof params.customClass === 'object') { addClass(label, params.customClass.inputLabel); } label.innerText = params.inputLabel; @@ -1467,34 +1211,39 @@ }; /** - * @param {SweetAlertOptions['input']} inputType - * @returns {HTMLElement} + * @param {SweetAlertInput} inputType + * @returns {HTMLElement | undefined} */ - var getInputContainer = function getInputContainer(inputType) { - return getDirectChildByClass(getPopup(), swalClasses[inputType] || swalClasses.input); + const getInputContainer = inputType => { + const popup = getPopup(); + if (!popup) { + return; + } + return getDirectChildByClass(popup, swalClasses[(/** @type {SwalClass} */inputType)] || swalClasses.input); }; /** * @param {HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement} input * @param {SweetAlertOptions['inputValue']} inputValue */ - var checkAndSetInputValue = function checkAndSetInputValue(input, inputValue) { - if (['string', 'number'].includes(_typeof(inputValue))) { - input.value = "".concat(inputValue); + const checkAndSetInputValue = (input, inputValue) => { + if (['string', 'number'].includes(typeof inputValue)) { + input.value = `${inputValue}`; } else if (!isPromise(inputValue)) { - warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(_typeof(inputValue), "\"")); + warn(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof inputValue}"`); } }; /** @type {Record Input>} */ - var renderInputType = {}; + const renderInputType = {}; /** * @param {HTMLInputElement} input * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType['datetime-local'] = renderInputType.time = renderInputType.week = renderInputType.month = function (input, params) { + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType['datetime-local'] = renderInputType.time = renderInputType.week = renderInputType.month = /** @type {(input: Input | HTMLElement, params: SweetAlertOptions) => Input} */ + (input, params) => { checkAndSetInputValue(input, params.inputValue); setInputLabel(input, input, params); setInputPlaceholder(input, params); @@ -1507,7 +1256,7 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.file = function (input, params) { + renderInputType.file = (input, params) => { setInputLabel(input, input, params); setInputPlaceholder(input, params); return input; @@ -1518,9 +1267,9 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.range = function (range, params) { - var rangeInput = range.querySelector('input'); - var rangeOutput = range.querySelector('output'); + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); checkAndSetInputValue(rangeInput, params.inputValue); rangeInput.type = params.input; checkAndSetInputValue(rangeOutput, params.inputValue); @@ -1533,10 +1282,10 @@ * @param {SweetAlertOptions} params * @returns {HTMLSelectElement} */ - renderInputType.select = function (select, params) { + renderInputType.select = (select, params) => { select.textContent = ''; if (params.inputPlaceholder) { - var placeholder = document.createElement('option'); + const placeholder = document.createElement('option'); setInnerHtml(placeholder, params.inputPlaceholder); placeholder.value = ''; placeholder.disabled = true; @@ -1551,7 +1300,7 @@ * @param {HTMLInputElement} radio * @returns {HTMLInputElement} */ - renderInputType.radio = function (radio) { + renderInputType.radio = radio => { radio.textContent = ''; return radio; }; @@ -1561,12 +1310,12 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.checkbox = function (checkboxContainer, params) { - var checkbox = getInput$1(getPopup(), 'checkbox'); + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput$1(getPopup(), 'checkbox'); checkbox.value = '1'; checkbox.checked = Boolean(params.inputValue); - var label = checkboxContainer.querySelector('span'); - setInnerHtml(label, params.inputPlaceholder); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder || params.inputLabel); return checkbox; }; @@ -1575,7 +1324,7 @@ * @param {SweetAlertOptions} params * @returns {HTMLTextAreaElement} */ - renderInputType.textarea = function (textarea, params) { + renderInputType.textarea = (textarea, params) => { checkAndSetInputValue(textarea, params.inputValue); setInputPlaceholder(textarea, params); setInputLabel(textarea, textarea, params); @@ -1584,23 +1333,21 @@ * @param {HTMLElement} el * @returns {number} */ - var getMargin = function getMargin(el) { - return parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); - }; + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); // https://github.com/sweetalert2/sweetalert2/issues/2291 - setTimeout(function () { + setTimeout(() => { // https://github.com/sweetalert2/sweetalert2/issues/1699 if ('MutationObserver' in window) { - var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); - var textareaResizeHandler = function textareaResizeHandler() { + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + const textareaResizeHandler = () => { // check if texarea is still in document (i.e. popup wasn't closed in the meantime) if (!document.body.contains(textarea)) { return; } - var textareaWidth = textarea.offsetWidth + getMargin(textarea); + const textareaWidth = textarea.offsetWidth + getMargin(textarea); if (textareaWidth > initialPopupWidth) { - getPopup().style.width = "".concat(textareaWidth, "px"); + getPopup().style.width = `${textareaWidth}px`; } else { applyNumericalStyle(getPopup(), 'width', params.width); } @@ -1618,8 +1365,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderContent = function renderContent(instance, params) { - var htmlContainer = getHtmlContainer(); + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); if (!htmlContainer) { return; } @@ -1649,8 +1396,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderFooter = function renderFooter(instance, params) { - var footer = getFooter(); + const renderFooter = (instance, params) => { + const footer = getFooter(); if (!footer) { return; } @@ -1668,9 +1415,9 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderIcon = function renderIcon(instance, params) { - var innerParams = privateProps.innerParams.get(instance); - var icon = getIcon(); + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); if (!icon) { return; } @@ -1687,7 +1434,7 @@ return; } if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { - error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + error(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${params.icon}"`); hide(icon); return; } @@ -1699,17 +1446,18 @@ // Animate icon addClass(icon, params.showClass && params.showClass.icon); + + // Re-adjust the success icon on system theme change + const colorSchemeQueryList = window.matchMedia('(prefers-color-scheme: dark)'); + colorSchemeQueryList.addEventListener('change', adjustSuccessIconBackgroundColor); }; /** * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var applyStyles = function applyStyles(icon, params) { - for (var _i = 0, _Object$entries = Object.entries(iconTypes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - iconType = _Object$entries$_i[0], - iconClassName = _Object$entries$_i[1]; + const applyStyles = (icon, params) => { + for (const [iconType, iconClassName] of Object.entries(iconTypes)) { if (params.icon !== iconType) { removeClass(icon, iconClassName); } @@ -1727,31 +1475,41 @@ }; // Adjust success icon background color to match the popup background color - var adjustSuccessIconBackgroundColor = function adjustSuccessIconBackgroundColor() { - var popup = getPopup(); + const adjustSuccessIconBackgroundColor = () => { + const popup = getPopup(); if (!popup) { return; } - var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); /** @type {NodeListOf} */ - var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); - for (var i = 0; i < successIconParts.length; i++) { + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + for (let i = 0; i < successIconParts.length; i++) { successIconParts[i].style.backgroundColor = popupBackgroundColor; } }; - var successIconHtml = "\n
    \n \n
    \n
    \n"; - var errorIconHtml = "\n \n \n \n \n"; + const successIconHtml = ` +
    + +
    +
    +`; + const errorIconHtml = ` + + + + +`; /** * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var setContent = function setContent(icon, params) { + const setContent = (icon, params) => { if (!params.icon && !params.iconHtml) { return; } - var oldContent = icon.innerHTML; - var newContent = ''; + let oldContent = icon.innerHTML; + let newContent = ''; if (params.iconHtml) { newContent = iconContent(params.iconHtml); } else if (params.icon === 'success') { @@ -1760,7 +1518,7 @@ } else if (params.icon === 'error') { newContent = errorIconHtml; } else if (params.icon) { - var defaultIconHtml = { + const defaultIconHtml = { question: '?', warning: '!', info: 'i' @@ -1776,14 +1534,13 @@ * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var setColor = function setColor(icon, params) { + const setColor = (icon, params) => { if (!params.iconColor) { return; } icon.style.color = params.iconColor; icon.style.borderColor = params.iconColor; - for (var _i2 = 0, _arr = ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']; _i2 < _arr.length; _i2++) { - var sel = _arr[_i2]; + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { setStyle(icon, sel, 'background-color', params.iconColor); } setStyle(icon, '.swal2-success-ring', 'border-color', params.iconColor); @@ -1793,16 +1550,14 @@ * @param {string} content * @returns {string} */ - var iconContent = function iconContent(content) { - return "
    ").concat(content, "
    "); - }; + const iconContent = content => `
    ${content}
    `; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderImage = function renderImage(instance, params) { - var image = getImage(); + const renderImage = (instance, params) => { + const image = getImage(); if (!image) { return; } @@ -1825,13 +1580,99 @@ applyCustomClass(image, params, 'image'); }; + let dragging = false; + let mousedownX = 0; + let mousedownY = 0; + let initialX = 0; + let initialY = 0; + + /** + * @param {HTMLElement} popup + */ + const addDraggableListeners = popup => { + popup.addEventListener('mousedown', down); + document.body.addEventListener('mousemove', move); + popup.addEventListener('mouseup', up); + popup.addEventListener('touchstart', down); + document.body.addEventListener('touchmove', move); + popup.addEventListener('touchend', up); + }; + + /** + * @param {HTMLElement} popup + */ + const removeDraggableListeners = popup => { + popup.removeEventListener('mousedown', down); + document.body.removeEventListener('mousemove', move); + popup.removeEventListener('mouseup', up); + popup.removeEventListener('touchstart', down); + document.body.removeEventListener('touchmove', move); + popup.removeEventListener('touchend', up); + }; + + /** + * @param {MouseEvent | TouchEvent} event + */ + const down = event => { + const popup = getPopup(); + if (event.target === popup || getIcon().contains(/** @type {HTMLElement} */event.target)) { + dragging = true; + const clientXY = getClientXY(event); + mousedownX = clientXY.clientX; + mousedownY = clientXY.clientY; + initialX = parseInt(popup.style.insetInlineStart) || 0; + initialY = parseInt(popup.style.insetBlockStart) || 0; + addClass(popup, 'swal2-dragging'); + } + }; + + /** + * @param {MouseEvent | TouchEvent} event + */ + const move = event => { + const popup = getPopup(); + if (dragging) { + let { + clientX, + clientY + } = getClientXY(event); + popup.style.insetInlineStart = `${initialX + (clientX - mousedownX)}px`; + popup.style.insetBlockStart = `${initialY + (clientY - mousedownY)}px`; + } + }; + const up = () => { + const popup = getPopup(); + dragging = false; + removeClass(popup, 'swal2-dragging'); + }; + + /** + * @param {MouseEvent | TouchEvent} event + * @returns {{ clientX: number, clientY: number }} + */ + const getClientXY = event => { + let clientX = 0, + clientY = 0; + if (event.type.startsWith('mouse')) { + clientX = /** @type {MouseEvent} */event.clientX; + clientY = /** @type {MouseEvent} */event.clientY; + } else if (event.type.startsWith('touch')) { + clientX = /** @type {TouchEvent} */event.touches[0].clientX; + clientY = /** @type {TouchEvent} */event.touches[0].clientY; + } + return { + clientX, + clientY + }; + }; + /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderPopup = function renderPopup(instance, params) { - var container = getContainer(); - var popup = getPopup(); + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); if (!container || !popup) { return; } @@ -1841,8 +1682,10 @@ if (params.toast) { applyNumericalStyle(container, 'width', params.width); popup.style.width = '100%'; - var loader = getLoader(); - loader && popup.insertBefore(loader, getIcon()); + const loader = getLoader(); + if (loader) { + popup.insertBefore(loader, getIcon()); + } } else { applyNumericalStyle(popup, 'width', params.width); } @@ -1863,16 +1706,23 @@ // Classes addClasses$1(popup, params); + if (params.draggable && !params.toast) { + addClass(popup, swalClasses.draggable); + addDraggableListeners(popup); + } else { + removeClass(popup, swalClasses.draggable); + removeDraggableListeners(popup); + } }; /** * @param {HTMLElement} popup * @param {SweetAlertOptions} params */ - var addClasses$1 = function addClasses(popup, params) { - var showClass = params.showClass || {}; + const addClasses$1 = (popup, params) => { + const showClass = params.showClass || {}; // Default Class + showClass when updating Swal.update({}) - popup.className = "".concat(swalClasses.popup, " ").concat(isVisible$1(popup) ? showClass.popup : ''); + popup.className = `${swalClasses.popup} ${isVisible$1(popup) ? showClass.popup : ''}`; if (params.toast) { addClass([document.documentElement, document.body], swalClasses['toast-shown']); addClass(popup, swalClasses.toast); @@ -1882,13 +1732,14 @@ // Custom class applyCustomClass(popup, params, 'popup'); + // TODO: remove in the next major if (typeof params.customClass === 'string') { addClass(popup, params.customClass); } // Icon class (#1842) if (params.icon) { - addClass(popup, swalClasses["icon-".concat(params.icon)]); + addClass(popup, swalClasses[`icon-${params.icon}`]); } }; @@ -1896,13 +1747,15 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderProgressSteps = function renderProgressSteps(instance, params) { - var progressStepsContainer = getProgressSteps(); + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); if (!progressStepsContainer) { return; } - var progressSteps = params.progressSteps, - currentProgressStep = params.currentProgressStep; + const { + progressSteps, + currentProgressStep + } = params; if (!progressSteps || progressSteps.length === 0 || currentProgressStep === undefined) { hide(progressStepsContainer); return; @@ -1912,14 +1765,14 @@ if (currentProgressStep >= progressSteps.length) { warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); } - progressSteps.forEach(function (step, index) { - var stepEl = createStepElement(step); + progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); progressStepsContainer.appendChild(stepEl); if (index === currentProgressStep) { addClass(stepEl, swalClasses['active-progress-step']); } if (index !== progressSteps.length - 1) { - var lineEl = createLineElement(params); + const lineEl = createLineElement(params); progressStepsContainer.appendChild(lineEl); } }); @@ -1929,8 +1782,8 @@ * @param {string} step * @returns {HTMLLIElement} */ - var createStepElement = function createStepElement(step) { - var stepEl = document.createElement('li'); + const createStepElement = step => { + const stepEl = document.createElement('li'); addClass(stepEl, swalClasses['progress-step']); setInnerHtml(stepEl, step); return stepEl; @@ -1940,8 +1793,8 @@ * @param {SweetAlertOptions} params * @returns {HTMLLIElement} */ - var createLineElement = function createLineElement(params) { - var lineEl = document.createElement('li'); + const createLineElement = params => { + const lineEl = document.createElement('li'); addClass(lineEl, swalClasses['progress-step-line']); if (params.progressStepsDistance) { applyNumericalStyle(lineEl, 'width', params.progressStepsDistance); @@ -1953,8 +1806,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderTitle = function renderTitle(instance, params) { - var title = getTitle(); + const renderTitle = (instance, params) => { + const title = getTitle(); if (!title) { return; } @@ -1975,7 +1828,7 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var render = function render(instance, params) { + const render = (instance, params) => { renderPopup(instance, params); renderContainer(instance, params); renderProgressSteps(instance, params); @@ -1986,23 +1839,24 @@ renderContent(instance, params); renderActions(instance, params); renderFooter(instance, params); - var popup = getPopup(); + const popup = getPopup(); if (typeof params.didRender === 'function' && popup) { params.didRender(popup); } + globalState.eventEmitter.emit('didRender', popup); }; /* * Global function to determine if SweetAlert2 popup is shown */ - var isVisible = function isVisible() { + const isVisible = () => { return isVisible$1(getPopup()); }; /* * Global function to click 'Confirm' button */ - var clickConfirm = function clickConfirm() { + const clickConfirm = () => { var _dom$getConfirmButton; return (_dom$getConfirmButton = getConfirmButton()) === null || _dom$getConfirmButton === void 0 ? void 0 : _dom$getConfirmButton.click(); }; @@ -2010,7 +1864,7 @@ /* * Global function to click 'Deny' button */ - var clickDeny = function clickDeny() { + const clickDeny = () => { var _dom$getDenyButton; return (_dom$getDenyButton = getDenyButton()) === null || _dom$getDenyButton === void 0 ? void 0 : _dom$getDenyButton.click(); }; @@ -2018,7 +1872,7 @@ /* * Global function to click 'Cancel' button */ - var clickCancel = function clickCancel() { + const clickCancel = () => { var _dom$getCancelButton; return (_dom$getCancelButton = getCancelButton()) === null || _dom$getCancelButton === void 0 ? void 0 : _dom$getCancelButton.click(); }; @@ -2026,7 +1880,7 @@ /** @typedef {'cancel' | 'backdrop' | 'close' | 'esc' | 'timer'} DismissReason */ /** @type {Record} */ - var DismissReason = Object.freeze({ + const DismissReason = Object.freeze({ cancel: 'cancel', backdrop: 'backdrop', close: 'close', @@ -2037,7 +1891,7 @@ /** * @param {GlobalState} globalState */ - var removeKeydownHandler = function removeKeydownHandler(globalState) { + const removeKeydownHandler = globalState => { if (globalState.keydownTarget && globalState.keydownHandlerAdded) { globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { capture: globalState.keydownListenerCapture @@ -2051,12 +1905,10 @@ * @param {SweetAlertOptions} innerParams * @param {*} dismissWith */ - var addKeydownHandler = function addKeydownHandler(globalState, innerParams, dismissWith) { + const addKeydownHandler = (globalState, innerParams, dismissWith) => { removeKeydownHandler(globalState); if (!innerParams.toast) { - globalState.keydownHandler = function (e) { - return keydownHandler(innerParams, e, dismissWith); - }; + globalState.keydownHandler = e => keydownHandler(innerParams, e, dismissWith); globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); globalState.keydownListenerCapture = innerParams.keydownListenerCapture; globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { @@ -2070,9 +1922,9 @@ * @param {number} index * @param {number} increment */ - var setFocus = function setFocus(index, increment) { + const setFocus = (index, increment) => { var _dom$getPopup; - var focusableElements = getFocusableElements(); + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match if (focusableElements.length) { index = index + increment; @@ -2091,15 +1943,15 @@ // no visible focusable elements, focus the popup (_dom$getPopup = getPopup()) === null || _dom$getPopup === void 0 || _dom$getPopup.focus(); }; - var arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; - var arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; /** * @param {SweetAlertOptions} innerParams * @param {KeyboardEvent} event * @param {Function} dismissWith */ - var keydownHandler = function keydownHandler(innerParams, event, dismissWith) { + const keydownHandler = (innerParams, event, dismissWith) => { if (!innerParams) { return; // This instance has already been destroyed } @@ -2126,7 +1978,7 @@ } // ARROWS - switch focus between buttons - else if ([].concat(arrowKeysNextButton, arrowKeysPreviousButton).includes(event.key)) { + else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(event.key)) { handleArrows(event.key); } @@ -2140,12 +1992,12 @@ * @param {KeyboardEvent} event * @param {SweetAlertOptions} innerParams */ - var handleEnter = function handleEnter(event, innerParams) { + const handleEnter = (event, innerParams) => { // https://github.com/sweetalert2/sweetalert2/issues/2386 if (!callIfFunction(innerParams.allowEnterKey)) { return; } - var input = getInput$1(getPopup(), innerParams.input); + const input = getInput$1(getPopup(), innerParams.input); if (event.target && input && event.target instanceof HTMLElement && event.target.outerHTML === input.outerHTML) { if (['textarea', 'file'].includes(innerParams.input)) { return; // do not submit @@ -2158,11 +2010,11 @@ /** * @param {KeyboardEvent} event */ - var handleTab = function handleTab(event) { - var targetElement = event.target; - var focusableElements = getFocusableElements(); - var btnIndex = -1; - for (var i = 0; i < focusableElements.length; i++) { + const handleTab = event => { + const targetElement = event.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + for (let i = 0; i < focusableElements.length; i++) { if (targetElement === focusableElements[i]) { btnIndex = i; break; @@ -2185,25 +2037,25 @@ /** * @param {string} key */ - var handleArrows = function handleArrows(key) { - var actions = getActions(); - var confirmButton = getConfirmButton(); - var denyButton = getDenyButton(); - var cancelButton = getCancelButton(); + const handleArrows = key => { + const actions = getActions(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); if (!actions || !confirmButton || !denyButton || !cancelButton) { return; } /** @type HTMLElement[] */ - var buttons = [confirmButton, denyButton, cancelButton]; + const buttons = [confirmButton, denyButton, cancelButton]; if (document.activeElement instanceof HTMLElement && !buttons.includes(document.activeElement)) { return; } - var sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; - var buttonToFocus = document.activeElement; + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + let buttonToFocus = document.activeElement; if (!buttonToFocus) { return; } - for (var i = 0; i < actions.children.length; i++) { + for (let i = 0; i < actions.children.length; i++) { buttonToFocus = buttonToFocus[sibling]; if (!buttonToFocus) { return; @@ -2222,7 +2074,7 @@ * @param {SweetAlertOptions} innerParams * @param {Function} dismissWith */ - var handleEsc = function handleEsc(event, innerParams, dismissWith) { + const handleEsc = (event, innerParams, dismissWith) => { if (callIfFunction(innerParams.allowEscapeKey)) { event.preventDefault(); dismissWith(DismissReason.esc); @@ -2249,10 +2101,10 @@ // elements not within the active modal dialog will not be surfaced if a user opens a screen // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. - var setAriaHidden = function setAriaHidden() { - var container = getContainer(); - var bodyChildren = Array.from(document.body.children); - bodyChildren.forEach(function (el) { + const setAriaHidden = () => { + const container = getContainer(); + const bodyChildren = Array.from(document.body.children); + bodyChildren.forEach(el => { if (el.contains(container)) { return; } @@ -2262,9 +2114,9 @@ el.setAttribute('aria-hidden', 'true'); }); }; - var unsetAriaHidden = function unsetAriaHidden() { - var bodyChildren = Array.from(document.body.children); - bodyChildren.forEach(function (el) { + const unsetAriaHidden = () => { + const bodyChildren = Array.from(document.body.children); + bodyChildren.forEach(el => { if (el.hasAttribute('data-previous-aria-hidden')) { el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden') || ''); el.removeAttribute('data-previous-aria-hidden'); @@ -2275,16 +2127,16 @@ }; // @ts-ignore - var isSafariOrIOS = typeof window !== 'undefined' && !!window.GestureEvent; // true for Safari desktop + all iOS browsers https://stackoverflow.com/a/70585394 + const isSafariOrIOS = typeof window !== 'undefined' && !!window.GestureEvent; // true for Safari desktop + all iOS browsers https://stackoverflow.com/a/70585394 /** * Fix iOS scrolling * http://stackoverflow.com/q/39626302 */ - var iOSfix = function iOSfix() { + const iOSfix = () => { if (isSafariOrIOS && !hasClass(document.body, swalClasses.iosfix)) { - var offset = document.body.scrollTop; - document.body.style.top = "".concat(offset * -1, "px"); + const offset = document.body.scrollTop; + document.body.style.top = `${offset * -1}px`; addClass(document.body, swalClasses.iosfix); lockBodyScroll(); } @@ -2293,23 +2145,23 @@ /** * https://github.com/sweetalert2/sweetalert2/issues/1246 */ - var lockBodyScroll = function lockBodyScroll() { - var container = getContainer(); + const lockBodyScroll = () => { + const container = getContainer(); if (!container) { return; } /** @type {boolean} */ - var preventTouchMove; + let preventTouchMove; /** * @param {TouchEvent} event */ - container.ontouchstart = function (event) { + container.ontouchstart = event => { preventTouchMove = shouldPreventTouchMove(event); }; /** * @param {TouchEvent} event */ - container.ontouchmove = function (event) { + container.ontouchmove = event => { if (preventTouchMove) { event.preventDefault(); event.stopPropagation(); @@ -2321,10 +2173,10 @@ * @param {TouchEvent} event * @returns {boolean} */ - var shouldPreventTouchMove = function shouldPreventTouchMove(event) { - var target = event.target; - var container = getContainer(); - var htmlContainer = getHtmlContainer(); + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + const htmlContainer = getHtmlContainer(); if (!container || !htmlContainer) { return false; } @@ -2352,7 +2204,7 @@ * @param {*} event * @returns {boolean} */ - var isStylus = function isStylus(event) { + const isStylus = event => { return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; }; @@ -2362,12 +2214,12 @@ * @param {TouchEvent} event * @returns {boolean} */ - var isZoom = function isZoom(event) { + const isZoom = event => { return event.touches && event.touches.length > 1; }; - var undoIOSfix = function undoIOSfix() { + const undoIOSfix = () => { if (hasClass(document.body, swalClasses.iosfix)) { - var offset = parseInt(document.body.style.top, 10); + const offset = parseInt(document.body.style.top, 10); removeClass(document.body, swalClasses.iosfix); document.body.style.top = ''; document.body.scrollTop = offset * -1; @@ -2380,11 +2232,11 @@ * * @returns {number} */ - var measureScrollbar = function measureScrollbar() { - var scrollDiv = document.createElement('div'); + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); scrollDiv.className = swalClasses['scrollbar-measure']; document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; document.body.removeChild(scrollDiv); return scrollbarWidth; }; @@ -2393,12 +2245,12 @@ * Remember state in cases where opening and handling a modal will fiddle with it. * @type {number | null} */ - var previousBodyPadding = null; + let previousBodyPadding = null; /** * @param {string} initialBodyOverflow */ - var replaceScrollbarWithPadding = function replaceScrollbarWithPadding(initialBodyOverflow) { + const replaceScrollbarWithPadding = initialBodyOverflow => { // for queues, do not do this more than once if (previousBodyPadding !== null) { return; @@ -2408,12 +2260,12 @@ ) { // add padding so the content doesn't shift after removal of scrollbar previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); - document.body.style.paddingRight = "".concat(previousBodyPadding + measureScrollbar(), "px"); + document.body.style.paddingRight = `${previousBodyPadding + measureScrollbar()}px`; } }; - var undoReplaceScrollbarWithPadding = function undoReplaceScrollbarWithPadding() { + const undoReplaceScrollbarWithPadding = () => { if (previousBodyPadding !== null) { - document.body.style.paddingRight = "".concat(previousBodyPadding, "px"); + document.body.style.paddingRight = `${previousBodyPadding}px`; previousBodyPadding = null; } }; @@ -2428,9 +2280,7 @@ if (isToast()) { triggerDidCloseAndDispose(instance, didClose); } else { - restoreActiveElement(returnFocus).then(function () { - return triggerDidCloseAndDispose(instance, didClose); - }); + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); removeKeydownHandler(globalState); } @@ -2465,8 +2315,8 @@ */ function close(resolveValue) { resolveValue = prepareResolveValue(resolveValue); - var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); - var didClose = triggerClosePopup(this); + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + const didClose = triggerClosePopup(this); if (this.isAwaitingPromise) { // A swal awaiting for a promise (after a click on Confirm or Deny) cannot be dismissed anymore #2335 if (!resolveValue.isDismissed) { @@ -2478,18 +2328,18 @@ swalPromiseResolve(resolveValue); } } - var triggerClosePopup = function triggerClosePopup(instance) { - var popup = getPopup(); + const triggerClosePopup = instance => { + const popup = getPopup(); if (!popup) { return false; } - var innerParams = privateProps.innerParams.get(instance); + const innerParams = privateProps.innerParams.get(instance); if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { return false; } removeClass(popup, innerParams.showClass.popup); addClass(popup, innerParams.hideClass.popup); - var backdrop = getContainer(); + const backdrop = getContainer(); removeClass(backdrop, innerParams.showClass.backdrop); addClass(backdrop, innerParams.hideClass.backdrop); handlePopupAnimation(instance, popup, innerParams); @@ -2500,7 +2350,7 @@ * @param {any} error */ function rejectPromise(error) { - var rejectPromise = privateMethods.swalPromiseReject.get(this); + const rejectPromise = privateMethods.swalPromiseReject.get(this); handleAwaitingPromise(this); if (rejectPromise) { // Reject Swal promise @@ -2511,7 +2361,7 @@ /** * @param {SweetAlert} instance */ - var handleAwaitingPromise = function handleAwaitingPromise(instance) { + const handleAwaitingPromise = instance => { if (instance.isAwaitingPromise) { delete instance.isAwaitingPromise; // The instance might have been previously partly destroyed, we must resume the destroy process in this case #2335 @@ -2525,7 +2375,7 @@ * @param {any} resolveValue * @returns {SweetAlertResult} */ - var prepareResolveValue = function prepareResolveValue(resolveValue) { + const prepareResolveValue = resolveValue => { // When user calls Swal.close() if (typeof resolveValue === 'undefined') { return { @@ -2546,13 +2396,15 @@ * @param {HTMLElement} popup * @param {SweetAlertOptions} innerParams */ - var handlePopupAnimation = function handlePopupAnimation(instance, popup, innerParams) { - var container = getContainer(); + const handlePopupAnimation = (instance, popup, innerParams) => { + var _globalState$eventEmi; + const container = getContainer(); // If animation is supported, animate - var animationIsSupported = animationEndEvent && hasCssAnimation(popup); + const animationIsSupported = hasCssAnimation(popup); if (typeof innerParams.willClose === 'function') { innerParams.willClose(popup); } + (_globalState$eventEmi = globalState.eventEmitter) === null || _globalState$eventEmi === void 0 || _globalState$eventEmi.emit('willClose', popup); if (animationIsSupported) { animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); } else { @@ -2568,28 +2420,35 @@ * @param {boolean} returnFocus * @param {Function} didClose */ - var animatePopup = function animatePopup(instance, popup, container, returnFocus, didClose) { - if (!animationEndEvent) { - return; - } + const animatePopup = (instance, popup, container, returnFocus, didClose) => { globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); - popup.addEventListener(animationEndEvent, function (e) { + /** + * @param {AnimationEvent | TransitionEvent} e + */ + const swalCloseAnimationFinished = function (e) { if (e.target === popup) { - globalState.swalCloseEventFinishedCallback(); + var _globalState$swalClos; + (_globalState$swalClos = globalState.swalCloseEventFinishedCallback) === null || _globalState$swalClos === void 0 || _globalState$swalClos.call(globalState); delete globalState.swalCloseEventFinishedCallback; + popup.removeEventListener('animationend', swalCloseAnimationFinished); + popup.removeEventListener('transitionend', swalCloseAnimationFinished); } - }); + }; + popup.addEventListener('animationend', swalCloseAnimationFinished); + popup.addEventListener('transitionend', swalCloseAnimationFinished); }; /** * @param {SweetAlert} instance * @param {Function} didClose */ - var triggerDidCloseAndDispose = function triggerDidCloseAndDispose(instance, didClose) { - setTimeout(function () { + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + var _globalState$eventEmi2; if (typeof didClose === 'function') { didClose.bind(instance.params)(); } + (_globalState$eventEmi2 = globalState.eventEmitter) === null || _globalState$eventEmi2 === void 0 || _globalState$eventEmi2.emit('didClose'); // instance might have been destroyed already if (instance._destroy) { instance._destroy(); @@ -2603,16 +2462,16 @@ * * @param {HTMLButtonElement | null} [buttonToReplace] */ - var showLoading = function showLoading(buttonToReplace) { - var popup = getPopup(); + const showLoading = buttonToReplace => { + let popup = getPopup(); if (!popup) { - new Swal(); // eslint-disable-line no-new + new Swal(); } popup = getPopup(); if (!popup) { return; } - var loader = getLoader(); + const loader = getLoader(); if (isToast()) { hide(getIcon()); } else { @@ -2628,9 +2487,9 @@ * @param {HTMLElement} popup * @param {HTMLButtonElement | null} [buttonToReplace] */ - var replaceButton = function replaceButton(popup, buttonToReplace) { - var actions = getActions(); - var loader = getLoader(); + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); if (!actions || !loader) { return; } @@ -2650,12 +2509,10 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputOptionsAndValue = function handleInputOptionsAndValue(instance, params) { + const handleInputOptionsAndValue = (instance, params) => { if (params.input === 'select' || params.input === 'radio') { handleInputOptions(instance, params); - } else if (['text', 'email', 'number', 'tel', 'textarea'].some(function (i) { - return i === params.input; - }) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + } else if (['text', 'email', 'number', 'tel', 'textarea'].some(i => i === params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { showLoading(getConfirmButton()); handleInputValue(instance, params); } @@ -2666,8 +2523,8 @@ * @param {SweetAlertOptions} innerParams * @returns {SweetAlertInputValue} */ - var getInputValue = function getInputValue(instance, innerParams) { - var input = instance.getInput(); + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); if (!input) { return null; } @@ -2687,39 +2544,33 @@ * @param {HTMLInputElement} input * @returns {number} */ - var getCheckboxValue = function getCheckboxValue(input) { - return input.checked ? 1 : 0; - }; + const getCheckboxValue = input => input.checked ? 1 : 0; /** * @param {HTMLInputElement} input * @returns {string | null} */ - var getRadioValue = function getRadioValue(input) { - return input.checked ? input.value : null; - }; + const getRadioValue = input => input.checked ? input.value : null; /** * @param {HTMLInputElement} input * @returns {FileList | File | null} */ - var getFileValue = function getFileValue(input) { - return input.files && input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; - }; + const getFileValue = input => input.files && input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputOptions = function handleInputOptions(instance, params) { - var popup = getPopup(); + const handleInputOptions = (instance, params) => { + const popup = getPopup(); if (!popup) { return; } /** * @param {Record} inputOptions */ - var processInputOptions = function processInputOptions(inputOptions) { + const processInputOptions = inputOptions => { if (params.input === 'select') { populateSelectOptions(popup, formatInputOptions(inputOptions), params); } else if (params.input === 'radio') { @@ -2728,14 +2579,14 @@ }; if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { showLoading(getConfirmButton()); - asPromise(params.inputOptions).then(function (inputOptions) { + asPromise(params.inputOptions).then(inputOptions => { instance.hideLoading(); processInputOptions(inputOptions); }); - } else if (_typeof(params.inputOptions) === 'object') { + } else if (typeof params.inputOptions === 'object') { processInputOptions(params.inputOptions); } else { - error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(_typeof(params.inputOptions))); + error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`); } }; @@ -2743,19 +2594,19 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputValue = function handleInputValue(instance, params) { - var input = instance.getInput(); + const handleInputValue = (instance, params) => { + const input = instance.getInput(); if (!input) { return; } hide(input); - asPromise(params.inputValue).then(function (inputValue) { - input.value = params.input === 'number' ? "".concat(parseFloat(inputValue) || 0) : "".concat(inputValue); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? `${parseFloat(inputValue) || 0}` : `${inputValue}`; show(input); input.focus(); instance.hideLoading(); - })["catch"](function (err) { - error("Error in inputValue promise: ".concat(err)); + }).catch(err => { + error(`Error in inputValue promise: ${err}`); input.value = ''; show(input); input.focus(); @@ -2769,7 +2620,7 @@ * @param {SweetAlertOptions} params */ function populateSelectOptions(popup, inputOptions, params) { - var select = getDirectChildByClass(popup, swalClasses.select); + const select = getDirectChildByClass(popup, swalClasses.select); if (!select) { return; } @@ -2778,29 +2629,27 @@ * @param {string} optionLabel * @param {string} optionValue */ - var renderOption = function renderOption(parent, optionLabel, optionValue) { - var option = document.createElement('option'); + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); option.value = optionValue; setInnerHtml(option, optionLabel); option.selected = isSelected(optionValue, params.inputValue); parent.appendChild(option); }; - inputOptions.forEach(function (inputOption) { - var optionValue = inputOption[0]; - var optionLabel = inputOption[1]; + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." // check whether this is a if (Array.isArray(optionLabel)) { // if it is an array, then it is an - var optgroup = document.createElement('optgroup'); + const optgroup = document.createElement('optgroup'); optgroup.label = optionValue; optgroup.disabled = false; // not configurable for now select.appendChild(optgroup); - optionLabel.forEach(function (o) { - return renderOption(optgroup, o[1], o[0]); - }); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); } else { // case of valueFormatted = formatInputOptions(valueFormatted); } result.push([key, valueFormatted]); }); } else { - Object.keys(inputOptions).forEach(function (key) { - var valueFormatted = inputOptions[key]; - if (_typeof(valueFormatted) === 'object') { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + if (typeof valueFormatted === 'object') { // case of valueFormatted = formatInputOptions(valueFormatted); } @@ -2880,17 +2729,15 @@ * @param {SweetAlertInputValue} inputValue * @returns {boolean} */ - var isSelected = function isSelected(optionValue, inputValue) { + const isSelected = (optionValue, inputValue) => { return !!inputValue && inputValue.toString() === optionValue.toString(); }; - var _this = undefined; - /** * @param {SweetAlert} instance */ - var handleConfirmButtonClick = function handleConfirmButtonClick(instance) { - var innerParams = privateProps.innerParams.get(instance); + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); instance.disableButtons(); if (innerParams.input) { handleConfirmOrDenyWithInput(instance, 'confirm'); @@ -2902,8 +2749,8 @@ /** * @param {SweetAlert} instance */ - var handleDenyButtonClick = function handleDenyButtonClick(instance) { - var innerParams = privateProps.innerParams.get(instance); + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); instance.disableButtons(); if (innerParams.returnInputValueOnDeny) { handleConfirmOrDenyWithInput(instance, 'deny'); @@ -2916,7 +2763,7 @@ * @param {SweetAlert} instance * @param {Function} dismissWith */ - var handleCancelButtonClick = function handleCancelButtonClick(instance, dismissWith) { + const handleCancelButtonClick = (instance, dismissWith) => { instance.disableButtons(); dismissWith(DismissReason.cancel); }; @@ -2925,14 +2772,14 @@ * @param {SweetAlert} instance * @param {'confirm' | 'deny'} type */ - var handleConfirmOrDenyWithInput = function handleConfirmOrDenyWithInput(instance, type) { - var innerParams = privateProps.innerParams.get(instance); + const handleConfirmOrDenyWithInput = (instance, type) => { + const innerParams = privateProps.innerParams.get(instance); if (!innerParams.input) { - error("The \"input\" parameter is needed to be set when using returnInputValueOn".concat(capitalizeFirstLetter(type))); + error(`The "input" parameter is needed to be set when using returnInputValueOn${capitalizeFirstLetter(type)}`); return; } - var input = instance.getInput(); - var inputValue = getInputValue(instance, innerParams); + const input = instance.getInput(); + const inputValue = getInputValue(instance, innerParams); if (innerParams.inputValidator) { handleInputValidator(instance, inputValue, type); } else if (input && !input.checkValidity()) { @@ -2950,13 +2797,11 @@ * @param {SweetAlertInputValue} inputValue * @param {'confirm' | 'deny'} type */ - var handleInputValidator = function handleInputValidator(instance, inputValue, type) { - var innerParams = privateProps.innerParams.get(instance); + const handleInputValidator = (instance, inputValue, type) => { + const innerParams = privateProps.innerParams.get(instance); instance.disableInput(); - var validationPromise = Promise.resolve().then(function () { - return asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)); - }); - validationPromise.then(function (validationMessage) { + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { instance.enableButtons(); instance.enableInput(); if (validationMessage) { @@ -2973,17 +2818,15 @@ * @param {SweetAlert} instance * @param {any} value */ - var deny = function deny(instance, value) { - var innerParams = privateProps.innerParams.get(instance || _this); + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); if (innerParams.showLoaderOnDeny) { showLoading(getDenyButton()); } if (innerParams.preDeny) { instance.isAwaitingPromise = true; // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preDeny's promise is received - var preDenyPromise = Promise.resolve().then(function () { - return asPromise(innerParams.preDeny(value, innerParams.validationMessage)); - }); - preDenyPromise.then(function (preDenyValue) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { if (preDenyValue === false) { instance.hideLoading(); handleAwaitingPromise(instance); @@ -2993,13 +2836,11 @@ value: typeof preDenyValue === 'undefined' ? value : preDenyValue }); } - })["catch"](function (error) { - return rejectWith(instance || _this, error); - }); + }).catch(error => rejectWith(instance || undefined, error)); } else { instance.close({ isDenied: true, - value: value + value }); } }; @@ -3008,10 +2849,10 @@ * @param {SweetAlert} instance * @param {any} value */ - var succeedWith = function succeedWith(instance, value) { + const succeedWith = (instance, value) => { instance.close({ isConfirmed: true, - value: value + value }); }; @@ -3020,7 +2861,7 @@ * @param {SweetAlert} instance * @param {string} error */ - var rejectWith = function rejectWith(instance, error) { + const rejectWith = (instance, error) => { instance.rejectPromise(error); }; @@ -3029,27 +2870,23 @@ * @param {SweetAlert} instance * @param {any} value */ - var confirm = function confirm(instance, value) { - var innerParams = privateProps.innerParams.get(instance || _this); + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); if (innerParams.showLoaderOnConfirm) { showLoading(); } if (innerParams.preConfirm) { instance.resetValidationMessage(); instance.isAwaitingPromise = true; // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preConfirm's promise is received - var preConfirmPromise = Promise.resolve().then(function () { - return asPromise(innerParams.preConfirm(value, innerParams.validationMessage)); - }); - preConfirmPromise.then(function (preConfirmValue) { + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { if (isVisible$1(getValidationMessage()) || preConfirmValue === false) { instance.hideLoading(); handleAwaitingPromise(instance); } else { succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); } - })["catch"](function (error) { - return rejectWith(instance || _this, error); - }); + }).catch(error => rejectWith(instance || undefined, error)); } else { succeedWith(instance, value); } @@ -3060,11 +2897,11 @@ */ function hideLoading() { // do nothing if popup is closed - var innerParams = privateProps.innerParams.get(this); + const innerParams = privateProps.innerParams.get(this); if (!innerParams) { return; } - var domCache = privateProps.domCache.get(this); + const domCache = privateProps.domCache.get(this); hide(domCache.loader); if (isToast()) { if (innerParams.icon) { @@ -3080,8 +2917,8 @@ domCache.denyButton.disabled = false; domCache.cancelButton.disabled = false; } - var showRelatedButton = function showRelatedButton(domCache) { - var buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); if (buttonToReplace.length) { show(buttonToReplace[0], 'inline-block'); } else if (allButtonsAreHidden()) { @@ -3095,8 +2932,8 @@ * @returns {HTMLInputElement | null} */ function getInput() { - var innerParams = privateProps.innerParams.get(this); - var domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); if (!domCache) { return null; } @@ -3109,8 +2946,8 @@ * @param {boolean} disabled */ function setButtonsDisabled(instance, buttons, disabled) { - var domCache = privateProps.domCache.get(instance); - buttons.forEach(function (button) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { domCache[button].disabled = disabled; }); } @@ -3120,14 +2957,14 @@ * @param {boolean} disabled */ function setInputDisabled(input, disabled) { - var popup = getPopup(); + const popup = getPopup(); if (!popup || !input) { return; } if (input.type === 'radio') { /** @type {NodeListOf} */ - var radios = popup.querySelectorAll("[name=\"".concat(swalClasses.radio, "\"]")); - for (var i = 0; i < radios.length; i++) { + const radios = popup.querySelectorAll(`[name="${swalClasses.radio}"]`); + for (let i = 0; i < radios.length; i++) { radios[i].disabled = disabled; } } else { @@ -3174,15 +3011,15 @@ * @this {SweetAlert} */ function showValidationMessage(error) { - var domCache = privateProps.domCache.get(this); - var params = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); setInnerHtml(domCache.validationMessage, error); domCache.validationMessage.className = swalClasses['validation-message']; if (params.customClass && params.customClass.validationMessage) { addClass(domCache.validationMessage, params.customClass.validationMessage); } show(domCache.validationMessage); - var input = this.getInput(); + const input = this.getInput(); if (input) { input.setAttribute('aria-invalid', 'true'); input.setAttribute('aria-describedby', swalClasses['validation-message']); @@ -3197,11 +3034,11 @@ * @this {SweetAlert} */ function resetValidationMessage() { - var domCache = privateProps.domCache.get(this); + const domCache = privateProps.domCache.get(this); if (domCache.validationMessage) { hide(domCache.validationMessage); } - var input = this.getInput(); + const input = this.getInput(); if (input) { input.removeAttribute('aria-invalid'); input.removeAttribute('aria-describedby'); @@ -3209,7 +3046,7 @@ } } - var defaultParams = { + const defaultParams = { title: '', titleText: '', text: '', @@ -3220,7 +3057,9 @@ iconHtml: undefined, template: undefined, toast: false, + draggable: false, animation: true, + theme: 'light', showClass: { popup: 'swal2-show', backdrop: 'swal2-backdrop-show', @@ -3300,11 +3139,13 @@ didDestroy: undefined, scrollbarPadding: true }; - var updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'draggable', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'theme', 'willClose']; - /** @type {Record} */ - var deprecatedParams = {}; - var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** @type {Record} */ + const deprecatedParams = { + allowEnterKey: undefined + }; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'draggable', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; /** * Is valid parameter @@ -3312,7 +3153,7 @@ * @param {string} paramName * @returns {boolean} */ - var isValidParameter = function isValidParameter(paramName) { + const isValidParameter = paramName => { return Object.prototype.hasOwnProperty.call(defaultParams, paramName); }; @@ -3322,7 +3163,7 @@ * @param {string} paramName * @returns {boolean} */ - var isUpdatableParameter = function isUpdatableParameter(paramName) { + const isUpdatableParameter = paramName => { return updatableParams.indexOf(paramName) !== -1; }; @@ -3332,33 +3173,33 @@ * @param {string} paramName * @returns {string | undefined} */ - var isDeprecatedParameter = function isDeprecatedParameter(paramName) { + const isDeprecatedParameter = paramName => { return deprecatedParams[paramName]; }; /** * @param {string} param */ - var checkIfParamIsValid = function checkIfParamIsValid(param) { + const checkIfParamIsValid = param => { if (!isValidParameter(param)) { - warn("Unknown parameter \"".concat(param, "\"")); + warn(`Unknown parameter "${param}"`); } }; /** * @param {string} param */ - var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) { + const checkIfToastParamIsValid = param => { if (toastIncompatibleParams.includes(param)) { - warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + warn(`The parameter "${param}" is incompatible with toasts`); } }; /** * @param {string} param */ - var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) { - var isDeprecated = isDeprecatedParameter(param); + const checkIfParamIsDeprecated = param => { + const isDeprecated = isDeprecatedParameter(param); if (isDeprecated) { warnAboutDeprecation(param, isDeprecated); } @@ -3369,11 +3210,14 @@ * * @param {SweetAlertOptions} params */ - var showWarningsForParams = function showWarningsForParams(params) { + const showWarningsForParams = params => { if (params.backdrop === false && params.allowOutsideClick) { warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); } - for (var param in params) { + if (params.theme && !['light', 'dark', 'auto', 'borderless'].includes(params.theme)) { + warn(`Invalid theme "${params.theme}". Expected "light", "dark", "auto", or "borderless"`); + } + for (const param in params) { checkIfParamIsValid(param); if (params.toast) { checkIfToastParamIsValid(param); @@ -3388,14 +3232,17 @@ * @param {SweetAlertOptions} params */ function update(params) { - var popup = getPopup(); - var innerParams = privateProps.innerParams.get(this); + const container = getContainer(); + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); if (!popup || hasClass(popup, innerParams.hideClass.popup)) { - warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + warn(`You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.`); return; } - var validUpdatableParams = filterValidParams(params); - var updatedParams = Object.assign({}, innerParams, validUpdatableParams); + const validUpdatableParams = filterValidParams(params); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + showWarningsForParams(updatedParams); + container.dataset['swal2Theme'] = updatedParams.theme; render(this, updatedParams); privateProps.innerParams.set(this, updatedParams); Object.defineProperties(this, { @@ -3411,13 +3258,13 @@ * @param {SweetAlertOptions} params * @returns {SweetAlertOptions} */ - var filterValidParams = function filterValidParams(params) { - var validUpdatableParams = {}; - Object.keys(params).forEach(function (param) { + const filterValidParams = params => { + const validUpdatableParams = {}; + Object.keys(params).forEach(param => { if (isUpdatableParameter(param)) { validUpdatableParams[param] = params[param]; } else { - warn("Invalid parameter to update: ".concat(param)); + warn(`Invalid parameter to update: ${param}`); } }); return validUpdatableParams; @@ -3427,8 +3274,8 @@ * Dispose the current SweetAlert2 instance */ function _destroy() { - var domCache = privateProps.domCache.get(this); - var innerParams = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); if (!innerParams) { disposeWeakMaps(this); // The WeakMaps might have been partly destroyed, we must recall it to dispose any remaining WeakMaps #2335 return; // This instance has already been destroyed @@ -3442,13 +3289,14 @@ if (typeof innerParams.didDestroy === 'function') { innerParams.didDestroy(); } + globalState.eventEmitter.emit('didDestroy'); disposeSwal(this); } /** * @param {SweetAlert} instance */ - var disposeSwal = function disposeSwal(instance) { + const disposeSwal = instance => { disposeWeakMaps(instance); // Unset this.params so GC will dispose it (#1569) delete instance.params; @@ -3462,7 +3310,7 @@ /** * @param {SweetAlert} instance */ - var disposeWeakMaps = function disposeWeakMaps(instance) { + const disposeWeakMaps = instance => { // If the current instance is awaiting a promise result, we keep the privateMethods to call them once the promise result is retrieved #2335 if (instance.isAwaitingPromise) { unsetWeakMaps(privateProps, instance); @@ -3495,9 +3343,9 @@ * @param {object} obj * @param {SweetAlert} instance */ - var unsetWeakMaps = function unsetWeakMaps(obj, instance) { - for (var i in obj) { - obj[i]["delete"](instance); + const unsetWeakMaps = (obj, instance) => { + for (const i in obj) { + obj[i].delete(instance); } }; @@ -3527,7 +3375,7 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handlePopupClick = function handlePopupClick(innerParams, domCache, dismissWith) { + const handlePopupClick = (innerParams, domCache, dismissWith) => { if (innerParams.toast) { handleToastClick(innerParams, domCache, dismissWith); } else { @@ -3546,9 +3394,9 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handleToastClick = function handleToastClick(innerParams, domCache, dismissWith) { + const handleToastClick = (innerParams, domCache, dismissWith) => { // Closing toast by internal click - domCache.popup.onclick = function () { + domCache.popup.onclick = () => { if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) { return; } @@ -3560,18 +3408,18 @@ * @param {SweetAlertOptions} innerParams * @returns {boolean} */ - var isAnyButtonShown = function isAnyButtonShown(innerParams) { + const isAnyButtonShown = innerParams => { return !!(innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton); }; - var ignoreOutsideClick = false; + let ignoreOutsideClick = false; /** * @param {DomCache} domCache */ - var handleModalMousedown = function handleModalMousedown(domCache) { - domCache.popup.onmousedown = function () { + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { domCache.container.onmouseup = function (e) { - domCache.container.onmouseup = function () {}; + domCache.container.onmouseup = () => {}; // We only check if the mouseup target is the container because usually it doesn't // have any other direct children aside of the popup if (e.target === domCache.container) { @@ -3584,10 +3432,14 @@ /** * @param {DomCache} domCache */ - var handleContainerMousedown = function handleContainerMousedown(domCache) { - domCache.container.onmousedown = function () { + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = e => { + // prevent the modal text from being selected on double click on the container (allowOutsideClick: false) + if (e.target === domCache.container) { + e.preventDefault(); + } domCache.popup.onmouseup = function (e) { - domCache.popup.onmouseup = function () {}; + domCache.popup.onmouseup = () => {}; // We also need to check if the mouseup target is a child of the popup if (e.target === domCache.popup || e.target instanceof HTMLElement && domCache.popup.contains(e.target)) { ignoreOutsideClick = true; @@ -3601,8 +3453,8 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handleModalClick = function handleModalClick(innerParams, domCache, dismissWith) { - domCache.container.onclick = function (e) { + const handleModalClick = (innerParams, domCache, dismissWith) => { + domCache.container.onclick = e => { if (ignoreOutsideClick) { ignoreOutsideClick = false; return; @@ -3613,23 +3465,19 @@ }; }; - var isJqueryElement = function isJqueryElement(elem) { - return _typeof(elem) === 'object' && elem.jquery; - }; - var isElement = function isElement(elem) { - return elem instanceof Element || isJqueryElement(elem); - }; - var argsToParams = function argsToParams(args) { - var params = {}; - if (_typeof(args[0]) === 'object' && !isElement(args[0])) { + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + const argsToParams = args => { + const params = {}; + if (typeof args[0] === 'object' && !isElement(args[0])) { Object.assign(params, args[0]); } else { - ['title', 'html', 'icon'].forEach(function (name, index) { - var arg = args[index]; + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; if (typeof arg === 'string' || isElement(arg)) { params[name] = arg; } else if (arg !== undefined) { - error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(_typeof(arg))); + error(`Unexpected type of ${name}! Expected "string" or "Element", got ${typeof arg}`); } }); } @@ -3643,11 +3491,10 @@ * @returns {Promise} */ function fire() { - var Swal = this; // eslint-disable-line @typescript-eslint/no-this-alias for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - return _construct(Swal, args); + return new this(...args); } /** @@ -3670,20 +3517,12 @@ * @returns {SweetAlert} */ function mixin(mixinParams) { - var MixinSwal = /*#__PURE__*/function (_this) { - _inherits(MixinSwal, _this); - function MixinSwal() { - _classCallCheck(this, MixinSwal); - return _callSuper(this, MixinSwal, arguments); + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); } - _createClass(MixinSwal, [{ - key: "_main", - value: function _main(params, priorityMixinParams) { - return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, params, Object.assign({}, mixinParams, priorityMixinParams)); - } - }]); - return MixinSwal; - }(this); // @ts-ignore + } + // @ts-ignore return MixinSwal; } @@ -3693,7 +3532,7 @@ * * @returns {number | undefined} */ - var getTimerLeft = function getTimerLeft() { + const getTimerLeft = () => { return globalState.timeout && globalState.timeout.getTimerLeft(); }; @@ -3703,7 +3542,7 @@ * * @returns {number | undefined} */ - var stopTimer = function stopTimer() { + const stopTimer = () => { if (globalState.timeout) { stopTimerProgressBar(); return globalState.timeout.stop(); @@ -3716,9 +3555,9 @@ * * @returns {number | undefined} */ - var resumeTimer = function resumeTimer() { + const resumeTimer = () => { if (globalState.timeout) { - var remaining = globalState.timeout.start(); + const remaining = globalState.timeout.start(); animateTimerProgressBar(remaining); return remaining; } @@ -3730,8 +3569,8 @@ * * @returns {number | undefined} */ - var toggleTimer = function toggleTimer() { - var timer = globalState.timeout; + const toggleTimer = () => { + const timer = globalState.timeout; return timer && (timer.running ? stopTimer() : resumeTimer()); }; @@ -3742,9 +3581,9 @@ * @param {number} ms * @returns {number | undefined} */ - var increaseTimer = function increaseTimer(ms) { + const increaseTimer = ms => { if (globalState.timeout) { - var remaining = globalState.timeout.increase(ms); + const remaining = globalState.timeout.increase(ms); animateTimerProgressBar(remaining, true); return remaining; } @@ -3757,31 +3596,31 @@ * * @returns {boolean} */ - var isTimerRunning = function isTimerRunning() { + const isTimerRunning = () => { return !!(globalState.timeout && globalState.timeout.isRunning()); }; - var bodyClickListenerAdded = false; - var clickHandlers = {}; + let bodyClickListenerAdded = false; + const clickHandlers = {}; /** * @param {string} attr */ function bindClickHandler() { - var attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; + let attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; clickHandlers[attr] = this; if (!bodyClickListenerAdded) { document.body.addEventListener('click', bodyClickListener); bodyClickListenerAdded = true; } } - var bodyClickListener = function bodyClickListener(event) { - for (var el = event.target; el && el !== document; el = el.parentNode) { - for (var attr in clickHandlers) { - var template = el.getAttribute(attr); + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); if (template) { clickHandlers[attr].fire({ - template: template + template }); return; } @@ -3789,6 +3628,141 @@ } }; + // Source: https://gist.github.com/mudge/5830382?permalink_comment_id=2691957#gistcomment-2691957 + + class EventEmitter { + constructor() { + /** @type {Events} */ + this.events = {}; + } + + /** + * @param {string} eventName + * @returns {EventHandlers} + */ + _getHandlersByEventName(eventName) { + if (typeof this.events[eventName] === 'undefined') { + // not Set because we need to keep the FIFO order + // https://github.com/sweetalert2/sweetalert2/pull/2763#discussion_r1748990334 + this.events[eventName] = []; + } + return this.events[eventName]; + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + on(eventName, eventHandler) { + const currentHandlers = this._getHandlersByEventName(eventName); + if (!currentHandlers.includes(eventHandler)) { + currentHandlers.push(eventHandler); + } + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + once(eventName, eventHandler) { + var _this = this; + /** + * @param {Array} args + */ + const onceFn = function () { + _this.removeListener(eventName, onceFn); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + eventHandler.apply(_this, args); + }; + this.on(eventName, onceFn); + } + + /** + * @param {string} eventName + * @param {Array} args + */ + emit(eventName) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + this._getHandlersByEventName(eventName).forEach( + /** + * @param {EventHandler} eventHandler + */ + eventHandler => { + try { + eventHandler.apply(this, args); + } catch (error) { + console.error(error); + } + }); + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + removeListener(eventName, eventHandler) { + const currentHandlers = this._getHandlersByEventName(eventName); + const index = currentHandlers.indexOf(eventHandler); + if (index > -1) { + currentHandlers.splice(index, 1); + } + } + + /** + * @param {string} eventName + */ + removeAllListeners(eventName) { + if (this.events[eventName] !== undefined) { + // https://github.com/sweetalert2/sweetalert2/pull/2763#discussion_r1749239222 + this.events[eventName].length = 0; + } + } + reset() { + this.events = {}; + } + } + + globalState.eventEmitter = new EventEmitter(); + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + const on = (eventName, eventHandler) => { + globalState.eventEmitter.on(eventName, eventHandler); + }; + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + const once = (eventName, eventHandler) => { + globalState.eventEmitter.once(eventName, eventHandler); + }; + + /** + * @param {string} [eventName] + * @param {EventHandler} [eventHandler] + */ + const off = (eventName, eventHandler) => { + // Remove all handlers for all events + if (!eventName) { + globalState.eventEmitter.reset(); + return; + } + if (eventHandler) { + // Remove a specific handler + globalState.eventEmitter.removeListener(eventName, eventHandler); + } else { + // Remove all handlers for a specific event + globalState.eventEmitter.removeAllListeners(eventName); + } + }; + var staticMethods = /*#__PURE__*/Object.freeze({ __proto__: null, argsToParams: argsToParams, @@ -3826,19 +3800,21 @@ isValidParameter: isValidParameter, isVisible: isVisible, mixin: mixin, + off: off, + on: on, + once: once, resumeTimer: resumeTimer, showLoading: showLoading, stopTimer: stopTimer, toggleTimer: toggleTimer }); - var Timer = /*#__PURE__*/function () { + class Timer { /** * @param {Function} callback * @param {number} delay */ - function Timer(callback, delay) { - _classCallCheck(this, Timer); + constructor(callback, delay) { this.callback = callback; this.remaining = delay; this.running = false; @@ -3848,108 +3824,99 @@ /** * @returns {number} */ - _createClass(Timer, [{ - key: "start", - value: function start() { - if (!this.running) { - this.running = true; - this.started = new Date(); - this.id = setTimeout(this.callback, this.remaining); - } - return this.remaining; + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); } + return this.remaining; + } - /** - * @returns {number} - */ - }, { - key: "stop", - value: function stop() { - if (this.started && this.running) { - this.running = false; - clearTimeout(this.id); - this.remaining -= new Date().getTime() - this.started.getTime(); - } - return this.remaining; + /** + * @returns {number} + */ + stop() { + if (this.started && this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date().getTime() - this.started.getTime(); } + return this.remaining; + } - /** - * @param {number} n - * @returns {number} - */ - }, { - key: "increase", - value: function increase(n) { - var running = this.running; - if (running) { - this.stop(); - } - this.remaining += n; - if (running) { - this.start(); - } - return this.remaining; + /** + * @param {number} n + * @returns {number} + */ + increase(n) { + const running = this.running; + if (running) { + this.stop(); } - - /** - * @returns {number} - */ - }, { - key: "getTimerLeft", - value: function getTimerLeft() { - if (this.running) { - this.stop(); - this.start(); - } - return this.remaining; + this.remaining += n; + if (running) { + this.start(); } + return this.remaining; + } - /** - * @returns {boolean} - */ - }, { - key: "isRunning", - value: function isRunning() { - return this.running; + /** + * @returns {number} + */ + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); } - }]); - return Timer; - }(); + return this.remaining; + } - var swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + /** + * @returns {boolean} + */ + isRunning() { + return this.running; + } + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; /** * @param {SweetAlertOptions} params * @returns {SweetAlertOptions} */ - var getTemplateParams = function getTemplateParams(params) { - /** @type {HTMLTemplateElement} */ - var template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? (/** @type {HTMLTemplateElement} */document.querySelector(params.template)) : params.template; if (!template) { return {}; } /** @type {DocumentFragment} */ - var templateContent = template.content; + const templateContent = template.content; showWarningsForElements(templateContent); - var result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + const result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); return result; }; /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalParams = function getSwalParams(templateContent) { - var result = {}; + const getSwalParams = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalParams = Array.from(templateContent.querySelectorAll('swal-param')); - swalParams.forEach(function (param) { + const swalParams = Array.from(templateContent.querySelectorAll('swal-param')); + swalParams.forEach(param => { showWarningsForAttributes(param, ['name', 'value']); - var paramName = param.getAttribute('name'); - var value = param.getAttribute('value'); + const paramName = /** @type {keyof SweetAlertOptions} */param.getAttribute('name'); + const value = param.getAttribute('value'); + if (!paramName || !value) { + return; + } if (typeof defaultParams[paramName] === 'boolean') { result[paramName] = value !== 'false'; - } else if (_typeof(defaultParams[paramName]) === 'object') { + } else if (typeof defaultParams[paramName] === 'object') { result[paramName] = JSON.parse(value); } else { result[paramName] = value; @@ -3960,38 +3927,46 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalFunctionParams = function getSwalFunctionParams(templateContent) { - var result = {}; + const getSwalFunctionParams = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalFunctions = Array.from(templateContent.querySelectorAll('swal-function-param')); - swalFunctions.forEach(function (param) { - var paramName = param.getAttribute('name'); - var value = param.getAttribute('value'); - result[paramName] = new Function("return ".concat(value))(); + const swalFunctions = Array.from(templateContent.querySelectorAll('swal-function-param')); + swalFunctions.forEach(param => { + const paramName = /** @type {keyof SweetAlertOptions} */param.getAttribute('name'); + const value = param.getAttribute('value'); + if (!paramName || !value) { + return; + } + result[paramName] = new Function(`return ${value}`)(); }); return result; }; /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalButtons = function getSwalButtons(templateContent) { - var result = {}; + const getSwalButtons = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalButtons = Array.from(templateContent.querySelectorAll('swal-button')); - swalButtons.forEach(function (button) { + const swalButtons = Array.from(templateContent.querySelectorAll('swal-button')); + swalButtons.forEach(button => { showWarningsForAttributes(button, ['type', 'color', 'aria-label']); - var type = button.getAttribute('type'); - result["".concat(type, "ButtonText")] = button.innerHTML; - result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + const type = button.getAttribute('type'); + if (!type || !['confirm', 'cancel', 'deny'].includes(type)) { + return; + } + result[`${type}ButtonText`] = button.innerHTML; + result[`show${capitalizeFirstLetter(type)}Button`] = true; if (button.hasAttribute('color')) { - result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + result[`${type}ButtonColor`] = button.getAttribute('color'); } if (button.hasAttribute('aria-label')) { - result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + result[`${type}ButtonAriaLabel`] = button.getAttribute('aria-label'); } }); return result; @@ -3999,25 +3974,25 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Pick} */ - var getSwalImage = function getSwalImage(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var image = templateContent.querySelector('swal-image'); + const getSwalImage = templateContent => { + const result = {}; + /** @type {HTMLElement | null} */ + const image = templateContent.querySelector('swal-image'); if (image) { showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); if (image.hasAttribute('src')) { - result.imageUrl = image.getAttribute('src'); + result.imageUrl = image.getAttribute('src') || undefined; } if (image.hasAttribute('width')) { - result.imageWidth = image.getAttribute('width'); + result.imageWidth = image.getAttribute('width') || undefined; } if (image.hasAttribute('height')) { - result.imageHeight = image.getAttribute('height'); + result.imageHeight = image.getAttribute('height') || undefined; } if (image.hasAttribute('alt')) { - result.imageAlt = image.getAttribute('alt'); + result.imageAlt = image.getAttribute('alt') || undefined; } } return result; @@ -4025,17 +4000,15 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalIcon = function getSwalIcon(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var icon = templateContent.querySelector('swal-icon'); + const getSwalIcon = templateContent => { + const result = {}; + /** @type {HTMLElement | null} */ + const icon = templateContent.querySelector('swal-icon'); if (icon) { showWarningsForAttributes(icon, ['type', 'color']); if (icon.hasAttribute('type')) { - /** @type {SweetAlertIcon} */ - // @ts-ignore result.icon = icon.getAttribute('type'); } if (icon.hasAttribute('color')) { @@ -4048,16 +4021,15 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalInput = function getSwalInput(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var input = templateContent.querySelector('swal-input'); + const getSwalInput = templateContent => { + /** @type {Record} */ + const result = {}; + /** @type {HTMLElement | null} */ + const input = templateContent.querySelector('swal-input'); if (input) { showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); - /** @type {SweetAlertInput} */ - // @ts-ignore result.input = input.getAttribute('type') || 'text'; if (input.hasAttribute('label')) { result.inputLabel = input.getAttribute('label'); @@ -4070,13 +4042,16 @@ } } /** @type {HTMLElement[]} */ - var inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option')); + const inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option')); if (inputOptions.length) { result.inputOptions = {}; - inputOptions.forEach(function (option) { + inputOptions.forEach(option => { showWarningsForAttributes(option, ['value']); - var optionValue = option.getAttribute('value'); - var optionName = option.innerHTML; + const optionValue = option.getAttribute('value'); + if (!optionValue) { + return; + } + const optionName = option.innerHTML; result.inputOptions[optionValue] = optionName; }); } @@ -4086,14 +4061,15 @@ /** * @param {DocumentFragment} templateContent * @param {string[]} paramNames - * @returns {SweetAlertOptions} - */ - var getSwalStringParams = function getSwalStringParams(templateContent, paramNames) { - var result = {}; - for (var i in paramNames) { - var paramName = paramNames[i]; - /** @type {HTMLElement} */ - var tag = templateContent.querySelector(paramName); + * @returns {Record} + */ + const getSwalStringParams = (templateContent, paramNames) => { + /** @type {Record} */ + const result = {}; + for (const i in paramNames) { + const paramName = paramNames[i]; + /** @type {HTMLElement | null} */ + const tag = templateContent.querySelector(paramName); if (tag) { showWarningsForAttributes(tag, []); result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); @@ -4105,12 +4081,12 @@ /** * @param {DocumentFragment} templateContent */ - var showWarningsForElements = function showWarningsForElements(templateContent) { - var allowedElements = swalStringParams.concat(['swal-param', 'swal-function-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); - Array.from(templateContent.children).forEach(function (el) { - var tagName = el.tagName.toLowerCase(); + const showWarningsForElements = templateContent => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-function-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + Array.from(templateContent.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); if (!allowedElements.includes(tagName)) { - warn("Unrecognized element <".concat(tagName, ">")); + warn(`Unrecognized element <${tagName}>`); } }); }; @@ -4119,33 +4095,34 @@ * @param {HTMLElement} el * @param {string[]} allowedAttributes */ - var showWarningsForAttributes = function showWarningsForAttributes(el, allowedAttributes) { - Array.from(el.attributes).forEach(function (attribute) { + const showWarningsForAttributes = (el, allowedAttributes) => { + Array.from(el.attributes).forEach(attribute => { if (allowedAttributes.indexOf(attribute.name) === -1) { - warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + warn([`Unrecognized attribute "${attribute.name}" on <${el.tagName.toLowerCase()}>.`, `${allowedAttributes.length ? `Allowed attributes are: ${allowedAttributes.join(', ')}` : 'To set the value, use HTML within the element.'}`]); } }); }; - var SHOW_CLASS_TIMEOUT = 10; + const SHOW_CLASS_TIMEOUT = 10; /** * Open popup, add necessary classes and styles, fix scrollbar * * @param {SweetAlertOptions} params */ - var openPopup = function openPopup(params) { - var container = getContainer(); - var popup = getPopup(); + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); if (typeof params.willOpen === 'function') { params.willOpen(popup); } - var bodyStyles = window.getComputedStyle(document.body); - var initialBodyOverflow = bodyStyles.overflowY; + globalState.eventEmitter.emit('willOpen', popup); + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; addClasses(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' - setTimeout(function () { + setTimeout(() => { setScrollingVisibility(container, popup); }, SHOW_CLASS_TIMEOUT); if (isModal()) { @@ -4156,23 +4133,23 @@ globalState.previousActiveElement = document.activeElement; } if (typeof params.didOpen === 'function') { - setTimeout(function () { - return params.didOpen(popup); - }); + setTimeout(() => params.didOpen(popup)); } + globalState.eventEmitter.emit('didOpen', popup); removeClass(container, swalClasses['no-transition']); }; /** * @param {AnimationEvent} event */ - var swalOpenAnimationFinished = function swalOpenAnimationFinished(event) { - var popup = getPopup(); - if (event.target !== popup || !animationEndEvent) { + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + if (event.target !== popup) { return; } - var container = getContainer(); - popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + const container = getContainer(); + popup.removeEventListener('animationend', swalOpenAnimationFinished); + popup.removeEventListener('transitionend', swalOpenAnimationFinished); container.style.overflowY = 'auto'; }; @@ -4180,10 +4157,11 @@ * @param {HTMLElement} container * @param {HTMLElement} popup */ - var setScrollingVisibility = function setScrollingVisibility(container, popup) { - if (animationEndEvent && hasCssAnimation(popup)) { + const setScrollingVisibility = (container, popup) => { + if (hasCssAnimation(popup)) { container.style.overflowY = 'hidden'; - popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + popup.addEventListener('animationend', swalOpenAnimationFinished); + popup.addEventListener('transitionend', swalOpenAnimationFinished); } else { container.style.overflowY = 'auto'; } @@ -4194,14 +4172,14 @@ * @param {boolean} scrollbarPadding * @param {string} initialBodyOverflow */ - var fixScrollContainer = function fixScrollContainer(container, scrollbarPadding, initialBodyOverflow) { + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { iOSfix(); if (scrollbarPadding && initialBodyOverflow !== 'hidden') { replaceScrollbarWithPadding(initialBodyOverflow); } // sweetalert2/issues/1247 - setTimeout(function () { + setTimeout(() => { container.scrollTop = 0; }); }; @@ -4211,13 +4189,13 @@ * @param {HTMLElement} popup * @param {SweetAlertOptions} params */ - var addClasses = function addClasses(container, popup, params) { + const addClasses = (container, popup, params) => { addClass(container, params.showClass.backdrop); if (params.animation) { // this workaround with opacity is needed for https://github.com/sweetalert2/sweetalert2/issues/2059 popup.style.setProperty('opacity', '0', 'important'); show(popup, 'grid'); - setTimeout(function () { + setTimeout(() => { // Animate popup right after showing it addClass(popup, params.showClass.popup); // and remove the opacity workaround @@ -4238,7 +4216,7 @@ * @param {string} [validationMessage] * @returns {Promise} */ - email: function email(string, validationMessage) { + email: (string, validationMessage) => { return /^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); }, /** @@ -4246,7 +4224,7 @@ * @param {string} [validationMessage] * @returns {Promise} */ - url: function url(string, validationMessage) { + url: (string, validationMessage) => { // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); } @@ -4301,15 +4279,14 @@ } /** @type {SweetAlert} */ - var currentInstance; + let currentInstance; var _promise = /*#__PURE__*/new WeakMap(); - var SweetAlert = /*#__PURE__*/function () { + class SweetAlert { /** * @param {...any} args * @this {SweetAlert} */ - function SweetAlert() { - _classCallCheck(this, SweetAlert); + constructor() { /** * @type {Promise} */ @@ -4324,7 +4301,7 @@ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - var outerParams = Object.freeze(this.constructor.argsToParams(args)); + const outerParams = Object.freeze(this.constructor.argsToParams(args)); /** @type {Readonly} */ this.params = outerParams; @@ -4333,57 +4310,51 @@ this.isAwaitingPromise = false; _classPrivateFieldSet2(_promise, this, this._main(currentInstance.params)); } - _createClass(SweetAlert, [{ - key: "_main", - value: function _main(userParams) { - var mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - showWarningsForParams(Object.assign({}, mixinParams, userParams)); - if (globalState.currentInstance) { - var swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance); - var isAwaitingPromise = globalState.currentInstance.isAwaitingPromise; - globalState.currentInstance._destroy(); - if (!isAwaitingPromise) { - swalPromiseResolve({ - isDismissed: true - }); - } - if (isModal()) { - unsetAriaHidden(); - } + _main(userParams) { + let mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + if (globalState.currentInstance) { + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance); + const { + isAwaitingPromise + } = globalState.currentInstance; + globalState.currentInstance._destroy(); + if (!isAwaitingPromise) { + swalPromiseResolve({ + isDismissed: true + }); } - globalState.currentInstance = currentInstance; - var innerParams = prepareParams(userParams, mixinParams); - setParameters(innerParams); - Object.freeze(innerParams); - - // clear the previous timer - if (globalState.timeout) { - globalState.timeout.stop(); - delete globalState.timeout; + if (isModal()) { + unsetAriaHidden(); } - - // clear the restore focus timeout - clearTimeout(globalState.restoreFocusTimeout); - var domCache = populateDomCache(currentInstance); - render(currentInstance, innerParams); - privateProps.innerParams.set(currentInstance, innerParams); - return swalPromise(currentInstance, domCache, innerParams); } - - // `catch` cannot be the name of a module export, so we define our thenable methods here instead - }, { - key: "then", - value: function then(onFulfilled) { - return _classPrivateFieldGet2(_promise, this).then(onFulfilled); - } - }, { - key: "finally", - value: function _finally(onFinally) { - return _classPrivateFieldGet2(_promise, this)["finally"](onFinally); + globalState.currentInstance = currentInstance; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); + + // clear the previous timer + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; } - }]); - return SweetAlert; - }(); + + // clear the restore focus timeout + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(currentInstance); + render(currentInstance, innerParams); + privateProps.innerParams.set(currentInstance, innerParams); + return swalPromise(currentInstance, domCache, innerParams); + } + + // `catch` cannot be the name of a module export, so we define our thenable methods here instead + then(onFulfilled) { + return _classPrivateFieldGet2(_promise, this).then(onFulfilled); + } + finally(onFinally) { + return _classPrivateFieldGet2(_promise, this).finally(onFinally); + } + } /** * @param {SweetAlert} instance @@ -4391,30 +4362,30 @@ * @param {SweetAlertOptions} innerParams * @returns {Promise} */ - var swalPromise = function swalPromise(instance, domCache, innerParams) { - return new Promise(function (resolve, reject) { + const swalPromise = (instance, domCache, innerParams) => { + return new Promise((resolve, reject) => { // functions to handle all closings/dismissals /** * @param {DismissReason} dismiss */ - var dismissWith = function dismissWith(dismiss) { + const dismissWith = dismiss => { instance.close({ isDismissed: true, - dismiss: dismiss + dismiss }); }; privateMethods.swalPromiseResolve.set(instance, resolve); privateMethods.swalPromiseReject.set(instance, reject); - domCache.confirmButton.onclick = function () { + domCache.confirmButton.onclick = () => { handleConfirmButtonClick(instance); }; - domCache.denyButton.onclick = function () { + domCache.denyButton.onclick = () => { handleDenyButtonClick(instance); }; - domCache.cancelButton.onclick = function () { + domCache.cancelButton.onclick = () => { handleCancelButtonClick(instance, dismissWith); }; - domCache.closeButton.onclick = function () { + domCache.closeButton.onclick = () => { dismissWith(DismissReason.close); }; handlePopupClick(innerParams, domCache, dismissWith); @@ -4425,7 +4396,7 @@ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) - setTimeout(function () { + setTimeout(() => { domCache.container.scrollTop = 0; }); }); @@ -4436,9 +4407,9 @@ * @param {SweetAlertOptions} mixinParams * @returns {SweetAlertOptions} */ - var prepareParams = function prepareParams(userParams, mixinParams) { - var templateParams = getTemplateParams(userParams); - var params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); if (params.animation === false) { @@ -4454,8 +4425,8 @@ * @param {SweetAlert} instance * @returns {DomCache} */ - var populateDomCache = function populateDomCache(instance) { - var domCache = { + const populateDomCache = instance => { + const domCache = { popup: getPopup(), container: getContainer(), actions: getActions(), @@ -4476,18 +4447,18 @@ * @param {SweetAlertOptions} innerParams * @param {Function} dismissWith */ - var setupTimer = function setupTimer(globalState, innerParams, dismissWith) { - var timerProgressBar = getTimerProgressBar(); + const setupTimer = (globalState, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); hide(timerProgressBar); if (innerParams.timer) { - globalState.timeout = new Timer(function () { + globalState.timeout = new Timer(() => { dismissWith('timer'); delete globalState.timeout; }, innerParams.timer); if (innerParams.timerProgressBar) { show(timerProgressBar); applyCustomClass(timerProgressBar, innerParams, 'timerProgressBar'); - setTimeout(function () { + setTimeout(() => { if (globalState.timeout && globalState.timeout.running) { // timer can be already stopped or unset at this point animateTimerProgressBar(innerParams.timer); @@ -4498,20 +4469,50 @@ }; /** + * Initialize focus in the popup: + * + * 1. If `toast` is `true`, don't steal focus from the document. + * 2. Else if there is an [autofocus] element, focus it. + * 3. Else if `focusConfirm` is `true` and confirm button is visible, focus it. + * 4. Else if `focusDeny` is `true` and deny button is visible, focus it. + * 5. Else if `focusCancel` is `true` and cancel button is visible, focus it. + * 6. Else focus the first focusable element in a popup (if any). + * * @param {DomCache} domCache * @param {SweetAlertOptions} innerParams */ - var initFocus = function initFocus(domCache, innerParams) { + const initFocus = (domCache, innerParams) => { if (innerParams.toast) { return; } + // TODO: this is dumb, remove `allowEnterKey` param in the next major version if (!callIfFunction(innerParams.allowEnterKey)) { + warnAboutDeprecation('allowEnterKey'); blurActiveElement(); return; } - if (!focusButton(domCache, innerParams)) { - setFocus(-1, 1); + if (focusAutofocus(domCache)) { + return; + } + if (focusButton(domCache, innerParams)) { + return; + } + setFocus(-1, 1); + }; + + /** + * @param {DomCache} domCache + * @returns {boolean} + */ + const focusAutofocus = domCache => { + const autofocusElements = Array.from(domCache.popup.querySelectorAll('[autofocus]')); + for (const autofocusElement of autofocusElements) { + if (autofocusElement instanceof HTMLElement && isVisible$1(autofocusElement)) { + autofocusElement.focus(); + return true; + } } + return false; }; /** @@ -4519,7 +4520,7 @@ * @param {SweetAlertOptions} innerParams * @returns {boolean} */ - var focusButton = function focusButton(domCache, innerParams) { + const focusButton = (domCache, innerParams) => { if (innerParams.focusDeny && isVisible$1(domCache.denyButton)) { domCache.denyButton.focus(); return true; @@ -4534,7 +4535,7 @@ } return false; }; - var blurActiveElement = function blurActiveElement() { + const blurActiveElement = () => { if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === 'function') { document.activeElement.blur(); } @@ -4542,19 +4543,19 @@ // Dear russian users visiting russian sites. Let's have fun. if (typeof window !== 'undefined' && /^ru\b/.test(navigator.language) && location.host.match(/\.(ru|su|by|xn--p1ai)$/)) { - var now = new Date(); - var initiationDate = localStorage.getItem('swal-initiation'); + const now = new Date(); + const initiationDate = localStorage.getItem('swal-initiation'); if (!initiationDate) { - localStorage.setItem('swal-initiation', "".concat(now)); + localStorage.setItem('swal-initiation', `${now}`); } else if ((now.getTime() - Date.parse(initiationDate)) / (1000 * 60 * 60 * 24) > 3) { - setTimeout(function () { + setTimeout(() => { document.body.style.pointerEvents = 'none'; - var ukrainianAnthem = document.createElement('audio'); + const ukrainianAnthem = document.createElement('audio'); ukrainianAnthem.src = 'https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3'; ukrainianAnthem.loop = true; document.body.appendChild(ukrainianAnthem); - setTimeout(function () { - ukrainianAnthem.play()["catch"](function () { + setTimeout(() => { + ukrainianAnthem.play().catch(() => { // ignore }); }, 2500); @@ -4584,28 +4585,27 @@ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility - Object.keys(instanceMethods).forEach(function (key) { + Object.keys(instanceMethods).forEach(key => { /** * @param {...any} args * @returns {any | undefined} */ SweetAlert[key] = function () { if (currentInstance && currentInstance[key]) { - var _currentInstance; - return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments); + return currentInstance[key](...arguments); } return null; }; }); SweetAlert.DismissReason = DismissReason; - SweetAlert.version = '11.10.7'; + SweetAlert.version = '11.17.2'; - var Swal = SweetAlert; + const Swal = SweetAlert; // @ts-ignore - Swal["default"] = Swal; + Swal.default = Swal; return Swal; })); if (typeof this !== 'undefined' && this.Sweetalert2){this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2} -"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:rgba(0,0,0,.4)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em;text-align:center}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em}div:where(.swal2-container) button:where(.swal2-close){z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) .swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:#fff}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#facea8;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#9de0f6;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#c9dae1;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}"); \ No newline at end of file +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,":root{--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-footer-border-color: #eee;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-input-background: transparent;--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):focus-visible{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):focus-visible{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):focus-visible{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus-visible{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);color:inherit;font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:var(--swal2-border-radius);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:1em 1.6em .3em;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:var(--swal2-input-background);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:var(--swal2-background);box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}"); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js index bc4eaed84..f68a4b730 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.all.min.js @@ -1,6 +1,6 @@ /*! -* sweetalert2 v11.10.7 +* sweetalert2 v11.17.2 * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Sweetalert2=e()}(this,(function(){"use strict";function t(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function e(t,e,n){return e=s(e),function(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,n||[],s(t).constructor):e.apply(t,n))}function n(e,n){return e.get(t(e,n))}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(o=function(){return!!t})()}function i(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,o=new Array(e);no?1:n .").concat(w[e]));case"checkbox":return t.querySelector(".".concat(w.popup," > .").concat(w.checkbox," input"));case"radio":return t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:checked"))||t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:first-child"));case"range":return t.querySelector(".".concat(w.popup," > .").concat(w.range," input"));default:return t.querySelector(".".concat(w.popup," > .").concat(w.input))}},ot=function(t){if(t.focus(),"file"!==t.type){var e=t.value;t.value="",t.value=e}},it=function(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach((function(e){Array.isArray(t)?t.forEach((function(t){n?t.classList.add(e):t.classList.remove(e)})):n?t.classList.add(e):t.classList.remove(e)})))},rt=function(t,e){it(t,e,!0)},at=function(t,e){it(t,e,!1)},ct=function(t,e){for(var n=Array.from(t.children),o=0;o1&&void 0!==arguments[1]?arguments[1]:"flex";t&&(t.style.display=e)},lt=function(t){t&&(t.style.display="none")},dt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t&&new MutationObserver((function(){pt(t,t.innerHTML,e)})).observe(t,{childList:!0,subtree:!0})},ft=function(t,e,n,o){var i=t.querySelector(e);i&&i.style.setProperty(n,o)},pt=function(t,e){e?st(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):lt(t)},mt=function(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))},ht=function(t){return!!(t.scrollHeight>t.clientHeight)},vt=function(t){var e=window.getComputedStyle(t),n=parseFloat(e.getPropertyValue("animation-duration")||"0"),o=parseFloat(e.getPropertyValue("transition-duration")||"0");return n>0||o>0},gt=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Z();n&&mt(n)&&(e&&(n.style.transition="none",n.style.width="100%"),setTimeout((function(){n.style.transition="width ".concat(t/1e3,"s linear"),n.style.width="0%"}),10))},bt=function(){return"undefined"==typeof window||"undefined"==typeof document},yt='\n
    \n \n
      \n
      \n \n

      \n
      \n \n \n
      \n \n \n
      \n \n
      \n \n \n
      \n
      \n
      \n \n \n \n
      \n
      \n
      \n
      \n
      \n
      \n').replace(/(^|\n)\s*/g,""),wt=function(){g.currentInstance.resetValidationMessage()},Ct=function(t){var e,n=!!(e=j())&&(e.remove(),at([document.documentElement,document.body],[w["no-backdrop"],w["toast-shown"],w["has-column"]]),!0);if(bt())P("SweetAlert2 requires document to initialize");else{var o=document.createElement("div");o.className=w.container,n&&rt(o,w["no-transition"]),Q(o,yt);var i,r,a,c,u,s,l,d,f,p="string"==typeof(i=t.target)?document.querySelector(i):i;p.appendChild(o),function(t){var e=H();e.setAttribute("role",t.toast?"alert":"dialog"),e.setAttribute("aria-live",t.toast?"polite":"assertive"),t.toast||e.setAttribute("aria-modal","true")}(t),function(t){"rtl"===window.getComputedStyle(t).direction&&rt(j(),w.rtl)}(p),r=H(),a=ct(r,w.input),c=ct(r,w.file),u=r.querySelector(".".concat(w.range," input")),s=r.querySelector(".".concat(w.range," output")),l=ct(r,w.select),d=r.querySelector(".".concat(w.checkbox," input")),f=ct(r,w.textarea),a.oninput=wt,c.onchange=wt,l.onchange=wt,d.onchange=wt,f.oninput=wt,u.oninput=function(){wt(),s.value=u.value},u.onchange=function(){wt(),s.value=u.value}}},At=function(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?kt(t,e):t&&Q(e,t)},kt=function(t,e){t.jquery?Et(e,t):Q(e,t.toString())},Et=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Pt=function(){if(bt())return!1;var t=document.createElement("div");return void 0!==t.style.webkitAnimation?"webkitAnimationEnd":void 0!==t.style.animation&&"animationend"}(),Bt=function(t,e){var n=K(),o=W();n&&o&&(e.showConfirmButton||e.showDenyButton||e.showCancelButton?st(n):lt(n),et(n,e,"actions"),function(t,e,n){var o=F(),i=z(),r=U();if(!o||!i||!r)return;Tt(o,"confirm",n),Tt(i,"deny",n),Tt(r,"cancel",n),function(t,e,n,o){if(!o.buttonsStyling)return void at([t,e,n],w.styled);rt([t,e,n],w.styled),o.confirmButtonColor&&(t.style.backgroundColor=o.confirmButtonColor,rt(t,w["default-outline"]));o.denyButtonColor&&(e.style.backgroundColor=o.denyButtonColor,rt(e,w["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,rt(n,w["default-outline"]))}(o,i,r,n),n.reverseButtons&&(n.toast?(t.insertBefore(r,o),t.insertBefore(i,o)):(t.insertBefore(r,e),t.insertBefore(i,e),t.insertBefore(o,e)))}(n,o,e),Q(o,e.loaderHtml||""),et(o,e,"loader"))};function Tt(t,e,n){var o=k(e);pt(t,n["show".concat(o,"Button")],"inline-block"),Q(t,n["".concat(e,"ButtonText")]||""),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]||""),t.className=w[e],et(t,n,"".concat(e,"Button"))}var xt=function(t,e){var n=j();n&&(!function(t,e){"string"==typeof e?t.style.background=e:e||rt([document.documentElement,document.body],w["no-backdrop"])}(n,e.backdrop),function(t,e){if(!e)return;e in w?rt(t,w[e]):(E('The "position" parameter is not valid, defaulting to "center"'),rt(t,w.center))}(n,e.position),function(t,e){if(!e)return;rt(t,w["grow-".concat(e)])}(n,e.grow),et(n,e,"container"))};var St={innerParams:new WeakMap,domCache:new WeakMap},Ot=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(t.input)if(Vt[t.input]){var e=Dt(t.input),n=Vt[t.input](e,t);st(e),t.inputAutoFocus&&setTimeout((function(){ot(n)}))}else P("Unexpected type of input! Expected ".concat(Object.keys(Vt).join(" | "),', got "').concat(t.input,'"'))},jt=function(t,e){var n=nt(H(),t);if(n)for(var o in function(t){for(var e=0;en?H().style.width="".concat(i,"px"):ut(H(),"width",e.width)}})).observe(t,{attributes:!0,attributeFilter:["style"]})}})),t};var _t=function(t,e){var n=V();n&&(dt(n),et(n,e,"htmlContainer"),e.html?(At(e.html,n),st(n,"block")):e.text?(n.textContent=e.text,st(n,"block")):lt(n),function(t,e){var n=H();if(n){var o=St.innerParams.get(t),i=!o||e.input!==o.input;Ot.forEach((function(t){var o=ct(n,w[t]);o&&(jt(t,e.inputAttributes),o.className=w[t],i&<(o))})),e.input&&(i&&Lt(e),Mt(e))}}(t,e))},Rt=function(t,e){for(var n=0,o=Object.entries(C);n\n \n
      \n
      \n',n=n.replace(/ style=".*?"/g,"");else if("error"===e.icon)o='\n \n \n \n \n';else if(e.icon){o=zt({question:"?",warning:"!",info:"i"}[e.icon])}n.trim()!==o.trim()&&Q(t,o)}},Ut=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"")},Wt=function(t,e){var n=e.showClass||{};t.className="".concat(w.popup," ").concat(mt(t)?n.popup:""),e.toast?(rt([document.documentElement,document.body],w["toast-shown"]),rt(t,w.toast)):rt(t,w.modal),et(t,e,"popup"),"string"==typeof e.customClass&&rt(t,e.customClass),e.icon&&rt(t,w["icon-".concat(e.icon)])},Kt=function(t){var e=document.createElement("li");return rt(e,w["progress-step"]),Q(e,t),e},Yt=function(t){var e=document.createElement("li");return rt(e,w["progress-step-line"]),t.progressStepsDistance&&ut(e,"width",t.progressStepsDistance),e},Zt=function(t,e){!function(t,e){var n=j(),o=H();if(n&&o){if(e.toast){ut(n,"width",e.width),o.style.width="100%";var i=W();i&&o.insertBefore(i,D())}else ut(o,"width",e.width);ut(o,"padding",e.padding),e.color&&(o.style.color=e.color),e.background&&(o.style.background=e.background),lt(N()),Wt(o,e)}}(0,e),xt(0,e),function(t,e){var n=R();if(n){var o=e.progressSteps,i=e.currentProgressStep;o&&0!==o.length&&void 0!==i?(st(n),n.textContent="",i>=o.length&&E("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.forEach((function(t,r){var a=Kt(t);if(n.appendChild(a),r===i&&rt(a,w["active-progress-step"]),r!==o.length-1){var c=Yt(e);n.appendChild(c)}}))):lt(n)}}(0,e),function(t,e){var n=St.innerParams.get(t),o=D();if(o){if(n&&e.icon===n.icon)return Ft(o,e),void Rt(o,e);if(e.icon||e.iconHtml){if(e.icon&&-1===Object.keys(C).indexOf(e.icon))return P('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"')),void lt(o);st(o),Ft(o,e),Rt(o,e),rt(o,e.showClass&&e.showClass.icon)}else lt(o)}}(t,e),function(t,e){var n=_();n&&(e.imageUrl?(st(n,""),n.setAttribute("src",e.imageUrl),n.setAttribute("alt",e.imageAlt||""),ut(n,"width",e.imageWidth),ut(n,"height",e.imageHeight),n.className=w.image,et(n,e,"image")):lt(n))}(0,e),function(t,e){var n=q();n&&(dt(n),pt(n,e.title||e.titleText,"block"),e.title&&At(e.title,n),e.titleText&&(n.innerText=e.titleText),et(n,e,"title"))}(0,e),function(t,e){var n=$();n&&(Q(n,e.closeButtonHtml||""),et(n,e,"closeButton"),pt(n,e.showCloseButton),n.setAttribute("aria-label",e.closeButtonAriaLabel||""))}(0,e),_t(t,e),Bt(0,e),function(t,e){var n=Y();n&&(dt(n),pt(n,e.footer,"block"),e.footer&&At(e.footer,n),et(n,e,"footer"))}(0,e);var n=H();"function"==typeof e.didRender&&n&&e.didRender(n)},$t=function(){var t;return null===(t=F())||void 0===t?void 0:t.click()},Jt=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Xt=function(t){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1)},Gt=function(t,e){var n,o=J();if(o.length)return(t+=e)===o.length?t=0:-1===t&&(t=o.length-1),void o[t].focus();null===(n=H())||void 0===n||n.focus()},Qt=["ArrowRight","ArrowDown"],te=["ArrowLeft","ArrowUp"],ee=function(t,e,n){t&&(e.isComposing||229===e.keyCode||(t.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?ne(e,t):"Tab"===e.key?oe(e):[].concat(Qt,te).includes(e.key)?ie(e.key):"Escape"===e.key&&re(e,t,n)))},ne=function(t,e){if(x(e.allowEnterKey)){var n=nt(H(),e.input);if(t.target&&n&&t.target instanceof HTMLElement&&t.target.outerHTML===n.outerHTML){if(["textarea","file"].includes(e.input))return;$t(),t.preventDefault()}}},oe=function(t){for(var e=t.target,n=J(),o=-1,i=0;i1},pe=null,me=function(t){null===pe&&(document.body.scrollHeight>window.innerHeight||"scroll"===t)&&(pe=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(pe+function(){var t=document.createElement("div");t.className=w["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))};function he(t,e,n,o){G()?ke(t,o):(b(n).then((function(){return ke(t,o)})),Xt(g)),ue?(e.setAttribute("style","display:none !important"),e.removeAttribute("class"),e.innerHTML=""):e.remove(),X()&&(null!==pe&&(document.body.style.paddingRight="".concat(pe,"px"),pe=null),function(){if(tt(document.body,w.iosfix)){var t=parseInt(document.body.style.top,10);at(document.body,w.iosfix),document.body.style.top="",document.body.scrollTop=-1*t}}(),ce()),at([document.documentElement,document.body],[w.shown,w["height-auto"],w["no-backdrop"],w["toast-shown"]])}function ve(t){t=we(t);var e=ae.swalPromiseResolve.get(this),n=ge(this);this.isAwaitingPromise?t.isDismissed||(ye(this),e(t)):n&&e(t)}var ge=function(t){var e=H();if(!e)return!1;var n=St.innerParams.get(t);if(!n||tt(e,n.hideClass.popup))return!1;at(e,n.showClass.popup),rt(e,n.hideClass.popup);var o=j();return at(o,n.showClass.backdrop),rt(o,n.hideClass.backdrop),Ce(t,e,n),!0};function be(t){var e=ae.swalPromiseReject.get(this);ye(this),e&&e(t)}var ye=function(t){t.isAwaitingPromise&&(delete t.isAwaitingPromise,St.innerParams.get(t)||t._destroy())},we=function(t){return void 0===t?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},t)},Ce=function(t,e,n){var o=j(),i=Pt&&vt(e);"function"==typeof n.willClose&&n.willClose(e),i?Ae(t,e,o,n.returnFocus,n.didClose):he(t,o,n.returnFocus,n.didClose)},Ae=function(t,e,n,o,i){Pt&&(g.swalCloseEventFinishedCallback=he.bind(null,t,n,o,i),e.addEventListener(Pt,(function(t){t.target===e&&(g.swalCloseEventFinishedCallback(),delete g.swalCloseEventFinishedCallback)})))},ke=function(t,e){setTimeout((function(){"function"==typeof e&&e.bind(t.params)(),t._destroy&&t._destroy()}))},Ee=function(t){var e=H();if(e||new io,e=H()){var n=W();G()?lt(D()):Pe(e,t),st(n),e.setAttribute("data-loading","true"),e.setAttribute("aria-busy","true"),e.focus()}},Pe=function(t,e){var n=K(),o=W();n&&o&&(!e&&mt(F())&&(e=F()),st(n),e&&(lt(e),o.setAttribute("data-button-to-replace",e.className),n.insertBefore(o,e)),rt([t,n],w.loading))},Be=function(t){return t.checked?1:0},Te=function(t){return t.checked?t.value:null},xe=function(t){return t.files&&t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},Se=function(t,e){var n=H();if(n){var o=function(t){"select"===e.input?function(t,e,n){var o=ct(t,w.select);if(!o)return;var i=function(t,e,o){var i=document.createElement("option");i.value=o,Q(i,e),i.selected=je(o,n.inputValue),t.appendChild(i)};e.forEach((function(t){var e=t[0],n=t[1];if(Array.isArray(n)){var r=document.createElement("optgroup");r.label=e,r.disabled=!1,o.appendChild(r),n.forEach((function(t){return i(r,t[1],t[0])}))}else i(o,n,e)})),o.focus()}(n,Le(t),e):"radio"===e.input&&function(t,e,n){var o=ct(t,w.radio);if(!o)return;e.forEach((function(t){var e=t[0],i=t[1],r=document.createElement("input"),a=document.createElement("label");r.type="radio",r.name=w.radio,r.value=e,je(e,n.inputValue)&&(r.checked=!0);var c=document.createElement("span");Q(c,i),c.className=w.label,a.appendChild(r),a.appendChild(c),o.appendChild(a)}));var i=o.querySelectorAll("input");i.length&&i[0].focus()}(n,Le(t),e)};S(e.inputOptions)||L(e.inputOptions)?(Ee(F()),O(e.inputOptions).then((function(e){t.hideLoading(),o(e)}))):"object"===r(e.inputOptions)?o(e.inputOptions):P("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(e.inputOptions)))}},Oe=function(t,e){var n=t.getInput();n&&(lt(n),O(e.inputValue).then((function(o){n.value="number"===e.input?"".concat(parseFloat(o)||0):"".concat(o),st(n),n.focus(),t.hideLoading()})).catch((function(e){P("Error in inputValue promise: ".concat(e)),n.value="",st(n),n.focus(),t.hideLoading()})))};var Le=function t(e){var n=[];return e instanceof Map?e.forEach((function(e,o){var i=e;"object"===r(i)&&(i=t(i)),n.push([o,i])})):Object.keys(e).forEach((function(o){var i=e[o];"object"===r(i)&&(i=t(i)),n.push([o,i])})),n},je=function(t,e){return!!e&&e.toString()===t.toString()},Me=void 0,Ie=function(t,e){var n=St.innerParams.get(t);if(n.input){var o=t.getInput(),i=function(t,e){var n=t.getInput();if(!n)return null;switch(e.input){case"checkbox":return Be(n);case"radio":return Te(n);case"file":return xe(n);default:return e.inputAutoTrim?n.value.trim():n.value}}(t,n);n.inputValidator?He(t,i,e):o&&!o.checkValidity()?(t.enableButtons(),t.showValidationMessage(n.validationMessage||o.validationMessage)):"deny"===e?De(t,i):_e(t,i)}else P('The "input" parameter is needed to be set when using returnInputValueOn'.concat(k(e)))},He=function(t,e,n){var o=St.innerParams.get(t);t.disableInput(),Promise.resolve().then((function(){return O(o.inputValidator(e,o.validationMessage))})).then((function(o){t.enableButtons(),t.enableInput(),o?t.showValidationMessage(o):"deny"===n?De(t,e):_e(t,e)}))},De=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnDeny&&Ee(z()),n.preDeny)?(t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preDeny(e,n.validationMessage))})).then((function(n){!1===n?(t.hideLoading(),ye(t)):t.close({isDenied:!0,value:void 0===n?e:n})})).catch((function(e){return Ve(t||Me,e)}))):t.close({isDenied:!0,value:e})},qe=function(t,e){t.close({isConfirmed:!0,value:e})},Ve=function(t,e){t.rejectPromise(e)},_e=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnConfirm&&Ee(),n.preConfirm)?(t.resetValidationMessage(),t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preConfirm(e,n.validationMessage))})).then((function(n){mt(N())||!1===n?(t.hideLoading(),ye(t)):qe(t,void 0===n?e:n)})).catch((function(e){return Ve(t||Me,e)}))):qe(t,e)};function Re(){var t=St.innerParams.get(this);if(t){var e=St.domCache.get(this);lt(e.loader),G()?t.icon&&st(D()):Ne(e),at([e.popup,e.actions],w.loading),e.popup.removeAttribute("aria-busy"),e.popup.removeAttribute("data-loading"),e.confirmButton.disabled=!1,e.denyButton.disabled=!1,e.cancelButton.disabled=!1}}var Ne=function(t){var e=t.popup.getElementsByClassName(t.loader.getAttribute("data-button-to-replace"));e.length?st(e[0],"inline-block"):mt(F())||mt(z())||mt(U())||lt(t.actions)};function Fe(){var t=St.innerParams.get(this),e=St.domCache.get(this);return e?nt(e.popup,t.input):null}function Ue(t,e,n){var o=St.domCache.get(t);e.forEach((function(t){o[t].disabled=n}))}function ze(t,e){var n=H();if(n&&t)if("radio"===t.type)for(var o=n.querySelectorAll('[name="'.concat(w.radio,'"]')),i=0;i0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,En||(document.body.addEventListener("click",Tn),En=!0)},clickCancel:function(){var t;return null===(t=U())||void 0===t?void 0:t.click()},clickConfirm:$t,clickDeny:function(){var t;return null===(t=z())||void 0===t?void 0:t.click()},enableLoading:Ee,fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n"))}))},_n=function(t,e){Array.from(t.attributes).forEach((function(n){-1===e.indexOf(n.name)&&E(['Unrecognized attribute "'.concat(n.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(e.length?"Allowed attributes are: ".concat(e.join(", ")):"To set the value, use HTML within the element.")])}))},Rn=function(t){var e=j(),n=H();"function"==typeof t.willOpen&&t.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;zn(e,n,t),setTimeout((function(){Fn(e,n)}),10),X()&&(Un(e,t.scrollbarPadding,o),function(){var t=j();Array.from(document.body.children).forEach((function(e){e.contains(t)||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")||""),e.setAttribute("aria-hidden","true"))}))}()),G()||g.previousActiveElement||(g.previousActiveElement=document.activeElement),"function"==typeof t.didOpen&&setTimeout((function(){return t.didOpen(n)})),at(e,w["no-transition"])},Nn=function t(e){var n=H();if(e.target===n&&Pt){var o=j();n.removeEventListener(Pt,t),o.style.overflowY="auto"}},Fn=function(t,e){Pt&&vt(e)?(t.style.overflowY="hidden",e.addEventListener(Pt,Nn)):t.style.overflowY="auto"},Un=function(t,e,n){!function(){if(ue&&!tt(document.body,w.iosfix)){var t=document.body.scrollTop;document.body.style.top="".concat(-1*t,"px"),rt(document.body,w.iosfix),se()}}(),e&&"hidden"!==n&&me(n),setTimeout((function(){t.scrollTop=0}))},zn=function(t,e,n){rt(t,n.showClass.backdrop),n.animation?(e.style.setProperty("opacity","0","important"),st(e,"grid"),setTimeout((function(){rt(e,n.showClass.popup),e.style.removeProperty("opacity")}),10)):st(e,"grid"),rt([document.documentElement,document.body],w.shown),n.heightAuto&&n.backdrop&&!n.toast&&rt([document.documentElement,document.body],w["height-auto"])},Wn={email:function(t,e){return/^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function Kn(t){!function(t){t.inputValidator||("email"===t.input&&(t.inputValidator=Wn.email),"url"===t.input&&(t.inputValidator=Wn.url))}(t),t.showLoaderOnConfirm&&!t.preConfirm&&E("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(t){(!t.target||"string"==typeof t.target&&!document.querySelector(t.target)||"string"!=typeof t.target&&!t.target.appendChild)&&(E('Target parameter is not valid, defaulting to "body"'),t.target="body")}(t),"string"==typeof t.title&&(t.title=t.title.split("\n").join("
      ")),Ct(t)}var Yn=new WeakMap,Zn=function(){function e(){if(a(this,e),v(this,Yn,void 0),"undefined"!=typeof window){Bn=this;for(var n=arguments.length,o=new Array(n),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(function(t){for(var e in!1===t.backdrop&&t.allowOutsideClick&&E('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),t)rn(e),t.toast&&an(e),cn(e)}(Object.assign({},e,t)),g.currentInstance){var n=ae.swalPromiseResolve.get(g.currentInstance),o=g.currentInstance.isAwaitingPromise;g.currentInstance._destroy(),o||n({isDismissed:!0}),X()&&ce()}g.currentInstance=Bn;var i=Jn(t,e);Kn(i),Object.freeze(i),g.timeout&&(g.timeout.stop(),delete g.timeout),clearTimeout(g.restoreFocusTimeout);var r=Xn(Bn);return Zt(Bn,i),St.innerParams.set(Bn,i),$n(Bn,r,i)}},{key:"then",value:function(t){return n(Yn,this).then(t)}},{key:"finally",value:function(t){return n(Yn,this).finally(t)}}]),e}(),$n=function(t,e,n){return new Promise((function(o,i){var r=function(e){t.close({isDismissed:!0,dismiss:e})};ae.swalPromiseResolve.set(t,o),ae.swalPromiseReject.set(t,i),e.confirmButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.input?Ie(t,"confirm"):_e(t,!0)}(t)},e.denyButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.returnInputValueOnDeny?Ie(t,"deny"):De(t,!1)}(t)},e.cancelButton.onclick=function(){!function(t,e){t.disableButtons(),e(Jt.cancel)}(t,r)},e.closeButton.onclick=function(){r(Jt.close)},function(t,e,n){t.toast?hn(t,e,n):(bn(e),yn(e),wn(t,e,n))}(n,e,r),function(t,e,n){Xt(t),e.toast||(t.keydownHandler=function(t){return ee(e,t,n)},t.keydownTarget=e.keydownListenerCapture?window:H(),t.keydownListenerCapture=e.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}(g,n,r),function(t,e){"select"===e.input||"radio"===e.input?Se(t,e):["text","email","number","tel","textarea"].some((function(t){return t===e.input}))&&(S(e.inputValue)||L(e.inputValue))&&(Ee(F()),Oe(t,e))}(t,n),Rn(n),Gn(g,n,r),Qn(e,n),setTimeout((function(){e.container.scrollTop=0}))}))},Jn=function(t,e){var n=function(t){var e="string"==typeof t.template?document.querySelector(t.template):t.template;if(!e)return{};var n=e.content;return Vn(n),Object.assign(Ln(n),jn(n),Mn(n),In(n),Hn(n),Dn(n),qn(n,On))}(t),o=Object.assign({},Xe,e,n,t);return o.showClass=Object.assign({},Xe.showClass,o.showClass),o.hideClass=Object.assign({},Xe.hideClass,o.hideClass),!1===o.animation&&(o.showClass={backdrop:"swal2-noanimation"},o.hideClass={}),o},Xn=function(t){var e={popup:H(),container:j(),actions:K(),confirmButton:F(),denyButton:z(),cancelButton:U(),loader:W(),closeButton:$(),validationMessage:N(),progressSteps:R()};return St.domCache.set(t,e),e},Gn=function(t,e,n){var o=Z();lt(o),e.timer&&(t.timeout=new Sn((function(){n("timer"),delete t.timeout}),e.timer),e.timerProgressBar&&(st(o),et(o,e,"timerProgressBar"),setTimeout((function(){t.timeout&&t.timeout.running&>(e.timer)}))))},Qn=function(t,e){e.toast||(x(e.allowEnterKey)?to(t,e)||Gt(-1,1):eo())},to=function(t,e){return e.focusDeny&&mt(t.denyButton)?(t.denyButton.focus(),!0):e.focusCancel&&mt(t.cancelButton)?(t.cancelButton.focus(),!0):!(!e.focusConfirm||!mt(t.confirmButton))&&(t.confirmButton.focus(),!0)},eo=function(){document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){var no=new Date,oo=localStorage.getItem("swal-initiation");oo?(no.getTime()-Date.parse(oo))/864e5>3&&setTimeout((function(){document.body.style.pointerEvents="none";var t=document.createElement("audio");t.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",t.loop=!0,document.body.appendChild(t),setTimeout((function(){t.play().catch((function(){}))}),2500)}),500):localStorage.setItem("swal-initiation","".concat(no))}Zn.prototype.disableButtons=Ke,Zn.prototype.enableButtons=We,Zn.prototype.getInput=Fe,Zn.prototype.disableInput=Ze,Zn.prototype.enableInput=Ye,Zn.prototype.hideLoading=Re,Zn.prototype.disableLoading=Re,Zn.prototype.showValidationMessage=$e,Zn.prototype.resetValidationMessage=Je,Zn.prototype.close=ve,Zn.prototype.closePopup=ve,Zn.prototype.closeModal=ve,Zn.prototype.closeToast=ve,Zn.prototype.rejectPromise=be,Zn.prototype.update=un,Zn.prototype._destroy=ln,Object.assign(Zn,xn),Object.keys(mn).forEach((function(t){Zn[t]=function(){var e;return Bn&&Bn[t]?(e=Bn)[t].apply(e,arguments):null}})),Zn.DismissReason=Jt,Zn.version="11.10.7";var io=Zn;return io.default=io,io})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); -"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,".swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:rgba(0,0,0,.4)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em;text-align:center}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em}div:where(.swal2-container) button:where(.swal2-close){z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) .swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:#fff}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#facea8;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#9de0f6;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#c9dae1;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}"); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Sweetalert2=t()}(this,(function(){"use strict";function e(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function t(t,n){return t.get(e(t,n))}function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}const o={},i=e=>new Promise((t=>{if(!e)return t();const n=window.scrollX,i=window.scrollY;o.restoreFocusTimeout=setTimeout((()=>{o.previousActiveElement instanceof HTMLElement?(o.previousActiveElement.focus(),o.previousActiveElement=null):document.body&&document.body.focus(),t()}),100),window.scrollTo(n,i)})),s="swal2-",r=["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error","draggable","dragging"].reduce(((e,t)=>(e[t]=s+t,e)),{}),a=["success","warning","info","question","error"].reduce(((e,t)=>(e[t]=s+t,e)),{}),l="SweetAlert2:",c=e=>e.charAt(0).toUpperCase()+e.slice(1),u=e=>{console.warn(`${l} ${"object"==typeof e?e.join(" "):e}`)},d=e=>{console.error(`${l} ${e}`)},p=[],m=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;var n;n=`"${e}" is deprecated and will be removed in the next major release.${t?` Use "${t}" instead.`:""}`,p.includes(n)||(p.push(n),u(n))},h=e=>"function"==typeof e?e():e,g=e=>e&&"function"==typeof e.toPromise,f=e=>g(e)?e.toPromise():Promise.resolve(e),b=e=>e&&Promise.resolve(e)===e,y=()=>document.body.querySelector(`.${r.container}`),v=e=>{const t=y();return t?t.querySelector(e):null},w=e=>v(`.${e}`),C=()=>w(r.popup),A=()=>w(r.icon),E=()=>w(r.title),k=()=>w(r["html-container"]),B=()=>w(r.image),L=()=>w(r["progress-steps"]),$=()=>w(r["validation-message"]),x=()=>v(`.${r.actions} .${r.confirm}`),P=()=>v(`.${r.actions} .${r.cancel}`),T=()=>v(`.${r.actions} .${r.deny}`),S=()=>v(`.${r.loader}`),O=()=>w(r.actions),M=()=>w(r.footer),j=()=>w(r["timer-progress-bar"]),H=()=>w(r.close),I=()=>{const e=C();if(!e)return[];const t=e.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'),n=Array.from(t).sort(((e,t)=>{const n=parseInt(e.getAttribute("tabindex")||"0"),o=parseInt(t.getAttribute("tabindex")||"0");return n>o?1:n"-1"!==e.getAttribute("tabindex")));return[...new Set(n.concat(i))].filter((e=>ee(e)))},D=()=>N(document.body,r.shown)&&!N(document.body,r["toast-shown"])&&!N(document.body,r["no-backdrop"]),q=()=>{const e=C();return!!e&&N(e,r.toast)},V=(e,t)=>{if(e.textContent="",t){const n=(new DOMParser).parseFromString(t,"text/html"),o=n.querySelector("head");o&&Array.from(o.childNodes).forEach((t=>{e.appendChild(t)}));const i=n.querySelector("body");i&&Array.from(i.childNodes).forEach((t=>{t instanceof HTMLVideoElement||t instanceof HTMLAudioElement?e.appendChild(t.cloneNode(!0)):e.appendChild(t)}))}},N=(e,t)=>{if(!t)return!1;const n=t.split(/\s+/);for(let t=0;t{if(((e,t)=>{Array.from(e.classList).forEach((n=>{Object.values(r).includes(n)||Object.values(a).includes(n)||Object.values(t.showClass||{}).includes(n)||e.classList.remove(n)}))})(e,t),!t.customClass)return;const o=t.customClass[n];o&&("string"==typeof o||o.forEach?z(e,o):u(`Invalid type of customClass.${n}! Expected string or iterable object, got "${typeof o}"`))},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return e.querySelector(`.${r.popup} > .${r[t]}`);case"checkbox":return e.querySelector(`.${r.popup} > .${r.checkbox} input`);case"radio":return e.querySelector(`.${r.popup} > .${r.radio} input:checked`)||e.querySelector(`.${r.popup} > .${r.radio} input:first-child`);case"range":return e.querySelector(`.${r.popup} > .${r.range} input`);default:return e.querySelector(`.${r.popup} > .${r.input}`)}},R=e=>{if(e.focus(),"file"!==e.type){const t=e.value;e.value="",e.value=t}},U=(e,t,n)=>{e&&t&&("string"==typeof t&&(t=t.split(/\s+/).filter(Boolean)),t.forEach((t=>{Array.isArray(e)?e.forEach((e=>{n?e.classList.add(t):e.classList.remove(t)})):n?e.classList.add(t):e.classList.remove(t)})))},z=(e,t)=>{U(e,t,!0)},W=(e,t)=>{U(e,t,!1)},K=(e,t)=>{const n=Array.from(e.children);for(let e=0;e{n===`${parseInt(n)}`&&(n=parseInt(n)),n||0===parseInt(n)?e.style.setProperty(t,"number"==typeof n?`${n}px`:n):e.style.removeProperty(t)},X=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flex";e&&(e.style.display=t)},Z=e=>{e&&(e.style.display="none")},J=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";e&&new MutationObserver((()=>{Q(e,e.innerHTML,t)})).observe(e,{childList:!0,subtree:!0})},G=(e,t,n,o)=>{const i=e.querySelector(t);i&&i.style.setProperty(n,o)},Q=function(e,t){t?X(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):Z(e)},ee=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),te=e=>!!(e.scrollHeight>e.clientHeight),ne=e=>{const t=window.getComputedStyle(e),n=parseFloat(t.getPropertyValue("animation-duration")||"0"),o=parseFloat(t.getPropertyValue("transition-duration")||"0");return n>0||o>0},oe=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=j();n&&ee(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout((()=>{n.style.transition=`width ${e/1e3}s linear`,n.style.width="0%"}),10))},ie=`\n
      \n \n
        \n
        \n \n

        \n
        \n \n \n
        \n \n \n
        \n \n
        \n \n \n
        \n
        \n
        \n \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n`.replace(/(^|\n)\s*/g,""),se=()=>{o.currentInstance.resetValidationMessage()},re=e=>{const t=(()=>{const e=y();return!!e&&(e.remove(),W([document.documentElement,document.body],[r["no-backdrop"],r["toast-shown"],r["has-column"]]),!0)})();if("undefined"==typeof window||"undefined"==typeof document)return void d("SweetAlert2 requires document to initialize");const n=document.createElement("div");n.className=r.container,t&&z(n,r["no-transition"]),V(n,ie),n.dataset.swal2Theme=e.theme;const o="string"==typeof(i=e.target)?document.querySelector(i):i;var i;o.appendChild(n),(e=>{const t=C();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),(e=>{"rtl"===window.getComputedStyle(e).direction&&z(y(),r.rtl)})(o),(()=>{const e=C(),t=K(e,r.input),n=K(e,r.file),o=e.querySelector(`.${r.range} input`),i=e.querySelector(`.${r.range} output`),s=K(e,r.select),a=e.querySelector(`.${r.checkbox} input`),l=K(e,r.textarea);t.oninput=se,n.onchange=se,s.onchange=se,a.onchange=se,l.oninput=se,o.oninput=()=>{se(),i.value=o.value},o.onchange=()=>{se(),i.value=o.value}})()},ae=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?le(e,t):e&&V(t,e)},le=(e,t)=>{e.jquery?ce(t,e):V(t,e.toString())},ce=(e,t)=>{if(e.textContent="",0 in t)for(let n=0;n in t;n++)e.appendChild(t[n].cloneNode(!0));else e.appendChild(t.cloneNode(!0))},ue=(e,t)=>{const n=O(),o=S();n&&o&&(t.showConfirmButton||t.showDenyButton||t.showCancelButton?X(n):Z(n),_(n,t,"actions"),function(e,t,n){const o=x(),i=T(),s=P();if(!o||!i||!s)return;de(o,"confirm",n),de(i,"deny",n),de(s,"cancel",n),function(e,t,n,o){if(!o.buttonsStyling)return void W([e,t,n],r.styled);z([e,t,n],r.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,z(e,r["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,z(t,r["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,z(n,r["default-outline"]))}(o,i,s,n),n.reverseButtons&&(n.toast?(e.insertBefore(s,o),e.insertBefore(i,o)):(e.insertBefore(s,t),e.insertBefore(i,t),e.insertBefore(o,t)))}(n,o,t),V(o,t.loaderHtml||""),_(o,t,"loader"))};function de(e,t,n){const o=c(t);Q(e,n[`show${o}Button`],"inline-block"),V(e,n[`${t}ButtonText`]||""),e.setAttribute("aria-label",n[`${t}ButtonAriaLabel`]||""),e.className=r[t],_(e,n,`${t}Button`)}const pe=(e,t)=>{const n=y();n&&(!function(e,t){"string"==typeof t?e.style.background=t:t||z([document.documentElement,document.body],r["no-backdrop"])}(n,t.backdrop),function(e,t){if(!t)return;t in r?z(e,r[t]):(u('The "position" parameter is not valid, defaulting to "center"'),z(e,r.center))}(n,t.position),function(e,t){if(!t)return;z(e,r[`grow-${t}`])}(n,t.grow),_(n,t,"container"))};var me={innerParams:new WeakMap,domCache:new WeakMap};const he=["input","file","range","select","radio","checkbox","textarea"],ge=e=>{if(!e.input)return;if(!Ae[e.input])return void d(`Unexpected type of input! Expected ${Object.keys(Ae).join(" | ")}, got "${e.input}"`);const t=we(e.input);if(!t)return;const n=Ae[e.input](t,e);X(t),e.inputAutoFocus&&setTimeout((()=>{R(n)}))},fe=(e,t)=>{const n=C();if(!n)return;const o=F(n,e);if(o){(e=>{for(let t=0;t{if(!e.input)return;const t=we(e.input);t&&_(t,e,"input")},ye=(e,t)=>{!e.placeholder&&t.inputPlaceholder&&(e.placeholder=t.inputPlaceholder)},ve=(e,t,n)=>{if(n.inputLabel){const o=document.createElement("label"),i=r["input-label"];o.setAttribute("for",e.id),o.className=i,"object"==typeof n.customClass&&z(o,n.customClass.inputLabel),o.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",o)}},we=e=>{const t=C();if(t)return K(t,r[e]||r.input)},Ce=(e,t)=>{["string","number"].includes(typeof t)?e.value=`${t}`:b(t)||u(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof t}"`)},Ae={};Ae.text=Ae.email=Ae.password=Ae.number=Ae.tel=Ae.url=Ae.search=Ae.date=Ae["datetime-local"]=Ae.time=Ae.week=Ae.month=(e,t)=>(Ce(e,t.inputValue),ve(e,e,t),ye(e,t),e.type=t.input,e),Ae.file=(e,t)=>(ve(e,e,t),ye(e,t),e),Ae.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return Ce(n,t.inputValue),n.type=t.input,Ce(o,t.inputValue),ve(n,e,t),e},Ae.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return ve(e,e,t),e},Ae.radio=e=>(e.textContent="",e),Ae.checkbox=(e,t)=>{const n=F(C(),"checkbox");n.value="1",n.checked=Boolean(t.inputValue);const o=e.querySelector("span");return V(o,t.inputPlaceholder||t.inputLabel),n},Ae.textarea=(e,t)=>{Ce(e,t.inputValue),ye(e,t),ve(e,e,t);return setTimeout((()=>{if("MutationObserver"in window){const n=parseInt(window.getComputedStyle(C()).width);new MutationObserver((()=>{if(!document.body.contains(e))return;const o=e.offsetWidth+(i=e,parseInt(window.getComputedStyle(i).marginLeft)+parseInt(window.getComputedStyle(i).marginRight));var i;o>n?C().style.width=`${o}px`:Y(C(),"width",t.width)})).observe(e,{attributes:!0,attributeFilter:["style"]})}})),e};const Ee=(e,t)=>{const n=k();n&&(J(n),_(n,t,"htmlContainer"),t.html?(ae(t.html,n),X(n,"block")):t.text?(n.textContent=t.text,X(n,"block")):Z(n),((e,t)=>{const n=C();if(!n)return;const o=me.innerParams.get(e),i=!o||t.input!==o.input;he.forEach((e=>{const o=K(n,r[e]);o&&(fe(e,t.inputAttributes),o.className=r[e],i&&Z(o))})),t.input&&(i&&ge(t),be(t))})(e,t))},ke=(e,t)=>{for(const[n,o]of Object.entries(a))t.icon!==n&&W(e,o);z(e,t.icon&&a[t.icon]),$e(e,t),Be(),_(e,t,"icon")},Be=()=>{const e=C();if(!e)return;const t=window.getComputedStyle(e).getPropertyValue("background-color"),n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{if(!t.icon&&!t.iconHtml)return;let n=e.innerHTML,o="";if(t.iconHtml)o=xe(t.iconHtml);else if("success"===t.icon)o='\n
        \n \n
        \n
        \n',n=n.replace(/ style=".*?"/g,"");else if("error"===t.icon)o='\n \n \n \n \n';else if(t.icon){o=xe({question:"?",warning:"!",info:"i"}[t.icon])}n.trim()!==o.trim()&&V(e,o)},$e=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])G(e,n,"background-color",t.iconColor);G(e,".swal2-success-ring","border-color",t.iconColor)}},xe=e=>`
        ${e}
        `;let Pe=!1,Te=0,Se=0,Oe=0,Me=0;const je=e=>{const t=C();if(e.target===t||A().contains(e.target)){Pe=!0;const n=De(e);Te=n.clientX,Se=n.clientY,Oe=parseInt(t.style.insetInlineStart)||0,Me=parseInt(t.style.insetBlockStart)||0,z(t,"swal2-dragging")}},He=e=>{const t=C();if(Pe){let{clientX:n,clientY:o}=De(e);t.style.insetInlineStart=`${Oe+(n-Te)}px`,t.style.insetBlockStart=`${Me+(o-Se)}px`}},Ie=()=>{const e=C();Pe=!1,W(e,"swal2-dragging")},De=e=>{let t=0,n=0;return e.type.startsWith("mouse")?(t=e.clientX,n=e.clientY):e.type.startsWith("touch")&&(t=e.touches[0].clientX,n=e.touches[0].clientY),{clientX:t,clientY:n}},qe=(e,t)=>{const n=y(),o=C();if(n&&o){if(t.toast){Y(n,"width",t.width),o.style.width="100%";const e=S();e&&o.insertBefore(e,A())}else Y(o,"width",t.width);Y(o,"padding",t.padding),t.color&&(o.style.color=t.color),t.background&&(o.style.background=t.background),Z($()),Ve(o,t),t.draggable&&!t.toast?(z(o,r.draggable),(e=>{e.addEventListener("mousedown",je),document.body.addEventListener("mousemove",He),e.addEventListener("mouseup",Ie),e.addEventListener("touchstart",je),document.body.addEventListener("touchmove",He),e.addEventListener("touchend",Ie)})(o)):(W(o,r.draggable),(e=>{e.removeEventListener("mousedown",je),document.body.removeEventListener("mousemove",He),e.removeEventListener("mouseup",Ie),e.removeEventListener("touchstart",je),document.body.removeEventListener("touchmove",He),e.removeEventListener("touchend",Ie)})(o))}},Ve=(e,t)=>{const n=t.showClass||{};e.className=`${r.popup} ${ee(e)?n.popup:""}`,t.toast?(z([document.documentElement,document.body],r["toast-shown"]),z(e,r.toast)):z(e,r.modal),_(e,t,"popup"),"string"==typeof t.customClass&&z(e,t.customClass),t.icon&&z(e,r[`icon-${t.icon}`])},Ne=e=>{const t=document.createElement("li");return z(t,r["progress-step"]),V(t,e),t},_e=e=>{const t=document.createElement("li");return z(t,r["progress-step-line"]),e.progressStepsDistance&&Y(t,"width",e.progressStepsDistance),t},Fe=(e,t)=>{qe(0,t),pe(0,t),((e,t)=>{const n=L();if(!n)return;const{progressSteps:o,currentProgressStep:i}=t;o&&0!==o.length&&void 0!==i?(X(n),n.textContent="",i>=o.length&&u("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.forEach(((e,s)=>{const a=Ne(e);if(n.appendChild(a),s===i&&z(a,r["active-progress-step"]),s!==o.length-1){const e=_e(t);n.appendChild(e)}}))):Z(n)})(0,t),((e,t)=>{const n=me.innerParams.get(e),o=A();if(!o)return;if(n&&t.icon===n.icon)return Le(o,t),void ke(o,t);if(!t.icon&&!t.iconHtml)return void Z(o);if(t.icon&&-1===Object.keys(a).indexOf(t.icon))return d(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${t.icon}"`),void Z(o);X(o),Le(o,t),ke(o,t),z(o,t.showClass&&t.showClass.icon),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",Be)})(e,t),((e,t)=>{const n=B();n&&(t.imageUrl?(X(n,""),n.setAttribute("src",t.imageUrl),n.setAttribute("alt",t.imageAlt||""),Y(n,"width",t.imageWidth),Y(n,"height",t.imageHeight),n.className=r.image,_(n,t,"image")):Z(n))})(0,t),((e,t)=>{const n=E();n&&(J(n),Q(n,t.title||t.titleText,"block"),t.title&&ae(t.title,n),t.titleText&&(n.innerText=t.titleText),_(n,t,"title"))})(0,t),((e,t)=>{const n=H();n&&(V(n,t.closeButtonHtml||""),_(n,t,"closeButton"),Q(n,t.showCloseButton),n.setAttribute("aria-label",t.closeButtonAriaLabel||""))})(0,t),Ee(e,t),ue(0,t),((e,t)=>{const n=M();n&&(J(n),Q(n,t.footer,"block"),t.footer&&ae(t.footer,n),_(n,t,"footer"))})(0,t);const n=C();"function"==typeof t.didRender&&n&&t.didRender(n),o.eventEmitter.emit("didRender",n)},Re=()=>{var e;return null===(e=x())||void 0===e?void 0:e.click()},Ue=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),ze=e=>{e.keydownTarget&&e.keydownHandlerAdded&&(e.keydownTarget.removeEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!1)},We=(e,t)=>{var n;const o=I();if(o.length)return(e+=t)===o.length?e=0:-1===e&&(e=o.length-1),void o[e].focus();null===(n=C())||void 0===n||n.focus()},Ke=["ArrowRight","ArrowDown"],Ye=["ArrowLeft","ArrowUp"],Xe=(e,t,n)=>{e&&(t.isComposing||229===t.keyCode||(e.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Ze(t,e):"Tab"===t.key?Je(t):[...Ke,...Ye].includes(t.key)?Ge(t.key):"Escape"===t.key&&Qe(t,e,n)))},Ze=(e,t)=>{if(!h(t.allowEnterKey))return;const n=F(C(),t.input);if(e.target&&n&&e.target instanceof HTMLElement&&e.target.outerHTML===n.outerHTML){if(["textarea","file"].includes(t.input))return;Re(),e.preventDefault()}},Je=e=>{const t=e.target,n=I();let o=-1;for(let e=0;e{const t=O(),n=x(),o=T(),i=P();if(!(t&&n&&o&&i))return;const s=[n,o,i];if(document.activeElement instanceof HTMLElement&&!s.includes(document.activeElement))return;const r=Ke.includes(e)?"nextElementSibling":"previousElementSibling";let a=document.activeElement;if(a){for(let e=0;e{h(t.allowEscapeKey)&&(e.preventDefault(),n(Ue.esc))};var et={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap};const tt=()=>{Array.from(document.body.children).forEach((e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")||""),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")}))},nt="undefined"!=typeof window&&!!window.GestureEvent,ot=()=>{const e=y();if(!e)return;let t;e.ontouchstart=e=>{t=it(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},it=e=>{const t=e.target,n=y(),o=k();return!(!n||!o)&&(!st(e)&&!rt(e)&&(t===n||!te(n)&&t instanceof HTMLElement&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&(!te(o)||!o.contains(t))))},st=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,rt=e=>e.touches&&e.touches.length>1;let at=null;const lt=e=>{null===at&&(document.body.scrollHeight>window.innerHeight||"scroll"===e)&&(at=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=`${at+(()=>{const e=document.createElement("div");e.className=r["scrollbar-measure"],document.body.appendChild(e);const t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})()}px`)};function ct(e,t,n,s){q()?bt(e,s):(i(n).then((()=>bt(e,s))),ze(o)),nt?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),D()&&(null!==at&&(document.body.style.paddingRight=`${at}px`,at=null),(()=>{if(N(document.body,r.iosfix)){const e=parseInt(document.body.style.top,10);W(document.body,r.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}})(),tt()),W([document.documentElement,document.body],[r.shown,r["height-auto"],r["no-backdrop"],r["toast-shown"]])}function ut(e){e=ht(e);const t=et.swalPromiseResolve.get(this),n=dt(this);this.isAwaitingPromise?e.isDismissed||(mt(this),t(e)):n&&t(e)}const dt=e=>{const t=C();if(!t)return!1;const n=me.innerParams.get(e);if(!n||N(t,n.hideClass.popup))return!1;W(t,n.showClass.popup),z(t,n.hideClass.popup);const o=y();return W(o,n.showClass.backdrop),z(o,n.hideClass.backdrop),gt(e,t,n),!0};function pt(e){const t=et.swalPromiseReject.get(this);mt(this),t&&t(e)}const mt=e=>{e.isAwaitingPromise&&(delete e.isAwaitingPromise,me.innerParams.get(e)||e._destroy())},ht=e=>void 0===e?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},e),gt=(e,t,n)=>{var i;const s=y(),r=ne(t);"function"==typeof n.willClose&&n.willClose(t),null===(i=o.eventEmitter)||void 0===i||i.emit("willClose",t),r?ft(e,t,s,n.returnFocus,n.didClose):ct(e,s,n.returnFocus,n.didClose)},ft=(e,t,n,i,s)=>{o.swalCloseEventFinishedCallback=ct.bind(null,e,n,i,s);const r=function(e){var n;e.target===t&&(null===(n=o.swalCloseEventFinishedCallback)||void 0===n||n.call(o),delete o.swalCloseEventFinishedCallback,t.removeEventListener("animationend",r),t.removeEventListener("transitionend",r))};t.addEventListener("animationend",r),t.addEventListener("transitionend",r)},bt=(e,t)=>{setTimeout((()=>{var n;"function"==typeof t&&t.bind(e.params)(),null===(n=o.eventEmitter)||void 0===n||n.emit("didClose"),e._destroy&&e._destroy()}))},yt=e=>{let t=C();if(t||new Gn,t=C(),!t)return;const n=S();q()?Z(A()):vt(t,e),X(n),t.setAttribute("data-loading","true"),t.setAttribute("aria-busy","true"),t.focus()},vt=(e,t)=>{const n=O(),o=S();n&&o&&(!t&&ee(x())&&(t=x()),X(n),t&&(Z(t),o.setAttribute("data-button-to-replace",t.className),n.insertBefore(o,t)),z([e,n],r.loading))},wt=e=>e.checked?1:0,Ct=e=>e.checked?e.value:null,At=e=>e.files&&e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,Et=(e,t)=>{const n=C();if(!n)return;const o=e=>{"select"===t.input?function(e,t,n){const o=K(e,r.select);if(!o)return;const i=(e,t,o)=>{const i=document.createElement("option");i.value=o,V(i,t),i.selected=Lt(o,n.inputValue),e.appendChild(i)};t.forEach((e=>{const t=e[0],n=e[1];if(Array.isArray(n)){const e=document.createElement("optgroup");e.label=t,e.disabled=!1,o.appendChild(e),n.forEach((t=>i(e,t[1],t[0])))}else i(o,n,t)})),o.focus()}(n,Bt(e),t):"radio"===t.input&&function(e,t,n){const o=K(e,r.radio);if(!o)return;t.forEach((e=>{const t=e[0],i=e[1],s=document.createElement("input"),a=document.createElement("label");s.type="radio",s.name=r.radio,s.value=t,Lt(t,n.inputValue)&&(s.checked=!0);const l=document.createElement("span");V(l,i),l.className=r.label,a.appendChild(s),a.appendChild(l),o.appendChild(a)}));const i=o.querySelectorAll("input");i.length&&i[0].focus()}(n,Bt(e),t)};g(t.inputOptions)||b(t.inputOptions)?(yt(x()),f(t.inputOptions).then((t=>{e.hideLoading(),o(t)}))):"object"==typeof t.inputOptions?o(t.inputOptions):d("Unexpected type of inputOptions! Expected object, Map or Promise, got "+typeof t.inputOptions)},kt=(e,t)=>{const n=e.getInput();n&&(Z(n),f(t.inputValue).then((o=>{n.value="number"===t.input?`${parseFloat(o)||0}`:`${o}`,X(n),n.focus(),e.hideLoading()})).catch((t=>{d(`Error in inputValue promise: ${t}`),n.value="",X(n),n.focus(),e.hideLoading()})))};const Bt=e=>{const t=[];return e instanceof Map?e.forEach(((e,n)=>{let o=e;"object"==typeof o&&(o=Bt(o)),t.push([n,o])})):Object.keys(e).forEach((n=>{let o=e[n];"object"==typeof o&&(o=Bt(o)),t.push([n,o])})),t},Lt=(e,t)=>!!t&&t.toString()===e.toString(),$t=(e,t)=>{const n=me.innerParams.get(e);if(!n.input)return void d(`The "input" parameter is needed to be set when using returnInputValueOn${c(t)}`);const o=e.getInput(),i=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return wt(n);case"radio":return Ct(n);case"file":return At(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?xt(e,i,t):o&&!o.checkValidity()?(e.enableButtons(),e.showValidationMessage(n.validationMessage||o.validationMessage)):"deny"===t?Pt(e,i):Ot(e,i)},xt=(e,t,n)=>{const o=me.innerParams.get(e);e.disableInput();Promise.resolve().then((()=>f(o.inputValidator(t,o.validationMessage)))).then((o=>{e.enableButtons(),e.enableInput(),o?e.showValidationMessage(o):"deny"===n?Pt(e,t):Ot(e,t)}))},Pt=(e,t)=>{const n=me.innerParams.get(e||void 0);if(n.showLoaderOnDeny&&yt(T()),n.preDeny){e.isAwaitingPromise=!0;Promise.resolve().then((()=>f(n.preDeny(t,n.validationMessage)))).then((n=>{!1===n?(e.hideLoading(),mt(e)):e.close({isDenied:!0,value:void 0===n?t:n})})).catch((t=>St(e||void 0,t)))}else e.close({isDenied:!0,value:t})},Tt=(e,t)=>{e.close({isConfirmed:!0,value:t})},St=(e,t)=>{e.rejectPromise(t)},Ot=(e,t)=>{const n=me.innerParams.get(e||void 0);if(n.showLoaderOnConfirm&&yt(),n.preConfirm){e.resetValidationMessage(),e.isAwaitingPromise=!0;Promise.resolve().then((()=>f(n.preConfirm(t,n.validationMessage)))).then((n=>{ee($())||!1===n?(e.hideLoading(),mt(e)):Tt(e,void 0===n?t:n)})).catch((t=>St(e||void 0,t)))}else Tt(e,t)};function Mt(){const e=me.innerParams.get(this);if(!e)return;const t=me.domCache.get(this);Z(t.loader),q()?e.icon&&X(A()):jt(t),W([t.popup,t.actions],r.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}const jt=e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));t.length?X(t[0],"inline-block"):ee(x())||ee(T())||ee(P())||Z(e.actions)};function Ht(){const e=me.innerParams.get(this),t=me.domCache.get(this);return t?F(t.popup,e.input):null}function It(e,t,n){const o=me.domCache.get(e);t.forEach((e=>{o[e].disabled=n}))}function Dt(e,t){const n=C();if(n&&e)if("radio"===e.type){const e=n.querySelectorAll(`[name="${r.radio}"]`);for(let n=0;nObject.prototype.hasOwnProperty.call(Ut,e),Xt=e=>-1!==zt.indexOf(e),Zt=e=>Wt[e],Jt=e=>{Yt(e)||u(`Unknown parameter "${e}"`)},Gt=e=>{Kt.includes(e)&&u(`The parameter "${e}" is incompatible with toasts`)},Qt=e=>{const t=Zt(e);t&&m(e,t)},en=e=>{!1===e.backdrop&&e.allowOutsideClick&&u('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),e.theme&&!["light","dark","auto","borderless"].includes(e.theme)&&u(`Invalid theme "${e.theme}". Expected "light", "dark", "auto", or "borderless"`);for(const t in e)Jt(t),e.toast&&Gt(t),Qt(t)};function tn(e){const t=y(),n=C(),o=me.innerParams.get(this);if(!n||N(n,o.hideClass.popup))return void u("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const i=nn(e),s=Object.assign({},o,i);en(s),t.dataset.swal2Theme=s.theme,Fe(this,s),me.innerParams.set(this,s),Object.defineProperties(this,{params:{value:Object.assign({},this.params,e),writable:!1,enumerable:!0}})}const nn=e=>{const t={};return Object.keys(e).forEach((n=>{Xt(n)?t[n]=e[n]:u(`Invalid parameter to update: ${n}`)})),t};function on(){const e=me.domCache.get(this),t=me.innerParams.get(this);t?(e.popup&&o.swalCloseEventFinishedCallback&&(o.swalCloseEventFinishedCallback(),delete o.swalCloseEventFinishedCallback),"function"==typeof t.didDestroy&&t.didDestroy(),o.eventEmitter.emit("didDestroy"),sn(this)):rn(this)}const sn=e=>{rn(e),delete e.params,delete o.keydownHandler,delete o.keydownTarget,delete o.currentInstance},rn=e=>{e.isAwaitingPromise?(an(me,e),e.isAwaitingPromise=!0):(an(et,e),an(me,e),delete e.isAwaitingPromise,delete e.disableButtons,delete e.enableButtons,delete e.getInput,delete e.disableInput,delete e.enableInput,delete e.hideLoading,delete e.disableLoading,delete e.showValidationMessage,delete e.resetValidationMessage,delete e.close,delete e.closePopup,delete e.closeModal,delete e.closeToast,delete e.rejectPromise,delete e.update,delete e._destroy)},an=(e,t)=>{for(const n in e)e[n].delete(t)};var ln=Object.freeze({__proto__:null,_destroy:on,close:ut,closeModal:ut,closePopup:ut,closeToast:ut,disableButtons:Vt,disableInput:_t,disableLoading:Mt,enableButtons:qt,enableInput:Nt,getInput:Ht,handleAwaitingPromise:mt,hideLoading:Mt,rejectPromise:pt,resetValidationMessage:Rt,showValidationMessage:Ft,update:tn});const cn=(e,t,n)=>{t.popup.onclick=()=>{e&&(un(e)||e.timer||e.input)||n(Ue.close)}},un=e=>!!(e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton);let dn=!1;const pn=e=>{e.popup.onmousedown=()=>{e.container.onmouseup=function(t){e.container.onmouseup=()=>{},t.target===e.container&&(dn=!0)}}},mn=e=>{e.container.onmousedown=t=>{t.target===e.container&&t.preventDefault(),e.popup.onmouseup=function(t){e.popup.onmouseup=()=>{},(t.target===e.popup||t.target instanceof HTMLElement&&e.popup.contains(t.target))&&(dn=!0)}}},hn=(e,t,n)=>{t.container.onclick=o=>{dn?dn=!1:o.target===t.container&&h(e.allowOutsideClick)&&n(Ue.backdrop)}},gn=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);const fn=()=>{if(o.timeout)return(()=>{const e=j();if(!e)return;const t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";const n=t/parseInt(window.getComputedStyle(e).width)*100;e.style.width=`${n}%`})(),o.timeout.stop()},bn=()=>{if(o.timeout){const e=o.timeout.start();return oe(e),e}};let yn=!1;const vn={};const wn=e=>{for(let t=e.target;t&&t!==document;t=t.parentNode)for(const e in vn){const n=t.getAttribute(e);if(n)return void vn[e].fire({template:n})}};o.eventEmitter=new class{constructor(){this.events={}}_getHandlersByEventName(e){return void 0===this.events[e]&&(this.events[e]=[]),this.events[e]}on(e,t){const n=this._getHandlersByEventName(e);n.includes(t)||n.push(t)}once(e,t){var n=this;const o=function(){n.removeListener(e,o);for(var i=arguments.length,s=new Array(i),r=0;r1?t-1:0),o=1;o{try{e.apply(this,n)}catch(e){console.error(e)}}))}removeListener(e,t){const n=this._getHandlersByEventName(e),o=n.indexOf(t);o>-1&&n.splice(o,1)}removeAllListeners(e){void 0!==this.events[e]&&(this.events[e].length=0)}reset(){this.events={}}};var Cn=Object.freeze({__proto__:null,argsToParams:e=>{const t={};return"object"!=typeof e[0]||gn(e[0])?["title","html","icon"].forEach(((n,o)=>{const i=e[o];"string"==typeof i||gn(i)?t[n]=i:void 0!==i&&d(`Unexpected type of ${n}! Expected "string" or "Element", got ${typeof i}`)})):Object.assign(t,e[0]),t},bindClickHandler:function(){vn[arguments.length>0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,yn||(document.body.addEventListener("click",wn),yn=!0)},clickCancel:()=>{var e;return null===(e=P())||void 0===e?void 0:e.click()},clickConfirm:Re,clickDeny:()=>{var e;return null===(e=T())||void 0===e?void 0:e.click()},enableLoading:yt,fire:function(){for(var e=arguments.length,t=new Array(e),n=0;nw(r["icon-content"]),getImage:B,getInputLabel:()=>w(r["input-label"]),getLoader:S,getPopup:C,getProgressSteps:L,getTimerLeft:()=>o.timeout&&o.timeout.getTimerLeft(),getTimerProgressBar:j,getTitle:E,getValidationMessage:$,increaseTimer:e=>{if(o.timeout){const t=o.timeout.increase(e);return oe(t,!0),t}},isDeprecatedParameter:Zt,isLoading:()=>{const e=C();return!!e&&e.hasAttribute("data-loading")},isTimerRunning:()=>!(!o.timeout||!o.timeout.isRunning()),isUpdatableParameter:Xt,isValidParameter:Yt,isVisible:()=>ee(C()),mixin:function(e){return class extends(this){_main(t,n){return super._main(t,Object.assign({},e,n))}}},off:(e,t)=>{e?t?o.eventEmitter.removeListener(e,t):o.eventEmitter.removeAllListeners(e):o.eventEmitter.reset()},on:(e,t)=>{o.eventEmitter.on(e,t)},once:(e,t)=>{o.eventEmitter.once(e,t)},resumeTimer:bn,showLoading:yt,stopTimer:fn,toggleTimer:()=>{const e=o.timeout;return e&&(e.running?fn():bn())}});class An{constructor(e,t){this.callback=e,this.remaining=t,this.running=!1,this.start()}start(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}stop(){return this.started&&this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}increase(e){const t=this.running;return t&&this.stop(),this.remaining+=e,t&&this.start(),this.remaining}getTimerLeft(){return this.running&&(this.stop(),this.start()),this.remaining}isRunning(){return this.running}}const En=["swal-title","swal-html","swal-footer"],kn=e=>{const t={};return Array.from(e.querySelectorAll("swal-param")).forEach((e=>{On(e,["name","value"]);const n=e.getAttribute("name"),o=e.getAttribute("value");n&&o&&(t[n]="boolean"==typeof Ut[n]?"false"!==o:"object"==typeof Ut[n]?JSON.parse(o):o)})),t},Bn=e=>{const t={};return Array.from(e.querySelectorAll("swal-function-param")).forEach((e=>{const n=e.getAttribute("name"),o=e.getAttribute("value");n&&o&&(t[n]=new Function(`return ${o}`)())})),t},Ln=e=>{const t={};return Array.from(e.querySelectorAll("swal-button")).forEach((e=>{On(e,["type","color","aria-label"]);const n=e.getAttribute("type");n&&["confirm","cancel","deny"].includes(n)&&(t[`${n}ButtonText`]=e.innerHTML,t[`show${c(n)}Button`]=!0,e.hasAttribute("color")&&(t[`${n}ButtonColor`]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(t[`${n}ButtonAriaLabel`]=e.getAttribute("aria-label")))})),t},$n=e=>{const t={},n=e.querySelector("swal-image");return n&&(On(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")||void 0),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")||void 0),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")||void 0),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt")||void 0)),t},xn=e=>{const t={},n=e.querySelector("swal-icon");return n&&(On(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},Pn=e=>{const t={},n=e.querySelector("swal-input");n&&(On(n,["type","label","placeholder","value"]),t.input=n.getAttribute("type")||"text",n.hasAttribute("label")&&(t.inputLabel=n.getAttribute("label")),n.hasAttribute("placeholder")&&(t.inputPlaceholder=n.getAttribute("placeholder")),n.hasAttribute("value")&&(t.inputValue=n.getAttribute("value")));const o=Array.from(e.querySelectorAll("swal-input-option"));return o.length&&(t.inputOptions={},o.forEach((e=>{On(e,["value"]);const n=e.getAttribute("value");if(!n)return;const o=e.innerHTML;t.inputOptions[n]=o}))),t},Tn=(e,t)=>{const n={};for(const o in t){const i=t[o],s=e.querySelector(i);s&&(On(s,[]),n[i.replace(/^swal-/,"")]=s.innerHTML.trim())}return n},Sn=e=>{const t=En.concat(["swal-param","swal-function-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);Array.from(e.children).forEach((e=>{const n=e.tagName.toLowerCase();t.includes(n)||u(`Unrecognized element <${n}>`)}))},On=(e,t)=>{Array.from(e.attributes).forEach((n=>{-1===t.indexOf(n.name)&&u([`Unrecognized attribute "${n.name}" on <${e.tagName.toLowerCase()}>.`,""+(t.length?`Allowed attributes are: ${t.join(", ")}`:"To set the value, use HTML within the element.")])}))},Mn=e=>{const t=y(),n=C();"function"==typeof e.willOpen&&e.willOpen(n),o.eventEmitter.emit("willOpen",n);const i=window.getComputedStyle(document.body).overflowY;Dn(t,n,e),setTimeout((()=>{Hn(t,n)}),10),D()&&(In(t,e.scrollbarPadding,i),(()=>{const e=y();Array.from(document.body.children).forEach((t=>{t.contains(e)||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")||""),t.setAttribute("aria-hidden","true"))}))})()),q()||o.previousActiveElement||(o.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout((()=>e.didOpen(n))),o.eventEmitter.emit("didOpen",n),W(t,r["no-transition"])},jn=e=>{const t=C();if(e.target!==t)return;const n=y();t.removeEventListener("animationend",jn),t.removeEventListener("transitionend",jn),n.style.overflowY="auto"},Hn=(e,t)=>{ne(t)?(e.style.overflowY="hidden",t.addEventListener("animationend",jn),t.addEventListener("transitionend",jn)):e.style.overflowY="auto"},In=(e,t,n)=>{(()=>{if(nt&&!N(document.body,r.iosfix)){const e=document.body.scrollTop;document.body.style.top=-1*e+"px",z(document.body,r.iosfix),ot()}})(),t&&"hidden"!==n&<(n),setTimeout((()=>{e.scrollTop=0}))},Dn=(e,t,n)=>{z(e,n.showClass.backdrop),n.animation?(t.style.setProperty("opacity","0","important"),X(t,"grid"),setTimeout((()=>{z(t,n.showClass.popup),t.style.removeProperty("opacity")}),10)):X(t,"grid"),z([document.documentElement,document.body],r.shown),n.heightAuto&&n.backdrop&&!n.toast&&z([document.documentElement,document.body],r["height-auto"])};var qn=(e,t)=>/^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),Vn=(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL");function Nn(e){!function(e){e.inputValidator||("email"===e.input&&(e.inputValidator=qn),"url"===e.input&&(e.inputValidator=Vn))}(e),e.showLoaderOnConfirm&&!e.preConfirm&&u("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(e){(!e.target||"string"==typeof e.target&&!document.querySelector(e.target)||"string"!=typeof e.target&&!e.target.appendChild)&&(u('Target parameter is not valid, defaulting to "body"'),e.target="body")}(e),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
        ")),re(e)}let _n;var Fn=new WeakMap;class Rn{constructor(){if(n(this,Fn,void 0),"undefined"==typeof window)return;_n=this;for(var t=arguments.length,o=new Array(t),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(en(Object.assign({},t,e)),o.currentInstance){const e=et.swalPromiseResolve.get(o.currentInstance),{isAwaitingPromise:t}=o.currentInstance;o.currentInstance._destroy(),t||e({isDismissed:!0}),D()&&tt()}o.currentInstance=_n;const n=zn(e,t);Nn(n),Object.freeze(n),o.timeout&&(o.timeout.stop(),delete o.timeout),clearTimeout(o.restoreFocusTimeout);const i=Wn(_n);return Fe(_n,n),me.innerParams.set(_n,n),Un(_n,i,n)}then(e){return t(Fn,this).then(e)}finally(e){return t(Fn,this).finally(e)}}const Un=(e,t,n)=>new Promise(((i,s)=>{const r=t=>{e.close({isDismissed:!0,dismiss:t})};et.swalPromiseResolve.set(e,i),et.swalPromiseReject.set(e,s),t.confirmButton.onclick=()=>{(e=>{const t=me.innerParams.get(e);e.disableButtons(),t.input?$t(e,"confirm"):Ot(e,!0)})(e)},t.denyButton.onclick=()=>{(e=>{const t=me.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?$t(e,"deny"):Pt(e,!1)})(e)},t.cancelButton.onclick=()=>{((e,t)=>{e.disableButtons(),t(Ue.cancel)})(e,r)},t.closeButton.onclick=()=>{r(Ue.close)},((e,t,n)=>{e.toast?cn(e,t,n):(pn(t),mn(t),hn(e,t,n))})(n,t,r),((e,t,n)=>{ze(e),t.toast||(e.keydownHandler=e=>Xe(t,e,n),e.keydownTarget=t.keydownListenerCapture?window:C(),e.keydownListenerCapture=t.keydownListenerCapture,e.keydownTarget.addEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!0)})(o,n,r),((e,t)=>{"select"===t.input||"radio"===t.input?Et(e,t):["text","email","number","tel","textarea"].some((e=>e===t.input))&&(g(t.inputValue)||b(t.inputValue))&&(yt(x()),kt(e,t))})(e,n),Mn(n),Kn(o,n,r),Yn(t,n),setTimeout((()=>{t.container.scrollTop=0}))})),zn=(e,t)=>{const n=(e=>{const t="string"==typeof e.template?document.querySelector(e.template):e.template;if(!t)return{};const n=t.content;return Sn(n),Object.assign(kn(n),Bn(n),Ln(n),$n(n),xn(n),Pn(n),Tn(n,En))})(e),o=Object.assign({},Ut,t,n,e);return o.showClass=Object.assign({},Ut.showClass,o.showClass),o.hideClass=Object.assign({},Ut.hideClass,o.hideClass),!1===o.animation&&(o.showClass={backdrop:"swal2-noanimation"},o.hideClass={}),o},Wn=e=>{const t={popup:C(),container:y(),actions:O(),confirmButton:x(),denyButton:T(),cancelButton:P(),loader:S(),closeButton:H(),validationMessage:$(),progressSteps:L()};return me.domCache.set(e,t),t},Kn=(e,t,n)=>{const o=j();Z(o),t.timer&&(e.timeout=new An((()=>{n("timer"),delete e.timeout}),t.timer),t.timerProgressBar&&(X(o),_(o,t,"timerProgressBar"),setTimeout((()=>{e.timeout&&e.timeout.running&&oe(t.timer)}))))},Yn=(e,t)=>{if(!t.toast)return h(t.allowEnterKey)?void(Xn(e)||Zn(e,t)||We(-1,1)):(m("allowEnterKey"),void Jn())},Xn=e=>{const t=Array.from(e.popup.querySelectorAll("[autofocus]"));for(const e of t)if(e instanceof HTMLElement&&ee(e))return e.focus(),!0;return!1},Zn=(e,t)=>t.focusDeny&&ee(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&ee(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!ee(e.confirmButton))&&(e.confirmButton.focus(),!0),Jn=()=>{document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){const e=new Date,t=localStorage.getItem("swal-initiation");t?(e.getTime()-Date.parse(t))/864e5>3&&setTimeout((()=>{document.body.style.pointerEvents="none";const e=document.createElement("audio");e.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",e.loop=!0,document.body.appendChild(e),setTimeout((()=>{e.play().catch((()=>{}))}),2500)}),500):localStorage.setItem("swal-initiation",`${e}`)}Rn.prototype.disableButtons=Vt,Rn.prototype.enableButtons=qt,Rn.prototype.getInput=Ht,Rn.prototype.disableInput=_t,Rn.prototype.enableInput=Nt,Rn.prototype.hideLoading=Mt,Rn.prototype.disableLoading=Mt,Rn.prototype.showValidationMessage=Ft,Rn.prototype.resetValidationMessage=Rt,Rn.prototype.close=ut,Rn.prototype.closePopup=ut,Rn.prototype.closeModal=ut,Rn.prototype.closeToast=ut,Rn.prototype.rejectPromise=pt,Rn.prototype.update=tn,Rn.prototype._destroy=on,Object.assign(Rn,Cn),Object.keys(ln).forEach((e=>{Rn[e]=function(){return _n&&_n[e]?_n[e](...arguments):null}})),Rn.DismissReason=Ue,Rn.version="11.17.2";const Gn=Rn;return Gn.default=Gn,Gn})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); +"undefined"!=typeof document&&function(e,t){var n=e.createElement("style");if(e.getElementsByTagName("head")[0].appendChild(n),n.styleSheet)n.styleSheet.disabled||(n.styleSheet.cssText=t);else try{n.innerHTML=t}catch(e){n.innerText=t}}(document,":root{--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-footer-border-color: #eee;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-input-background: transparent;--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:\"top-start top top-end\" \"center-start center center-end\" \"bottom-start bottom-center bottom-end\";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):focus-visible{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):focus-visible{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):focus-visible{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus-visible{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);color:inherit;font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:var(--swal2-border-radius);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:1em 1.6em .3em;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:var(--swal2-input-background);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:\"!\";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:var(--swal2-background);box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}"); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.css b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.css index 7b549e1eb..e14def066 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.css +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.css @@ -1,163 +1,121 @@ -.swal2-popup.swal2-toast { - box-sizing: border-box; - grid-column: 1/4 !important; - grid-row: 1/4 !important; - grid-template-columns: min-content auto min-content; - padding: 1em; - overflow-y: hidden; - background: #fff; - box-shadow: 0 0 1px hsla(0, 0%, 0%, 0.075), 0 1px 2px hsla(0, 0%, 0%, 0.075), 1px 2px 4px hsla(0, 0%, 0%, 0.075), 1px 3px 8px hsla(0, 0%, 0%, 0.075), 2px 4px 16px hsla(0, 0%, 0%, 0.075); - pointer-events: all; -} -.swal2-popup.swal2-toast > * { - grid-column: 2; -} -.swal2-popup.swal2-toast .swal2-title { - margin: 0.5em 1em; - padding: 0; - font-size: 1em; - text-align: initial; -} -.swal2-popup.swal2-toast .swal2-loading { - justify-content: center; -} -.swal2-popup.swal2-toast .swal2-input { - height: 2em; - margin: 0.5em; - font-size: 1em; -} -.swal2-popup.swal2-toast .swal2-validation-message { - font-size: 1em; -} -.swal2-popup.swal2-toast .swal2-footer { - margin: 0.5em 0 0; - padding: 0.5em 0 0; - font-size: 0.8em; -} -.swal2-popup.swal2-toast .swal2-close { - grid-column: 3/3; - grid-row: 1/99; - align-self: center; - width: 0.8em; - height: 0.8em; - margin: 0; - font-size: 2em; -} -.swal2-popup.swal2-toast .swal2-html-container { - margin: 0.5em 1em; - padding: 0; - overflow: initial; - font-size: 1em; - text-align: initial; -} -.swal2-popup.swal2-toast .swal2-html-container:empty { - padding: 0; -} -.swal2-popup.swal2-toast .swal2-loader { - grid-column: 1; - grid-row: 1/99; - align-self: center; - width: 2em; - height: 2em; - margin: 0.25em; +:root { + --swal2-container-padding: 0.625em; + --swal2-backdrop: rgba(0, 0, 0, 0.4); + --swal2-width: 32em; + --swal2-padding: 0 0 1.25em; + --swal2-border: none; + --swal2-border-radius: 0.3125rem; + --swal2-background: white; + --swal2-color: #545454; + --swal2-footer-border-color: #eee; + --swal2-show-animation: swal2-show 0.3s; + --swal2-hide-animation: swal2-hide 0.15s forwards; + --swal2-input-background: transparent; + --swal2-progress-step-background: #add8e6; + --swal2-validation-message-background: #f0f0f0; + --swal2-validation-message-color: #666; + --swal2-close-button-position: initial; + --swal2-close-button-inset: auto; + --swal2-close-button-font-size: 2.5em; + --swal2-close-button-color: #ccc; } -.swal2-popup.swal2-toast .swal2-icon { - grid-column: 1; - grid-row: 1/99; - align-self: center; - width: 2em; - min-width: 2em; - height: 2em; - margin: 0 0.5em 0 0; -} -.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content { - display: flex; - align-items: center; - font-size: 1.8em; - font-weight: bold; -} -.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { - width: 2em; - height: 2em; -} -.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { - top: 0.875em; - width: 1.375em; + +[data-swal2-theme=dark] { + --swal2-dark-theme-black: #19191a; + --swal2-dark-theme-white: #e1e1e1; + --swal2-background: var(--swal2-dark-theme-black); + --swal2-color: var(--swal2-dark-theme-white); + --swal2-footer-border-color: #555; + --swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%); + --swal2-validation-message-background: color-mix( + in srgb, + var(--swal2-dark-theme-black), + var(--swal2-dark-theme-white) 10% + ); + --swal2-validation-message-color: var(--swal2-dark-theme-white); } -.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { - left: 0.3125em; + +@media (prefers-color-scheme: dark) { + [data-swal2-theme=auto] { + --swal2-dark-theme-black: #19191a; + --swal2-dark-theme-white: #e1e1e1; + --swal2-background: var(--swal2-dark-theme-black); + --swal2-color: var(--swal2-dark-theme-white); + --swal2-footer-border-color: #555; + --swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%); + --swal2-validation-message-background: color-mix( + in srgb, + var(--swal2-dark-theme-black), + var(--swal2-dark-theme-white) 10% + ); + --swal2-validation-message-color: var(--swal2-dark-theme-white); + } } -.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { - right: 0.3125em; +body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) { + overflow: hidden; } -.swal2-popup.swal2-toast .swal2-actions { - justify-content: flex-start; - height: auto; - margin: 0; - margin-top: 0.5em; - padding: 0 0.5em; +body.swal2-height-auto { + height: auto !important; } -.swal2-popup.swal2-toast .swal2-styled { - margin: 0.25em 0.5em; - padding: 0.4em 0.6em; - font-size: 1em; +body.swal2-no-backdrop .swal2-container { + background-color: transparent !important; + pointer-events: none; } -.swal2-popup.swal2-toast .swal2-success { - border-color: #a5dc86; +body.swal2-no-backdrop .swal2-container .swal2-popup { + pointer-events: all; } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] { - position: absolute; - width: 1.6em; - height: 3em; - border-radius: 50%; +body.swal2-no-backdrop .swal2-container .swal2-modal { + box-shadow: 0 0 10px var(--swal2-backdrop); } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { - top: -0.8em; - left: -0.5em; - transform: rotate(-45deg); - transform-origin: 2em 2em; - border-radius: 4em 0 0 4em; +body.swal2-toast-shown .swal2-container { + box-sizing: border-box; + width: 360px; + max-width: 100%; + background-color: transparent; + pointer-events: none; } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { - top: -0.25em; - left: 0.9375em; - transform-origin: 0 1.5em; - border-radius: 0 4em 4em 0; +body.swal2-toast-shown .swal2-container.swal2-top { + inset: 0 auto auto 50%; + transform: translateX(-50%); } -.swal2-popup.swal2-toast .swal2-success .swal2-success-ring { - width: 2em; - height: 2em; +body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right { + inset: 0 0 auto auto; } -.swal2-popup.swal2-toast .swal2-success .swal2-success-fix { - top: 0; - left: 0.4375em; - width: 0.4375em; - height: 2.6875em; +body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left { + inset: 0 auto auto 0; } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] { - height: 0.3125em; +body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left { + inset: 50% auto auto 0; + transform: translateY(-50%); } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { - top: 1.125em; - left: 0.1875em; - width: 0.75em; +body.swal2-toast-shown .swal2-container.swal2-center { + inset: 50% auto auto 50%; + transform: translate(-50%, -50%); } -.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { - top: 0.9375em; - right: 0.1875em; - width: 1.375em; +body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right { + inset: 50% 0 auto auto; + transform: translateY(-50%); } -.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { - animation: swal2-toast-animate-success-line-tip 0.75s; +body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left { + inset: auto auto 0 0; } -.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { - animation: swal2-toast-animate-success-line-long 0.75s; +body.swal2-toast-shown .swal2-container.swal2-bottom { + inset: auto auto 0 50%; + transform: translateX(-50%); } -.swal2-popup.swal2-toast.swal2-show { - animation: swal2-toast-show 0.5s; +body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right { + inset: auto 0 0 auto; } -.swal2-popup.swal2-toast.swal2-hide { - animation: swal2-toast-hide 0.1s forwards; +@media print { + body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) { + overflow-y: scroll !important; + } + body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) > [aria-hidden=true] { + display: none; + } + body.swal2-shown:not(.swal2-no-backdrop, .swal2-toast-shown) .swal2-container { + position: static !important; + } } div:where(.swal2-container) { @@ -169,13 +127,13 @@ div:where(.swal2-container) { grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end"; grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto); height: 100%; - padding: 0.625em; + padding: var(--swal2-container-padding); overflow-x: hidden; transition: background-color 0.1s; -webkit-overflow-scrolling: touch; } div:where(.swal2-container).swal2-backdrop-show, div:where(.swal2-container).swal2-noanimation { - background: rgba(0, 0, 0, 0.4); + background: var(--swal2-backdrop); } div:where(.swal2-container).swal2-backdrop-hide { background: transparent !important; @@ -245,13 +203,13 @@ div:where(.swal2-container) div:where(.swal2-popup) { position: relative; box-sizing: border-box; grid-template-columns: minmax(0, 100%); - width: 32em; + width: var(--swal2-width); max-width: 100%; - padding: 0 0 1.25em; - border: none; - border-radius: 5px; - background: #fff; - color: #545454; + padding: var(--swal2-padding); + border: var(--swal2-border); + border-radius: var(--swal2-border-radius); + background: var(--swal2-background); + color: var(--swal2-color); font-family: inherit; font-size: 1rem; } @@ -261,6 +219,18 @@ div:where(.swal2-container) div:where(.swal2-popup):focus { div:where(.swal2-container) div:where(.swal2-popup).swal2-loading { overflow-y: hidden; } +div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable { + cursor: grab; +} +div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon) { + cursor: grab; +} +div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging { + cursor: grabbing; +} +div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon) { + cursor: grabbing; +} div:where(.swal2-container) h2:where(.swal2-title) { position: relative; max-width: 100%; @@ -272,6 +242,7 @@ div:where(.swal2-container) h2:where(.swal2-title) { text-align: center; text-transform: none; word-wrap: break-word; + cursor: initial; } div:where(.swal2-container) div:where(.swal2-actions) { display: flex; @@ -316,7 +287,7 @@ div:where(.swal2-container) button:where(.swal2-styled) { div:where(.swal2-container) button:where(.swal2-styled):not([disabled]) { cursor: pointer; } -div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm) { border: 0; border-radius: 0.25em; background: initial; @@ -324,10 +295,10 @@ div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm { color: #fff; font-size: 1em; } -div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm:focus { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):focus-visible { box-shadow: 0 0 0 3px rgba(112, 102, 224, 0.5); } -div:where(.swal2-container) button:where(.swal2-styled).swal2-deny { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny) { border: 0; border-radius: 0.25em; background: initial; @@ -335,10 +306,10 @@ div:where(.swal2-container) button:where(.swal2-styled).swal2-deny { color: #fff; font-size: 1em; } -div:where(.swal2-container) button:where(.swal2-styled).swal2-deny:focus { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):focus-visible { box-shadow: 0 0 0 3px rgba(220, 55, 65, 0.5); } -div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel) { border: 0; border-radius: 0.25em; background: initial; @@ -346,13 +317,13 @@ div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel { color: #fff; font-size: 1em; } -div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel:focus { +div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):focus-visible { box-shadow: 0 0 0 3px rgba(110, 120, 129, 0.5); } -div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus { +div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus-visible { box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5); } -div:where(.swal2-container) button:where(.swal2-styled):focus { +div:where(.swal2-container) button:where(.swal2-styled):focus-visible { outline: none; } div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner { @@ -361,10 +332,11 @@ div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner { div:where(.swal2-container) div:where(.swal2-footer) { margin: 1em 0 0; padding: 1em 1em 0; - border-top: 1px solid #eee; + border-top: 1px solid var(--swal2-footer-border-color); color: inherit; font-size: 1em; text-align: center; + cursor: initial; } div:where(.swal2-container) .swal2-timer-progress-bar-container { position: absolute; @@ -373,8 +345,8 @@ div:where(.swal2-container) .swal2-timer-progress-bar-container { left: 0; grid-column: auto !important; overflow: hidden; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; + border-bottom-right-radius: var(--swal2-border-radius); + border-bottom-left-radius: var(--swal2-border-radius); } div:where(.swal2-container) div:where(.swal2-timer-progress-bar) { width: 100%; @@ -384,8 +356,11 @@ div:where(.swal2-container) div:where(.swal2-timer-progress-bar) { div:where(.swal2-container) img:where(.swal2-image) { max-width: 100%; margin: 2em auto 1em; + cursor: initial; } div:where(.swal2-container) button:where(.swal2-close) { + position: var(--swal2-close-button-position); + inset: var(--swal2-close-button-inset); z-index: 2; align-items: center; justify-content: center; @@ -398,11 +373,11 @@ div:where(.swal2-container) button:where(.swal2-close) { overflow: hidden; transition: color 0.1s, box-shadow 0.1s; border: none; - border-radius: 5px; + border-radius: var(--swal2-border-radius); background: transparent; - color: #ccc; + color: var(--swal2-close-button-color); font-family: monospace; - font-size: 2.5em; + font-size: var(--swal2-close-button-font-size); cursor: pointer; justify-self: end; } @@ -411,18 +386,18 @@ div:where(.swal2-container) button:where(.swal2-close):hover { background: transparent; color: #f27474; } -div:where(.swal2-container) button:where(.swal2-close):focus { +div:where(.swal2-container) button:where(.swal2-close):focus-visible { outline: none; box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5); } div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner { border: 0; } -div:where(.swal2-container) .swal2-html-container { +div:where(.swal2-container) div:where(.swal2-html-container) { z-index: 1; justify-content: center; - margin: 1em 1.6em 0.3em; - padding: 0; + margin: 0; + padding: 1em 1.6em 0.3em; overflow: auto; color: inherit; font-size: 1.125em; @@ -431,6 +406,7 @@ div:where(.swal2-container) .swal2-html-container { text-align: center; word-wrap: break-word; word-break: break-word; + cursor: initial; } div:where(.swal2-container) input:where(.swal2-input), div:where(.swal2-container) input:where(.swal2-file), @@ -448,7 +424,7 @@ div:where(.swal2-container) textarea:where(.swal2-textarea) { transition: border-color 0.1s, box-shadow 0.1s; border: 1px solid #d9d9d9; border-radius: 0.1875em; - background: transparent; + background: var(--swal2-input-background); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent; color: inherit; font-size: 1.125em; @@ -473,7 +449,7 @@ div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder { } div:where(.swal2-container) .swal2-range { margin: 1em 2em 3px; - background: #fff; + background: var(--swal2-background); } div:where(.swal2-container) .swal2-range input { width: 80%; @@ -499,7 +475,7 @@ div:where(.swal2-container) .swal2-file { width: 75%; margin-right: auto; margin-left: auto; - background: transparent; + background: var(--swal2-input-background); font-size: 1.125em; } div:where(.swal2-container) .swal2-textarea { @@ -510,7 +486,7 @@ div:where(.swal2-container) .swal2-select { min-width: 50%; max-width: 100%; padding: 0.375em 0.625em; - background: transparent; + background: var(--swal2-input-background); color: inherit; font-size: 1.125em; } @@ -518,7 +494,7 @@ div:where(.swal2-container) .swal2-radio, div:where(.swal2-container) .swal2-checkbox { align-items: center; justify-content: center; - background: #fff; + background: var(--swal2-background); color: inherit; } div:where(.swal2-container) .swal2-radio label, @@ -542,8 +518,8 @@ div:where(.swal2-container) div:where(.swal2-validation-message) { margin: 1em 0 0; padding: 0.625em; overflow: hidden; - background: #f0f0f0; - color: #666666; + background: var(--swal2-validation-message-background); + color: var(--swal2-validation-message-color); font-size: 1em; font-weight: 300; } @@ -589,11 +565,11 @@ div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-act background: #2778c4; } div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step { - background: #add8e6; + background: var(--swal2-progress-step-background); color: #fff; } div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line { - background: #add8e6; + background: var(--swal2-progress-step-background); } div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line { z-index: 10; @@ -656,7 +632,7 @@ div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark { animation: swal2-animate-error-x-mark 0.5s; } div:where(.swal2-icon).swal2-warning { - border-color: #facea8; + border-color: #f8bb86; color: #f8bb86; } div:where(.swal2-icon).swal2-warning.swal2-icon-show { @@ -666,7 +642,7 @@ div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content { animation: swal2-animate-i-mark 0.5s; } div:where(.swal2-icon).swal2-info { - border-color: #9de0f6; + border-color: #3fc3ee; color: #3fc3ee; } div:where(.swal2-icon).swal2-info.swal2-icon-show { @@ -676,7 +652,7 @@ div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content { animation: swal2-animate-i-mark 0.8s; } div:where(.swal2-icon).swal2-question { - border-color: #c9dae1; + border-color: #87adbd; color: #87adbd; } div:where(.swal2-icon).swal2-question.swal2-icon-show { @@ -764,11 +740,11 @@ div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-lin } .swal2-show { - animation: swal2-show 0.3s; + animation: var(--swal2-show-animation); } .swal2-hide { - animation: swal2-hide 0.15s forwards; + animation: var(--swal2-hide-animation); } .swal2-noanimation { @@ -792,75 +768,168 @@ div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-lin left: auto; } -@keyframes swal2-toast-show { - 0% { - transform: translateY(-0.625em) rotateZ(2deg); - } - 33% { - transform: translateY(0) rotateZ(-2deg); - } - 66% { - transform: translateY(0.3125em) rotateZ(2deg); - } - 100% { - transform: translateY(0) rotateZ(0deg); - } +.swal2-toast { + box-sizing: border-box; + grid-column: 1/4 !important; + grid-row: 1/4 !important; + grid-template-columns: min-content auto min-content; + padding: 1em; + overflow-y: hidden; + background: var(--swal2-background); + box-shadow: 0 0 1px hsla(0, 0%, 0%, 0.075), 0 1px 2px hsla(0, 0%, 0%, 0.075), 1px 2px 4px hsla(0, 0%, 0%, 0.075), 1px 3px 8px hsla(0, 0%, 0%, 0.075), 2px 4px 16px hsla(0, 0%, 0%, 0.075); + pointer-events: all; } -@keyframes swal2-toast-hide { - 100% { - transform: rotateZ(1deg); - opacity: 0; - } +.swal2-toast > * { + grid-column: 2; } -@keyframes swal2-toast-animate-success-line-tip { - 0% { - top: 0.5625em; - left: 0.0625em; - width: 0; - } - 54% { - top: 0.125em; - left: 0.125em; - width: 0; - } - 70% { - top: 0.625em; - left: -0.25em; - width: 1.625em; - } - 84% { - top: 1.0625em; - left: 0.75em; - width: 0.5em; - } - 100% { - top: 1.125em; - left: 0.1875em; - width: 0.75em; - } +.swal2-toast h2:where(.swal2-title) { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; } -@keyframes swal2-toast-animate-success-line-long { - 0% { - top: 1.625em; - right: 1.375em; - width: 0; - } - 65% { - top: 1.25em; - right: 0.9375em; - width: 0; - } - 84% { - top: 0.9375em; - right: 0; - width: 1.125em; - } - 100% { - top: 0.9375em; - right: 0.1875em; - width: 1.375em; - } +.swal2-toast .swal2-loading { + justify-content: center; +} +.swal2-toast input:where(.swal2-input) { + height: 2em; + margin: 0.5em; + font-size: 1em; +} +.swal2-toast .swal2-validation-message { + font-size: 1em; +} +.swal2-toast div:where(.swal2-footer) { + margin: 0.5em 0 0; + padding: 0.5em 0 0; + font-size: 0.8em; +} +.swal2-toast button:where(.swal2-close) { + grid-column: 3/3; + grid-row: 1/99; + align-self: center; + width: 0.8em; + height: 0.8em; + margin: 0; + font-size: 2em; +} +.swal2-toast div:where(.swal2-html-container) { + margin: 0.5em 1em; + padding: 0; + overflow: initial; + font-size: 1em; + text-align: initial; +} +.swal2-toast div:where(.swal2-html-container):empty { + padding: 0; +} +.swal2-toast .swal2-loader { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + height: 2em; + margin: 0.25em; +} +.swal2-toast .swal2-icon { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + min-width: 2em; + height: 2em; + margin: 0 0.5em 0 0; } +.swal2-toast .swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 1.8em; + font-weight: bold; +} +.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + top: 0.875em; + width: 1.375em; +} +.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 0.3125em; +} +.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 0.3125em; +} +.swal2-toast div:where(.swal2-actions) { + justify-content: flex-start; + height: auto; + margin: 0; + margin-top: 0.5em; + padding: 0 0.5em; +} +.swal2-toast button:where(.swal2-styled) { + margin: 0.25em 0.5em; + padding: 0.4em 0.6em; + font-size: 1em; +} +.swal2-toast .swal2-success { + border-color: #a5dc86; +} +.swal2-toast .swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 1.6em; + height: 3em; + border-radius: 50%; +} +.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.8em; + left: -0.5em; + transform: rotate(-45deg); + transform-origin: 2em 2em; + border-radius: 4em 0 0 4em; +} +.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.25em; + left: 0.9375em; + transform-origin: 0 1.5em; + border-radius: 0 4em 4em 0; +} +.swal2-toast .swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} +.swal2-toast .swal2-success .swal2-success-fix { + top: 0; + left: 0.4375em; + width: 0.4375em; + height: 2.6875em; +} +.swal2-toast .swal2-success [class^=swal2-success-line] { + height: 0.3125em; +} +.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { + top: 1.125em; + left: 0.1875em; + width: 0.75em; +} +.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; +} +.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { + animation: swal2-toast-animate-success-line-tip 0.75s; +} +.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { + animation: swal2-toast-animate-success-line-long 0.75s; +} +.swal2-toast.swal2-show { + animation: swal2-toast-show 0.5s; +} +.swal2-toast.swal2-hide { + animation: swal2-toast-hide 0.1s forwards; +} + @keyframes swal2-show { 0% { transform: scale(0.7); @@ -1017,69 +1086,72 @@ div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-lin opacity: 1; } } -body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { - overflow: hidden; -} -body.swal2-height-auto { - height: auto !important; -} -body.swal2-no-backdrop .swal2-container { - background-color: transparent !important; - pointer-events: none; -} -body.swal2-no-backdrop .swal2-container .swal2-popup { - pointer-events: all; -} -body.swal2-no-backdrop .swal2-container .swal2-modal { - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); -} -@media print { - body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { - overflow-y: scroll !important; +@keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); } - body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] { - display: none; + 33% { + transform: translateY(0) rotateZ(-2deg); } - body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container { - position: static !important; + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); } } -body.swal2-toast-shown .swal2-container { - box-sizing: border-box; - width: 360px; - max-width: 100%; - background-color: transparent; - pointer-events: none; -} -body.swal2-toast-shown .swal2-container.swal2-top { - inset: 0 auto auto 50%; - transform: translateX(-50%); -} -body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right { - inset: 0 0 auto auto; -} -body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left { - inset: 0 auto auto 0; -} -body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left { - inset: 50% auto auto 0; - transform: translateY(-50%); -} -body.swal2-toast-shown .swal2-container.swal2-center { - inset: 50% auto auto 50%; - transform: translate(-50%, -50%); -} -body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right { - inset: 50% 0 auto auto; - transform: translateY(-50%); -} -body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left { - inset: auto auto 0 0; +@keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } } -body.swal2-toast-shown .swal2-container.swal2-bottom { - inset: auto auto 0 50%; - transform: translateX(-50%); +@keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } } -body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right { - inset: auto 0 0 auto; +@keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } } diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.js b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.js index 41be4593a..50c31cffe 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.js +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.js @@ -1,5 +1,5 @@ /*! -* sweetalert2 v11.10.7 +* sweetalert2 v11.17.2 * Released under the MIT License. */ (function (global, factory) { @@ -12,217 +12,24 @@ if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); } - function _callSuper(t, o, e) { - return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + function _checkPrivateRedeclaration(e, t) { + if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); } function _classPrivateFieldGet2(s, a) { return s.get(_assertClassBrand(s, a)); } + function _classPrivateFieldInitSpec(e, t, a) { + _checkPrivateRedeclaration(e, t), t.set(e, a); + } function _classPrivateFieldSet2(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; } - function _construct(t, e, r) { - if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); - var o = [null]; - o.push.apply(o, e); - var p = new (t.bind.apply(t, o))(); - return r && _setPrototypeOf(p, r.prototype), p; - } - function _isNativeReflectConstruct() { - try { - var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - } catch (t) {} - return (_isNativeReflectConstruct = function () { - return !!t; - })(); - } - function _iterableToArrayLimit(r, l) { - var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (null != t) { - var e, - n, - i, - u, - a = [], - f = !0, - o = !1; - try { - if (i = (t = t.call(r)).next, 0 === l) { - if (Object(t) !== t) return; - f = !1; - } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); - } catch (r) { - o = !0, n = r; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - function _toPrimitive(t, r) { - if ("object" != typeof t || !t) return t; - var e = t[Symbol.toPrimitive]; - if (void 0 !== e) { - var i = e.call(t, r || "default"); - if ("object" != typeof i) return i; - throw new TypeError("@@toPrimitive must return a primitive value."); - } - return ("string" === r ? String : Number)(t); - } - function _toPropertyKey(t) { - var i = _toPrimitive(t, "string"); - return "symbol" == typeof i ? i : String(i); - } - function _typeof(o) { - "@babel/helpers - typeof"; - - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { - return typeof o; - } : function (o) { - return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; - }, _typeof(o); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _inherits(subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function"); - } - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - writable: true, - configurable: true - } - }); - Object.defineProperty(subClass, "prototype", { - writable: false - }); - if (superClass) _setPrototypeOf(subClass, superClass); - } - function _getPrototypeOf(o) { - _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { - return o.__proto__ || Object.getPrototypeOf(o); - }; - return _getPrototypeOf(o); - } - function _setPrototypeOf(o, p) { - _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { - o.__proto__ = p; - return o; - }; - return _setPrototypeOf(o, p); - } - function _assertThisInitialized(self) { - if (self === void 0) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - return self; - } - function _possibleConstructorReturn(self, call) { - if (call && (typeof call === "object" || typeof call === "function")) { - return call; - } else if (call !== void 0) { - throw new TypeError("Derived constructors may only return object or undefined"); - } - return _assertThisInitialized(self); - } - function _superPropBase(object, property) { - while (!Object.prototype.hasOwnProperty.call(object, property)) { - object = _getPrototypeOf(object); - if (object === null) break; - } - return object; - } - function _get() { - if (typeof Reflect !== "undefined" && Reflect.get) { - _get = Reflect.get.bind(); - } else { - _get = function _get(target, property, receiver) { - var base = _superPropBase(target, property); - if (!base) return; - var desc = Object.getOwnPropertyDescriptor(base, property); - if (desc.get) { - return desc.get.call(arguments.length < 3 ? target : receiver); - } - return desc.value; - }; - } - return _get.apply(this, arguments); - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _checkPrivateRedeclaration(obj, privateCollection) { - if (privateCollection.has(obj)) { - throw new TypeError("Cannot initialize the same private elements twice on an object"); - } - } - function _classPrivateFieldInitSpec(obj, privateMap, value) { - _checkPrivateRedeclaration(obj, privateMap); - privateMap.set(obj, value); - } - var RESTORE_FOCUS_TIMEOUT = 100; + const RESTORE_FOCUS_TIMEOUT = 100; /** @type {GlobalState} */ - var globalState = {}; - var focusPreviousActiveElement = function focusPreviousActiveElement() { + const globalState = {}; + const focusPreviousActiveElement = () => { if (globalState.previousActiveElement instanceof HTMLElement) { globalState.previousActiveElement.focus(); globalState.previousActiveElement = null; @@ -237,14 +44,14 @@ * @param {boolean} returnFocus * @returns {Promise} */ - var restoreActiveElement = function restoreActiveElement(returnFocus) { - return new Promise(function (resolve) { + const restoreActiveElement = returnFocus => { + return new Promise(resolve => { if (!returnFocus) { return resolve(); } - var x = window.scrollX; - var y = window.scrollY; - globalState.restoreFocusTimeout = setTimeout(function () { + const x = window.scrollX; + const y = window.scrollY; + globalState.restoreFocusTimeout = setTimeout(() => { focusPreviousActiveElement(); resolve(); }, RESTORE_FOCUS_TIMEOUT); // issues/900 @@ -253,80 +60,9 @@ }); }; - var swalPrefix = 'swal2-'; - - /** - * @typedef - * { | 'container' - * | 'shown' - * | 'height-auto' - * | 'iosfix' - * | 'popup' - * | 'modal' - * | 'no-backdrop' - * | 'no-transition' - * | 'toast' - * | 'toast-shown' - * | 'show' - * | 'hide' - * | 'close' - * | 'title' - * | 'html-container' - * | 'actions' - * | 'confirm' - * | 'deny' - * | 'cancel' - * | 'default-outline' - * | 'footer' - * | 'icon' - * | 'icon-content' - * | 'image' - * | 'input' - * | 'file' - * | 'range' - * | 'select' - * | 'radio' - * | 'checkbox' - * | 'label' - * | 'textarea' - * | 'inputerror' - * | 'input-label' - * | 'validation-message' - * | 'progress-steps' - * | 'active-progress-step' - * | 'progress-step' - * | 'progress-step-line' - * | 'loader' - * | 'loading' - * | 'styled' - * | 'top' - * | 'top-start' - * | 'top-end' - * | 'top-left' - * | 'top-right' - * | 'center' - * | 'center-start' - * | 'center-end' - * | 'center-left' - * | 'center-right' - * | 'bottom' - * | 'bottom-start' - * | 'bottom-end' - * | 'bottom-left' - * | 'bottom-right' - * | 'grow-row' - * | 'grow-column' - * | 'grow-fullscreen' - * | 'rtl' - * | 'timer-progress-bar' - * | 'timer-progress-bar-container' - * | 'scrollbar-measure' - * | 'icon-success' - * | 'icon-warning' - * | 'icon-info' - * | 'icon-question' - * | 'icon-error' - * } SwalClass + const swalPrefix = 'swal2-'; + + /** * @typedef {Record} SwalClasses */ @@ -336,20 +72,20 @@ */ /** @type {SwalClass[]} */ - var classNames = ['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error']; - var swalClasses = classNames.reduce(function (acc, className) { + const classNames = ['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error', 'draggable', 'dragging']; + const swalClasses = classNames.reduce((acc, className) => { acc[className] = swalPrefix + className; return acc; }, /** @type {SwalClasses} */{}); /** @type {SwalIcon[]} */ - var icons = ['success', 'warning', 'info', 'question', 'error']; - var iconTypes = icons.reduce(function (acc, icon) { + const icons = ['success', 'warning', 'info', 'question', 'error']; + const iconTypes = icons.reduce((acc, icon) => { acc[icon] = swalPrefix + icon; return acc; }, /** @type {SwalIcons} */{}); - var consolePrefix = 'SweetAlert2:'; + const consolePrefix = 'SweetAlert2:'; /** * Capitalize the first letter of a string @@ -357,17 +93,15 @@ * @param {string} str * @returns {string} */ - var capitalizeFirstLetter = function capitalizeFirstLetter(str) { - return str.charAt(0).toUpperCase() + str.slice(1); - }; + const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1); /** * Standardize console warnings * * @param {string | string[]} message */ - var warn = function warn(message) { - console.warn("".concat(consolePrefix, " ").concat(_typeof(message) === 'object' ? message.join(' ') : message)); + const warn = message => { + console.warn(`${consolePrefix} ${typeof message === 'object' ? message.join(' ') : message}`); }; /** @@ -375,8 +109,8 @@ * * @param {string} message */ - var error = function error(message) { - console.error("".concat(consolePrefix, " ").concat(message)); + const error = message => { + console.error(`${consolePrefix} ${message}`); }; /** @@ -385,14 +119,14 @@ * @type {string[]} * @private */ - var previousWarnOnceMessages = []; + const previousWarnOnceMessages = []; /** * Show a console warning, but only if it hasn't already been shown * * @param {string} message */ - var warnOnce = function warnOnce(message) { + const warnOnce = message => { if (!previousWarnOnceMessages.includes(message)) { previousWarnOnceMessages.push(message); warn(message); @@ -403,10 +137,11 @@ * Show a one-time console warning about deprecated params/methods * * @param {string} deprecatedParam - * @param {string} useInstead + * @param {string?} useInstead */ - var warnAboutDeprecation = function warnAboutDeprecation(deprecatedParam, useInstead) { - warnOnce("\"".concat(deprecatedParam, "\" is deprecated and will be removed in the next major release. Please use \"").concat(useInstead, "\" instead.")); + const warnAboutDeprecation = function (deprecatedParam) { + let useInstead = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + warnOnce(`"${deprecatedParam}" is deprecated and will be removed in the next major release.${useInstead ? ` Use "${useInstead}" instead.` : ''}`); }; /** @@ -416,49 +151,39 @@ * @param {Function | any} arg * @returns {any} */ - var callIfFunction = function callIfFunction(arg) { - return typeof arg === 'function' ? arg() : arg; - }; + const callIfFunction = arg => typeof arg === 'function' ? arg() : arg; /** * @param {any} arg * @returns {boolean} */ - var hasToPromiseFn = function hasToPromiseFn(arg) { - return arg && typeof arg.toPromise === 'function'; - }; + const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function'; /** * @param {any} arg * @returns {Promise} */ - var asPromise = function asPromise(arg) { - return hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); - }; + const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg); /** * @param {any} arg * @returns {boolean} */ - var isPromise = function isPromise(arg) { - return arg && Promise.resolve(arg) === arg; - }; + const isPromise = arg => arg && Promise.resolve(arg) === arg; /** * Gets the popup container which contains the backdrop and the popup itself. * * @returns {HTMLElement | null} */ - var getContainer = function getContainer() { - return document.body.querySelector(".".concat(swalClasses.container)); - }; + const getContainer = () => document.body.querySelector(`.${swalClasses.container}`); /** * @param {string} selectorString * @returns {HTMLElement | null} */ - var elementBySelector = function elementBySelector(selectorString) { - var container = getContainer(); + const elementBySelector = selectorString => { + const container = getContainer(); return container ? container.querySelector(selectorString) : null; }; @@ -466,146 +191,127 @@ * @param {string} className * @returns {HTMLElement | null} */ - var elementByClass = function elementByClass(className) { - return elementBySelector(".".concat(className)); + const elementByClass = className => { + return elementBySelector(`.${className}`); }; /** * @returns {HTMLElement | null} */ - var getPopup = function getPopup() { - return elementByClass(swalClasses.popup); - }; + const getPopup = () => elementByClass(swalClasses.popup); /** * @returns {HTMLElement | null} */ - var getIcon = function getIcon() { - return elementByClass(swalClasses.icon); - }; + const getIcon = () => elementByClass(swalClasses.icon); /** * @returns {HTMLElement | null} */ - var getIconContent = function getIconContent() { - return elementByClass(swalClasses['icon-content']); - }; + const getIconContent = () => elementByClass(swalClasses['icon-content']); /** * @returns {HTMLElement | null} */ - var getTitle = function getTitle() { - return elementByClass(swalClasses.title); - }; + const getTitle = () => elementByClass(swalClasses.title); /** * @returns {HTMLElement | null} */ - var getHtmlContainer = function getHtmlContainer() { - return elementByClass(swalClasses['html-container']); - }; + const getHtmlContainer = () => elementByClass(swalClasses['html-container']); /** * @returns {HTMLElement | null} */ - var getImage = function getImage() { - return elementByClass(swalClasses.image); - }; + const getImage = () => elementByClass(swalClasses.image); /** * @returns {HTMLElement | null} */ - var getProgressSteps = function getProgressSteps() { - return elementByClass(swalClasses['progress-steps']); - }; + const getProgressSteps = () => elementByClass(swalClasses['progress-steps']); /** * @returns {HTMLElement | null} */ - var getValidationMessage = function getValidationMessage() { - return elementByClass(swalClasses['validation-message']); - }; + const getValidationMessage = () => elementByClass(swalClasses['validation-message']); /** * @returns {HTMLButtonElement | null} */ - var getConfirmButton = function getConfirmButton() { - return /** @type {HTMLButtonElement} */elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.confirm)); - }; + const getConfirmButton = () => (/** @type {HTMLButtonElement} */elementBySelector(`.${swalClasses.actions} .${swalClasses.confirm}`)); /** * @returns {HTMLButtonElement | null} */ - var getCancelButton = function getCancelButton() { - return /** @type {HTMLButtonElement} */elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.cancel)); - }; + const getCancelButton = () => (/** @type {HTMLButtonElement} */elementBySelector(`.${swalClasses.actions} .${swalClasses.cancel}`)); /** * @returns {HTMLButtonElement | null} */ - var getDenyButton = function getDenyButton() { - return /** @type {HTMLButtonElement} */elementBySelector(".".concat(swalClasses.actions, " .").concat(swalClasses.deny)); - }; + const getDenyButton = () => (/** @type {HTMLButtonElement} */elementBySelector(`.${swalClasses.actions} .${swalClasses.deny}`)); /** * @returns {HTMLElement | null} */ - var getInputLabel = function getInputLabel() { - return elementByClass(swalClasses['input-label']); - }; + const getInputLabel = () => elementByClass(swalClasses['input-label']); /** * @returns {HTMLElement | null} */ - var getLoader = function getLoader() { - return elementBySelector(".".concat(swalClasses.loader)); - }; + const getLoader = () => elementBySelector(`.${swalClasses.loader}`); /** * @returns {HTMLElement | null} */ - var getActions = function getActions() { - return elementByClass(swalClasses.actions); - }; + const getActions = () => elementByClass(swalClasses.actions); /** * @returns {HTMLElement | null} */ - var getFooter = function getFooter() { - return elementByClass(swalClasses.footer); - }; + const getFooter = () => elementByClass(swalClasses.footer); /** * @returns {HTMLElement | null} */ - var getTimerProgressBar = function getTimerProgressBar() { - return elementByClass(swalClasses['timer-progress-bar']); - }; + const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']); /** * @returns {HTMLElement | null} */ - var getCloseButton = function getCloseButton() { - return elementByClass(swalClasses.close); - }; + const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js - var focusable = "\n a[href],\n area[href],\n input:not([disabled]),\n select:not([disabled]),\n textarea:not([disabled]),\n button:not([disabled]),\n iframe,\n object,\n embed,\n [tabindex=\"0\"],\n [contenteditable],\n audio[controls],\n video[controls],\n summary\n"; + const focusable = ` + a[href], + area[href], + input:not([disabled]), + select:not([disabled]), + textarea:not([disabled]), + button:not([disabled]), + iframe, + object, + embed, + [tabindex="0"], + [contenteditable], + audio[controls], + video[controls], + summary +`; /** * @returns {HTMLElement[]} */ - var getFocusableElements = function getFocusableElements() { - var popup = getPopup(); + const getFocusableElements = () => { + const popup = getPopup(); if (!popup) { return []; } /** @type {NodeListOf} */ - var focusableElementsWithTabindex = popup.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'); - var focusableElementsWithTabindexSorted = Array.from(focusableElementsWithTabindex) + const focusableElementsWithTabindex = popup.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'); + const focusableElementsWithTabindexSorted = Array.from(focusableElementsWithTabindex) // sort according to tabindex - .sort(function (a, b) { - var tabindexA = parseInt(a.getAttribute('tabindex') || '0'); - var tabindexB = parseInt(b.getAttribute('tabindex') || '0'); + .sort((a, b) => { + const tabindexA = parseInt(a.getAttribute('tabindex') || '0'); + const tabindexB = parseInt(b.getAttribute('tabindex') || '0'); if (tabindexA > tabindexB) { return 1; } else if (tabindexA < tabindexB) { @@ -615,27 +321,23 @@ }); /** @type {NodeListOf} */ - var otherFocusableElements = popup.querySelectorAll(focusable); - var otherFocusableElementsFiltered = Array.from(otherFocusableElements).filter(function (el) { - return el.getAttribute('tabindex') !== '-1'; - }); - return _toConsumableArray(new Set(focusableElementsWithTabindexSorted.concat(otherFocusableElementsFiltered))).filter(function (el) { - return isVisible$1(el); - }); + const otherFocusableElements = popup.querySelectorAll(focusable); + const otherFocusableElementsFiltered = Array.from(otherFocusableElements).filter(el => el.getAttribute('tabindex') !== '-1'); + return [...new Set(focusableElementsWithTabindexSorted.concat(otherFocusableElementsFiltered))].filter(el => isVisible$1(el)); }; /** * @returns {boolean} */ - var isModal = function isModal() { + const isModal = () => { return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses['toast-shown']) && !hasClass(document.body, swalClasses['no-backdrop']); }; /** * @returns {boolean} */ - var isToast = function isToast() { - var popup = getPopup(); + const isToast = () => { + const popup = getPopup(); if (!popup) { return false; } @@ -645,8 +347,8 @@ /** * @returns {boolean} */ - var isLoading = function isLoading() { - var popup = getPopup(); + const isLoading = () => { + const popup = getPopup(); if (!popup) { return false; } @@ -660,23 +362,27 @@ * @param {HTMLElement} elem * @param {string} html */ - var setInnerHtml = function setInnerHtml(elem, html) { + const setInnerHtml = (elem, html) => { elem.textContent = ''; if (html) { - var parser = new DOMParser(); - var parsed = parser.parseFromString(html, "text/html"); - var head = parsed.querySelector('head'); - head && Array.from(head.childNodes).forEach(function (child) { - elem.appendChild(child); - }); - var body = parsed.querySelector('body'); - body && Array.from(body.childNodes).forEach(function (child) { - if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) { - elem.appendChild(child.cloneNode(true)); // https://github.com/sweetalert2/sweetalert2/issues/2507 - } else { + const parser = new DOMParser(); + const parsed = parser.parseFromString(html, `text/html`); + const head = parsed.querySelector('head'); + if (head) { + Array.from(head.childNodes).forEach(child => { elem.appendChild(child); - } - }); + }); + } + const body = parsed.querySelector('body'); + if (body) { + Array.from(body.childNodes).forEach(child => { + if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) { + elem.appendChild(child.cloneNode(true)); // https://github.com/sweetalert2/sweetalert2/issues/2507 + } else { + elem.appendChild(child); + } + }); + } } }; @@ -685,12 +391,12 @@ * @param {string} className * @returns {boolean} */ - var hasClass = function hasClass(elem, className) { + const hasClass = (elem, className) => { if (!className) { return false; } - var classList = className.split(/\s+/); - for (var i = 0; i < classList.length; i++) { + const classList = className.split(/\s+/); + for (let i = 0; i < classList.length; i++) { if (!elem.classList.contains(classList[i])) { return false; } @@ -702,8 +408,8 @@ * @param {HTMLElement} elem * @param {SweetAlertOptions} params */ - var removeCustomClasses = function removeCustomClasses(elem, params) { - Array.from(elem.classList).forEach(function (className) { + const removeCustomClasses = (elem, params) => { + Array.from(elem.classList).forEach(className => { if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass || {}).includes(className)) { elem.classList.remove(className); } @@ -715,15 +421,20 @@ * @param {SweetAlertOptions} params * @param {string} className */ - var applyCustomClass = function applyCustomClass(elem, params, className) { + const applyCustomClass = (elem, params, className) => { removeCustomClasses(elem, params); - if (params.customClass && params.customClass[className]) { - if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) { - warn("Invalid type of customClass.".concat(className, "! Expected string or iterable object, got \"").concat(_typeof(params.customClass[className]), "\"")); - return; - } - addClass(elem, params.customClass[className]); + if (!params.customClass) { + return; + } + const customClass = params.customClass[(/** @type {keyof SweetAlertCustomClass} */className)]; + if (!customClass) { + return; } + if (typeof customClass !== 'string' && !customClass.forEach) { + warn(`Invalid type of customClass.${className}! Expected string or iterable object, got "${typeof customClass}"`); + return; + } + addClass(elem, customClass); }; /** @@ -731,7 +442,7 @@ * @param {import('./renderers/renderInput').InputClass | SweetAlertInput} inputClass * @returns {HTMLInputElement | null} */ - var getInput$1 = function getInput(popup, inputClass) { + const getInput$1 = (popup, inputClass) => { if (!inputClass) { return null; } @@ -739,28 +450,28 @@ case 'select': case 'textarea': case 'file': - return popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses[inputClass])); + return popup.querySelector(`.${swalClasses.popup} > .${swalClasses[inputClass]}`); case 'checkbox': - return popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses.checkbox, " input")); + return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.checkbox} input`); case 'radio': - return popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses.radio, " input:checked")) || popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses.radio, " input:first-child")); + return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:checked`) || popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:first-child`); case 'range': - return popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses.range, " input")); + return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.range} input`); default: - return popup.querySelector(".".concat(swalClasses.popup, " > .").concat(swalClasses.input)); + return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.input}`); } }; /** * @param {HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement} input */ - var focusInput = function focusInput(input) { + const focusInput = input => { input.focus(); // place cursor at end of text in text input if (input.type !== 'file') { // http://stackoverflow.com/a/2345915 - var val = input.value; + const val = input.value; input.value = ''; input.value = val; } @@ -771,20 +482,28 @@ * @param {string | string[] | readonly string[] | undefined} classList * @param {boolean} condition */ - var toggleClass = function toggleClass(target, classList, condition) { + const toggleClass = (target, classList, condition) => { if (!target || !classList) { return; } if (typeof classList === 'string') { classList = classList.split(/\s+/).filter(Boolean); } - classList.forEach(function (className) { + classList.forEach(className => { if (Array.isArray(target)) { - target.forEach(function (elem) { - condition ? elem.classList.add(className) : elem.classList.remove(className); + target.forEach(elem => { + if (condition) { + elem.classList.add(className); + } else { + elem.classList.remove(className); + } }); } else { - condition ? target.classList.add(className) : target.classList.remove(className); + if (condition) { + target.classList.add(className); + } else { + target.classList.remove(className); + } } }); }; @@ -793,7 +512,7 @@ * @param {HTMLElement | HTMLElement[] | null} target * @param {string | string[] | readonly string[] | undefined} classList */ - var addClass = function addClass(target, classList) { + const addClass = (target, classList) => { toggleClass(target, classList, true); }; @@ -801,7 +520,7 @@ * @param {HTMLElement | HTMLElement[] | null} target * @param {string | string[] | readonly string[] | undefined} classList */ - var removeClass = function removeClass(target, classList) { + const removeClass = (target, classList) => { toggleClass(target, classList, false); }; @@ -812,10 +531,10 @@ * @param {string} className * @returns {HTMLElement | undefined} */ - var getDirectChildByClass = function getDirectChildByClass(elem, className) { - var children = Array.from(elem.children); - for (var i = 0; i < children.length; i++) { - var child = children[i]; + const getDirectChildByClass = (elem, className) => { + const children = Array.from(elem.children); + for (let i = 0; i < children.length; i++) { + const child = children[i]; if (child instanceof HTMLElement && hasClass(child, className)) { return child; } @@ -827,12 +546,12 @@ * @param {string} property * @param {*} value */ - var applyNumericalStyle = function applyNumericalStyle(elem, property, value) { - if (value === "".concat(parseInt(value))) { + const applyNumericalStyle = (elem, property, value) => { + if (value === `${parseInt(value)}`) { value = parseInt(value); } if (value || parseInt(value) === 0) { - elem.style.setProperty(property, typeof value === 'number' ? "".concat(value, "px") : value); + elem.style.setProperty(property, typeof value === 'number' ? `${value}px` : value); } else { elem.style.removeProperty(property); } @@ -842,28 +561,34 @@ * @param {HTMLElement | null} elem * @param {string} display */ - var show = function show(elem) { - var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex'; - elem && (elem.style.display = display); + const show = function (elem) { + let display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex'; + if (!elem) { + return; + } + elem.style.display = display; }; /** * @param {HTMLElement | null} elem */ - var hide = function hide(elem) { - elem && (elem.style.display = 'none'); + const hide = elem => { + if (!elem) { + return; + } + elem.style.display = 'none'; }; /** * @param {HTMLElement | null} elem * @param {string} display */ - var showWhenInnerHtmlPresent = function showWhenInnerHtmlPresent(elem) { - var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'block'; + const showWhenInnerHtmlPresent = function (elem) { + let display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'block'; if (!elem) { return; } - new MutationObserver(function () { + new MutationObserver(() => { toggle(elem, elem.innerHTML, display); }).observe(elem, { childList: true, @@ -877,9 +602,9 @@ * @param {string} property * @param {string} value */ - var setStyle = function setStyle(parent, selector, property, value) { + const setStyle = (parent, selector, property, value) => { /** @type {HTMLElement | null} */ - var el = parent.querySelector(selector); + const el = parent.querySelector(selector); if (el) { el.style.setProperty(property, value); } @@ -890,9 +615,13 @@ * @param {any} condition * @param {string} display */ - var toggle = function toggle(elem, condition) { - var display = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex'; - condition ? show(elem, display) : hide(elem); + const toggle = function (elem, condition) { + let display = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex'; + if (condition) { + show(elem, display); + } else { + hide(elem); + } }; /** @@ -901,24 +630,18 @@ * @param {HTMLElement | null} elem * @returns {boolean} */ - var isVisible$1 = function isVisible(elem) { - return !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); - }; + const isVisible$1 = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length)); /** * @returns {boolean} */ - var allButtonsAreHidden = function allButtonsAreHidden() { - return !isVisible$1(getConfirmButton()) && !isVisible$1(getDenyButton()) && !isVisible$1(getCancelButton()); - }; + const allButtonsAreHidden = () => !isVisible$1(getConfirmButton()) && !isVisible$1(getDenyButton()) && !isVisible$1(getCancelButton()); /** * @param {HTMLElement} elem * @returns {boolean} */ - var isScrollable = function isScrollable(elem) { - return !!(elem.scrollHeight > elem.clientHeight); - }; + const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight); /** * borrowed from https://stackoverflow.com/a/46352119 @@ -926,10 +649,10 @@ * @param {HTMLElement} elem * @returns {boolean} */ - var hasCssAnimation = function hasCssAnimation(elem) { - var style = window.getComputedStyle(elem); - var animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); - var transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); + const hasCssAnimation = elem => { + const style = window.getComputedStyle(elem); + const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0'); + const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0'); return animDuration > 0 || transDuration > 0; }; @@ -937,9 +660,9 @@ * @param {number} timer * @param {boolean} reset */ - var animateTimerProgressBar = function animateTimerProgressBar(timer) { - var reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var timerProgressBar = getTimerProgressBar(); + const animateTimerProgressBar = function (timer) { + let reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + const timerProgressBar = getTimerProgressBar(); if (!timerProgressBar) { return; } @@ -948,23 +671,23 @@ timerProgressBar.style.transition = 'none'; timerProgressBar.style.width = '100%'; } - setTimeout(function () { - timerProgressBar.style.transition = "width ".concat(timer / 1000, "s linear"); + setTimeout(() => { + timerProgressBar.style.transition = `width ${timer / 1000}s linear`; timerProgressBar.style.width = '0%'; }, 10); } }; - var stopTimerProgressBar = function stopTimerProgressBar() { - var timerProgressBar = getTimerProgressBar(); + const stopTimerProgressBar = () => { + const timerProgressBar = getTimerProgressBar(); if (!timerProgressBar) { return; } - var timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width); timerProgressBar.style.removeProperty('transition'); timerProgressBar.style.width = '100%'; - var timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); - var timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100; - timerProgressBar.style.width = "".concat(timerProgressBarPercent, "%"); + const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width); + const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100; + timerProgressBar.style.width = `${timerProgressBarPercent}%`; }; /** @@ -972,17 +695,48 @@ * * @returns {boolean} */ - var isNodeEnv = function isNodeEnv() { - return typeof window === 'undefined' || typeof document === 'undefined'; - }; - - var sweetHTML = "\n
        \n \n
          \n
          \n \n

          \n
          \n \n \n
          \n \n \n
          \n \n
          \n \n \n
          \n
          \n
          \n \n \n \n
          \n
          \n
          \n
          \n
          \n
          \n").replace(/(^|\n)\s*/g, ''); + const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined'; + + const sweetHTML = ` +
          + +
            +
            + +

            +
            + + +
            + + +
            + +
            + + +
            +
            +
            + + + +
            +
            +
            +
            +
            +
            +`.replace(/(^|\n)\s*/g, ''); /** * @returns {boolean} */ - var resetOldContainer = function resetOldContainer() { - var oldContainer = getContainer(); + const resetOldContainer = () => { + const oldContainer = getContainer(); if (!oldContainer) { return false; } @@ -990,31 +744,31 @@ removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]); return true; }; - var resetValidationMessage$1 = function resetValidationMessage() { + const resetValidationMessage$1 = () => { globalState.currentInstance.resetValidationMessage(); }; - var addInputChangeListeners = function addInputChangeListeners() { - var popup = getPopup(); - var input = getDirectChildByClass(popup, swalClasses.input); - var file = getDirectChildByClass(popup, swalClasses.file); + const addInputChangeListeners = () => { + const popup = getPopup(); + const input = getDirectChildByClass(popup, swalClasses.input); + const file = getDirectChildByClass(popup, swalClasses.file); /** @type {HTMLInputElement} */ - var range = popup.querySelector(".".concat(swalClasses.range, " input")); + const range = popup.querySelector(`.${swalClasses.range} input`); /** @type {HTMLOutputElement} */ - var rangeOutput = popup.querySelector(".".concat(swalClasses.range, " output")); - var select = getDirectChildByClass(popup, swalClasses.select); + const rangeOutput = popup.querySelector(`.${swalClasses.range} output`); + const select = getDirectChildByClass(popup, swalClasses.select); /** @type {HTMLInputElement} */ - var checkbox = popup.querySelector(".".concat(swalClasses.checkbox, " input")); - var textarea = getDirectChildByClass(popup, swalClasses.textarea); + const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`); + const textarea = getDirectChildByClass(popup, swalClasses.textarea); input.oninput = resetValidationMessage$1; file.onchange = resetValidationMessage$1; select.onchange = resetValidationMessage$1; checkbox.onchange = resetValidationMessage$1; textarea.oninput = resetValidationMessage$1; - range.oninput = function () { + range.oninput = () => { resetValidationMessage$1(); rangeOutput.value = range.value; }; - range.onchange = function () { + range.onchange = () => { resetValidationMessage$1(); rangeOutput.value = range.value; }; @@ -1024,15 +778,13 @@ * @param {string | HTMLElement} target * @returns {HTMLElement} */ - var getTarget = function getTarget(target) { - return typeof target === 'string' ? document.querySelector(target) : target; - }; + const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target; /** * @param {SweetAlertOptions} params */ - var setupAccessibility = function setupAccessibility(params) { - var popup = getPopup(); + const setupAccessibility = params => { + const popup = getPopup(); popup.setAttribute('role', params.toast ? 'alert' : 'dialog'); popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive'); if (!params.toast) { @@ -1043,7 +795,7 @@ /** * @param {HTMLElement} targetElement */ - var setupRTL = function setupRTL(targetElement) { + const setupRTL = targetElement => { if (window.getComputedStyle(targetElement).direction === 'rtl') { addClass(getContainer(), swalClasses.rtl); } @@ -1054,20 +806,21 @@ * * @param {SweetAlertOptions} params */ - var init = function init(params) { + const init = params => { // Clean up the old popup container if it exists - var oldContainerExisted = resetOldContainer(); + const oldContainerExisted = resetOldContainer(); if (isNodeEnv()) { error('SweetAlert2 requires document to initialize'); return; } - var container = document.createElement('div'); + const container = document.createElement('div'); container.className = swalClasses.container; if (oldContainerExisted) { addClass(container, swalClasses['no-transition']); } setInnerHtml(container, sweetHTML); - var targetElement = getTarget(params.target); + container.dataset['swal2Theme'] = params.theme; + const targetElement = getTarget(params.target); targetElement.appendChild(container); setupAccessibility(params); setupRTL(targetElement); @@ -1078,14 +831,14 @@ * @param {HTMLElement | object | string} param * @param {HTMLElement} target */ - var parseHtmlToContainer = function parseHtmlToContainer(param, target) { + const parseHtmlToContainer = (param, target) => { // DOM element if (param instanceof HTMLElement) { target.appendChild(param); } // Object - else if (_typeof(param) === 'object') { + else if (typeof param === 'object') { handleObject(param, target); } @@ -1099,7 +852,7 @@ * @param {any} param * @param {HTMLElement} target */ - var handleObject = function handleObject(param, target) { + const handleObject = (param, target) => { // JQuery element(s) if (param.jquery) { handleJqueryElem(target, param); @@ -1115,10 +868,10 @@ * @param {HTMLElement} target * @param {any} elem */ - var handleJqueryElem = function handleJqueryElem(target, elem) { + const handleJqueryElem = (target, elem) => { target.textContent = ''; if (0 in elem) { - for (var i = 0; (i in elem); i++) { + for (let i = 0; i in elem; i++) { target.appendChild(elem[i].cloneNode(true)); } } else { @@ -1126,35 +879,13 @@ } }; - /** - * @returns {'webkitAnimationEnd' | 'animationend' | false} - */ - var animationEndEvent = function () { - // Prevent run in Node env - if (isNodeEnv()) { - return false; - } - var testEl = document.createElement('div'); - - // Chrome, Safari and Opera - if (typeof testEl.style.webkitAnimation !== 'undefined') { - return 'webkitAnimationEnd'; - } - - // Standard syntax - if (typeof testEl.style.animation !== 'undefined') { - return 'animationend'; - } - return false; - }(); - /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderActions = function renderActions(instance, params) { - var actions = getActions(); - var loader = getLoader(); + const renderActions = (instance, params) => { + const actions = getActions(); + const loader = getLoader(); if (!actions || !loader) { return; } @@ -1183,9 +914,9 @@ * @param {SweetAlertOptions} params */ function renderButtons(actions, loader, params) { - var confirmButton = getConfirmButton(); - var denyButton = getDenyButton(); - var cancelButton = getCancelButton(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); if (!confirmButton || !denyButton || !cancelButton) { return; } @@ -1241,22 +972,22 @@ * @param {SweetAlertOptions} params */ function renderButton(button, buttonType, params) { - var buttonName = /** @type {'Confirm' | 'Deny' | 'Cancel'} */capitalizeFirstLetter(buttonType); - toggle(button, params["show".concat(buttonName, "Button")], 'inline-block'); - setInnerHtml(button, params["".concat(buttonType, "ButtonText")] || ''); // Set caption text - button.setAttribute('aria-label', params["".concat(buttonType, "ButtonAriaLabel")] || ''); // ARIA label + const buttonName = /** @type {'Confirm' | 'Deny' | 'Cancel'} */capitalizeFirstLetter(buttonType); + toggle(button, params[`show${buttonName}Button`], 'inline-block'); + setInnerHtml(button, params[`${buttonType}ButtonText`] || ''); // Set caption text + button.setAttribute('aria-label', params[`${buttonType}ButtonAriaLabel`] || ''); // ARIA label // Add buttons custom classes button.className = swalClasses[buttonType]; - applyCustomClass(button, params, "".concat(buttonType, "Button")); + applyCustomClass(button, params, `${buttonType}Button`); } /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderCloseButton = function renderCloseButton(instance, params) { - var closeButton = getCloseButton(); + const renderCloseButton = (instance, params) => { + const closeButton = getCloseButton(); if (!closeButton) { return; } @@ -1272,8 +1003,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderContainer = function renderContainer(instance, params) { - var container = getContainer(); + const renderContainer = (instance, params) => { + const container = getContainer(); if (!container) { return; } @@ -1321,7 +1052,7 @@ if (!grow) { return; } - addClass(container, swalClasses["grow-".concat(grow)]); + addClass(container, swalClasses[`grow-${grow}`]); } /** @@ -1339,22 +1070,25 @@ domCache: new WeakMap() }; + /// + + /** @type {InputClass[]} */ - var inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; + const inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea']; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderInput = function renderInput(instance, params) { - var popup = getPopup(); + const renderInput = (instance, params) => { + const popup = getPopup(); if (!popup) { return; } - var innerParams = privateProps.innerParams.get(instance); - var rerender = !innerParams || params.input !== innerParams.input; - inputClasses.forEach(function (inputClass) { - var inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); + const innerParams = privateProps.innerParams.get(instance); + const rerender = !innerParams || params.input !== innerParams.input; + inputClasses.forEach(inputClass => { + const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); if (!inputContainer) { return; } @@ -1380,21 +1114,24 @@ /** * @param {SweetAlertOptions} params */ - var showInput = function showInput(params) { + const showInput = params => { if (!params.input) { return; } if (!renderInputType[params.input]) { - error("Unexpected type of input! Expected ".concat(Object.keys(renderInputType).join(' | '), ", got \"").concat(params.input, "\"")); + error(`Unexpected type of input! Expected ${Object.keys(renderInputType).join(' | ')}, got "${params.input}"`); return; } - var inputContainer = getInputContainer(params.input); - var input = renderInputType[params.input](inputContainer, params); + const inputContainer = getInputContainer(params.input); + if (!inputContainer) { + return; + } + const input = renderInputType[params.input](inputContainer, params); show(inputContainer); // input autofocus if (params.inputAutoFocus) { - setTimeout(function () { + setTimeout(() => { focusInput(input); }); } @@ -1403,9 +1140,9 @@ /** * @param {HTMLInputElement} input */ - var removeAttributes = function removeAttributes(input) { - for (var i = 0; i < input.attributes.length; i++) { - var attrName = input.attributes[i].name; + const removeAttributes = input => { + for (let i = 0; i < input.attributes.length; i++) { + const attrName = input.attributes[i].name; if (!['id', 'type', 'value', 'style'].includes(attrName)) { input.removeAttribute(attrName); } @@ -1416,13 +1153,17 @@ * @param {InputClass} inputClass * @param {SweetAlertOptions['inputAttributes']} inputAttributes */ - var setAttributes = function setAttributes(inputClass, inputAttributes) { - var input = getInput$1(getPopup(), inputClass); + const setAttributes = (inputClass, inputAttributes) => { + const popup = getPopup(); + if (!popup) { + return; + } + const input = getInput$1(popup, inputClass); if (!input) { return; } removeAttributes(input); - for (var attr in inputAttributes) { + for (const attr in inputAttributes) { input.setAttribute(attr, inputAttributes[attr]); } }; @@ -1430,10 +1171,13 @@ /** * @param {SweetAlertOptions} params */ - var setCustomClass = function setCustomClass(params) { - var inputContainer = getInputContainer(params.input); - if (_typeof(params.customClass) === 'object') { - addClass(inputContainer, params.customClass.input); + const setCustomClass = params => { + if (!params.input) { + return; + } + const inputContainer = getInputContainer(params.input); + if (inputContainer) { + applyCustomClass(inputContainer, params, 'input'); } }; @@ -1441,8 +1185,8 @@ * @param {HTMLInputElement | HTMLTextAreaElement} input * @param {SweetAlertOptions} params */ - var setInputPlaceholder = function setInputPlaceholder(input, params) { - if (!input.placeholder || params.inputPlaceholder) { + const setInputPlaceholder = (input, params) => { + if (!input.placeholder && params.inputPlaceholder) { input.placeholder = params.inputPlaceholder; } }; @@ -1452,13 +1196,13 @@ * @param {Input} prependTo * @param {SweetAlertOptions} params */ - var setInputLabel = function setInputLabel(input, prependTo, params) { + const setInputLabel = (input, prependTo, params) => { if (params.inputLabel) { - var label = document.createElement('label'); - var labelClass = swalClasses['input-label']; + const label = document.createElement('label'); + const labelClass = swalClasses['input-label']; label.setAttribute('for', input.id); label.className = labelClass; - if (_typeof(params.customClass) === 'object') { + if (typeof params.customClass === 'object') { addClass(label, params.customClass.inputLabel); } label.innerText = params.inputLabel; @@ -1467,34 +1211,39 @@ }; /** - * @param {SweetAlertOptions['input']} inputType - * @returns {HTMLElement} + * @param {SweetAlertInput} inputType + * @returns {HTMLElement | undefined} */ - var getInputContainer = function getInputContainer(inputType) { - return getDirectChildByClass(getPopup(), swalClasses[inputType] || swalClasses.input); + const getInputContainer = inputType => { + const popup = getPopup(); + if (!popup) { + return; + } + return getDirectChildByClass(popup, swalClasses[(/** @type {SwalClass} */inputType)] || swalClasses.input); }; /** * @param {HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement} input * @param {SweetAlertOptions['inputValue']} inputValue */ - var checkAndSetInputValue = function checkAndSetInputValue(input, inputValue) { - if (['string', 'number'].includes(_typeof(inputValue))) { - input.value = "".concat(inputValue); + const checkAndSetInputValue = (input, inputValue) => { + if (['string', 'number'].includes(typeof inputValue)) { + input.value = `${inputValue}`; } else if (!isPromise(inputValue)) { - warn("Unexpected type of inputValue! Expected \"string\", \"number\" or \"Promise\", got \"".concat(_typeof(inputValue), "\"")); + warn(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof inputValue}"`); } }; /** @type {Record Input>} */ - var renderInputType = {}; + const renderInputType = {}; /** * @param {HTMLInputElement} input * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType['datetime-local'] = renderInputType.time = renderInputType.week = renderInputType.month = function (input, params) { + renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType['datetime-local'] = renderInputType.time = renderInputType.week = renderInputType.month = /** @type {(input: Input | HTMLElement, params: SweetAlertOptions) => Input} */ + (input, params) => { checkAndSetInputValue(input, params.inputValue); setInputLabel(input, input, params); setInputPlaceholder(input, params); @@ -1507,7 +1256,7 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.file = function (input, params) { + renderInputType.file = (input, params) => { setInputLabel(input, input, params); setInputPlaceholder(input, params); return input; @@ -1518,9 +1267,9 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.range = function (range, params) { - var rangeInput = range.querySelector('input'); - var rangeOutput = range.querySelector('output'); + renderInputType.range = (range, params) => { + const rangeInput = range.querySelector('input'); + const rangeOutput = range.querySelector('output'); checkAndSetInputValue(rangeInput, params.inputValue); rangeInput.type = params.input; checkAndSetInputValue(rangeOutput, params.inputValue); @@ -1533,10 +1282,10 @@ * @param {SweetAlertOptions} params * @returns {HTMLSelectElement} */ - renderInputType.select = function (select, params) { + renderInputType.select = (select, params) => { select.textContent = ''; if (params.inputPlaceholder) { - var placeholder = document.createElement('option'); + const placeholder = document.createElement('option'); setInnerHtml(placeholder, params.inputPlaceholder); placeholder.value = ''; placeholder.disabled = true; @@ -1551,7 +1300,7 @@ * @param {HTMLInputElement} radio * @returns {HTMLInputElement} */ - renderInputType.radio = function (radio) { + renderInputType.radio = radio => { radio.textContent = ''; return radio; }; @@ -1561,12 +1310,12 @@ * @param {SweetAlertOptions} params * @returns {HTMLInputElement} */ - renderInputType.checkbox = function (checkboxContainer, params) { - var checkbox = getInput$1(getPopup(), 'checkbox'); + renderInputType.checkbox = (checkboxContainer, params) => { + const checkbox = getInput$1(getPopup(), 'checkbox'); checkbox.value = '1'; checkbox.checked = Boolean(params.inputValue); - var label = checkboxContainer.querySelector('span'); - setInnerHtml(label, params.inputPlaceholder); + const label = checkboxContainer.querySelector('span'); + setInnerHtml(label, params.inputPlaceholder || params.inputLabel); return checkbox; }; @@ -1575,7 +1324,7 @@ * @param {SweetAlertOptions} params * @returns {HTMLTextAreaElement} */ - renderInputType.textarea = function (textarea, params) { + renderInputType.textarea = (textarea, params) => { checkAndSetInputValue(textarea, params.inputValue); setInputPlaceholder(textarea, params); setInputLabel(textarea, textarea, params); @@ -1584,23 +1333,21 @@ * @param {HTMLElement} el * @returns {number} */ - var getMargin = function getMargin(el) { - return parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); - }; + const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); // https://github.com/sweetalert2/sweetalert2/issues/2291 - setTimeout(function () { + setTimeout(() => { // https://github.com/sweetalert2/sweetalert2/issues/1699 if ('MutationObserver' in window) { - var initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); - var textareaResizeHandler = function textareaResizeHandler() { + const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width); + const textareaResizeHandler = () => { // check if texarea is still in document (i.e. popup wasn't closed in the meantime) if (!document.body.contains(textarea)) { return; } - var textareaWidth = textarea.offsetWidth + getMargin(textarea); + const textareaWidth = textarea.offsetWidth + getMargin(textarea); if (textareaWidth > initialPopupWidth) { - getPopup().style.width = "".concat(textareaWidth, "px"); + getPopup().style.width = `${textareaWidth}px`; } else { applyNumericalStyle(getPopup(), 'width', params.width); } @@ -1618,8 +1365,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderContent = function renderContent(instance, params) { - var htmlContainer = getHtmlContainer(); + const renderContent = (instance, params) => { + const htmlContainer = getHtmlContainer(); if (!htmlContainer) { return; } @@ -1649,8 +1396,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderFooter = function renderFooter(instance, params) { - var footer = getFooter(); + const renderFooter = (instance, params) => { + const footer = getFooter(); if (!footer) { return; } @@ -1668,9 +1415,9 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderIcon = function renderIcon(instance, params) { - var innerParams = privateProps.innerParams.get(instance); - var icon = getIcon(); + const renderIcon = (instance, params) => { + const innerParams = privateProps.innerParams.get(instance); + const icon = getIcon(); if (!icon) { return; } @@ -1687,7 +1434,7 @@ return; } if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) { - error("Unknown icon! Expected \"success\", \"error\", \"warning\", \"info\" or \"question\", got \"".concat(params.icon, "\"")); + error(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${params.icon}"`); hide(icon); return; } @@ -1699,17 +1446,18 @@ // Animate icon addClass(icon, params.showClass && params.showClass.icon); + + // Re-adjust the success icon on system theme change + const colorSchemeQueryList = window.matchMedia('(prefers-color-scheme: dark)'); + colorSchemeQueryList.addEventListener('change', adjustSuccessIconBackgroundColor); }; /** * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var applyStyles = function applyStyles(icon, params) { - for (var _i = 0, _Object$entries = Object.entries(iconTypes); _i < _Object$entries.length; _i++) { - var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), - iconType = _Object$entries$_i[0], - iconClassName = _Object$entries$_i[1]; + const applyStyles = (icon, params) => { + for (const [iconType, iconClassName] of Object.entries(iconTypes)) { if (params.icon !== iconType) { removeClass(icon, iconClassName); } @@ -1727,31 +1475,41 @@ }; // Adjust success icon background color to match the popup background color - var adjustSuccessIconBackgroundColor = function adjustSuccessIconBackgroundColor() { - var popup = getPopup(); + const adjustSuccessIconBackgroundColor = () => { + const popup = getPopup(); if (!popup) { return; } - var popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); + const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color'); /** @type {NodeListOf} */ - var successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); - for (var i = 0; i < successIconParts.length; i++) { + const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix'); + for (let i = 0; i < successIconParts.length; i++) { successIconParts[i].style.backgroundColor = popupBackgroundColor; } }; - var successIconHtml = "\n
            \n \n
            \n
            \n"; - var errorIconHtml = "\n \n \n \n \n"; + const successIconHtml = ` +
            + +
            +
            +`; + const errorIconHtml = ` + + + + +`; /** * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var setContent = function setContent(icon, params) { + const setContent = (icon, params) => { if (!params.icon && !params.iconHtml) { return; } - var oldContent = icon.innerHTML; - var newContent = ''; + let oldContent = icon.innerHTML; + let newContent = ''; if (params.iconHtml) { newContent = iconContent(params.iconHtml); } else if (params.icon === 'success') { @@ -1760,7 +1518,7 @@ } else if (params.icon === 'error') { newContent = errorIconHtml; } else if (params.icon) { - var defaultIconHtml = { + const defaultIconHtml = { question: '?', warning: '!', info: 'i' @@ -1776,14 +1534,13 @@ * @param {HTMLElement} icon * @param {SweetAlertOptions} params */ - var setColor = function setColor(icon, params) { + const setColor = (icon, params) => { if (!params.iconColor) { return; } icon.style.color = params.iconColor; icon.style.borderColor = params.iconColor; - for (var _i2 = 0, _arr = ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']; _i2 < _arr.length; _i2++) { - var sel = _arr[_i2]; + for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) { setStyle(icon, sel, 'background-color', params.iconColor); } setStyle(icon, '.swal2-success-ring', 'border-color', params.iconColor); @@ -1793,16 +1550,14 @@ * @param {string} content * @returns {string} */ - var iconContent = function iconContent(content) { - return "
            ").concat(content, "
            "); - }; + const iconContent = content => `
            ${content}
            `; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderImage = function renderImage(instance, params) { - var image = getImage(); + const renderImage = (instance, params) => { + const image = getImage(); if (!image) { return; } @@ -1825,13 +1580,99 @@ applyCustomClass(image, params, 'image'); }; + let dragging = false; + let mousedownX = 0; + let mousedownY = 0; + let initialX = 0; + let initialY = 0; + + /** + * @param {HTMLElement} popup + */ + const addDraggableListeners = popup => { + popup.addEventListener('mousedown', down); + document.body.addEventListener('mousemove', move); + popup.addEventListener('mouseup', up); + popup.addEventListener('touchstart', down); + document.body.addEventListener('touchmove', move); + popup.addEventListener('touchend', up); + }; + + /** + * @param {HTMLElement} popup + */ + const removeDraggableListeners = popup => { + popup.removeEventListener('mousedown', down); + document.body.removeEventListener('mousemove', move); + popup.removeEventListener('mouseup', up); + popup.removeEventListener('touchstart', down); + document.body.removeEventListener('touchmove', move); + popup.removeEventListener('touchend', up); + }; + + /** + * @param {MouseEvent | TouchEvent} event + */ + const down = event => { + const popup = getPopup(); + if (event.target === popup || getIcon().contains(/** @type {HTMLElement} */event.target)) { + dragging = true; + const clientXY = getClientXY(event); + mousedownX = clientXY.clientX; + mousedownY = clientXY.clientY; + initialX = parseInt(popup.style.insetInlineStart) || 0; + initialY = parseInt(popup.style.insetBlockStart) || 0; + addClass(popup, 'swal2-dragging'); + } + }; + + /** + * @param {MouseEvent | TouchEvent} event + */ + const move = event => { + const popup = getPopup(); + if (dragging) { + let { + clientX, + clientY + } = getClientXY(event); + popup.style.insetInlineStart = `${initialX + (clientX - mousedownX)}px`; + popup.style.insetBlockStart = `${initialY + (clientY - mousedownY)}px`; + } + }; + const up = () => { + const popup = getPopup(); + dragging = false; + removeClass(popup, 'swal2-dragging'); + }; + + /** + * @param {MouseEvent | TouchEvent} event + * @returns {{ clientX: number, clientY: number }} + */ + const getClientXY = event => { + let clientX = 0, + clientY = 0; + if (event.type.startsWith('mouse')) { + clientX = /** @type {MouseEvent} */event.clientX; + clientY = /** @type {MouseEvent} */event.clientY; + } else if (event.type.startsWith('touch')) { + clientX = /** @type {TouchEvent} */event.touches[0].clientX; + clientY = /** @type {TouchEvent} */event.touches[0].clientY; + } + return { + clientX, + clientY + }; + }; + /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderPopup = function renderPopup(instance, params) { - var container = getContainer(); - var popup = getPopup(); + const renderPopup = (instance, params) => { + const container = getContainer(); + const popup = getPopup(); if (!container || !popup) { return; } @@ -1841,8 +1682,10 @@ if (params.toast) { applyNumericalStyle(container, 'width', params.width); popup.style.width = '100%'; - var loader = getLoader(); - loader && popup.insertBefore(loader, getIcon()); + const loader = getLoader(); + if (loader) { + popup.insertBefore(loader, getIcon()); + } } else { applyNumericalStyle(popup, 'width', params.width); } @@ -1863,16 +1706,23 @@ // Classes addClasses$1(popup, params); + if (params.draggable && !params.toast) { + addClass(popup, swalClasses.draggable); + addDraggableListeners(popup); + } else { + removeClass(popup, swalClasses.draggable); + removeDraggableListeners(popup); + } }; /** * @param {HTMLElement} popup * @param {SweetAlertOptions} params */ - var addClasses$1 = function addClasses(popup, params) { - var showClass = params.showClass || {}; + const addClasses$1 = (popup, params) => { + const showClass = params.showClass || {}; // Default Class + showClass when updating Swal.update({}) - popup.className = "".concat(swalClasses.popup, " ").concat(isVisible$1(popup) ? showClass.popup : ''); + popup.className = `${swalClasses.popup} ${isVisible$1(popup) ? showClass.popup : ''}`; if (params.toast) { addClass([document.documentElement, document.body], swalClasses['toast-shown']); addClass(popup, swalClasses.toast); @@ -1882,13 +1732,14 @@ // Custom class applyCustomClass(popup, params, 'popup'); + // TODO: remove in the next major if (typeof params.customClass === 'string') { addClass(popup, params.customClass); } // Icon class (#1842) if (params.icon) { - addClass(popup, swalClasses["icon-".concat(params.icon)]); + addClass(popup, swalClasses[`icon-${params.icon}`]); } }; @@ -1896,13 +1747,15 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderProgressSteps = function renderProgressSteps(instance, params) { - var progressStepsContainer = getProgressSteps(); + const renderProgressSteps = (instance, params) => { + const progressStepsContainer = getProgressSteps(); if (!progressStepsContainer) { return; } - var progressSteps = params.progressSteps, - currentProgressStep = params.currentProgressStep; + const { + progressSteps, + currentProgressStep + } = params; if (!progressSteps || progressSteps.length === 0 || currentProgressStep === undefined) { hide(progressStepsContainer); return; @@ -1912,14 +1765,14 @@ if (currentProgressStep >= progressSteps.length) { warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)'); } - progressSteps.forEach(function (step, index) { - var stepEl = createStepElement(step); + progressSteps.forEach((step, index) => { + const stepEl = createStepElement(step); progressStepsContainer.appendChild(stepEl); if (index === currentProgressStep) { addClass(stepEl, swalClasses['active-progress-step']); } if (index !== progressSteps.length - 1) { - var lineEl = createLineElement(params); + const lineEl = createLineElement(params); progressStepsContainer.appendChild(lineEl); } }); @@ -1929,8 +1782,8 @@ * @param {string} step * @returns {HTMLLIElement} */ - var createStepElement = function createStepElement(step) { - var stepEl = document.createElement('li'); + const createStepElement = step => { + const stepEl = document.createElement('li'); addClass(stepEl, swalClasses['progress-step']); setInnerHtml(stepEl, step); return stepEl; @@ -1940,8 +1793,8 @@ * @param {SweetAlertOptions} params * @returns {HTMLLIElement} */ - var createLineElement = function createLineElement(params) { - var lineEl = document.createElement('li'); + const createLineElement = params => { + const lineEl = document.createElement('li'); addClass(lineEl, swalClasses['progress-step-line']); if (params.progressStepsDistance) { applyNumericalStyle(lineEl, 'width', params.progressStepsDistance); @@ -1953,8 +1806,8 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var renderTitle = function renderTitle(instance, params) { - var title = getTitle(); + const renderTitle = (instance, params) => { + const title = getTitle(); if (!title) { return; } @@ -1975,7 +1828,7 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var render = function render(instance, params) { + const render = (instance, params) => { renderPopup(instance, params); renderContainer(instance, params); renderProgressSteps(instance, params); @@ -1986,23 +1839,24 @@ renderContent(instance, params); renderActions(instance, params); renderFooter(instance, params); - var popup = getPopup(); + const popup = getPopup(); if (typeof params.didRender === 'function' && popup) { params.didRender(popup); } + globalState.eventEmitter.emit('didRender', popup); }; /* * Global function to determine if SweetAlert2 popup is shown */ - var isVisible = function isVisible() { + const isVisible = () => { return isVisible$1(getPopup()); }; /* * Global function to click 'Confirm' button */ - var clickConfirm = function clickConfirm() { + const clickConfirm = () => { var _dom$getConfirmButton; return (_dom$getConfirmButton = getConfirmButton()) === null || _dom$getConfirmButton === void 0 ? void 0 : _dom$getConfirmButton.click(); }; @@ -2010,7 +1864,7 @@ /* * Global function to click 'Deny' button */ - var clickDeny = function clickDeny() { + const clickDeny = () => { var _dom$getDenyButton; return (_dom$getDenyButton = getDenyButton()) === null || _dom$getDenyButton === void 0 ? void 0 : _dom$getDenyButton.click(); }; @@ -2018,7 +1872,7 @@ /* * Global function to click 'Cancel' button */ - var clickCancel = function clickCancel() { + const clickCancel = () => { var _dom$getCancelButton; return (_dom$getCancelButton = getCancelButton()) === null || _dom$getCancelButton === void 0 ? void 0 : _dom$getCancelButton.click(); }; @@ -2026,7 +1880,7 @@ /** @typedef {'cancel' | 'backdrop' | 'close' | 'esc' | 'timer'} DismissReason */ /** @type {Record} */ - var DismissReason = Object.freeze({ + const DismissReason = Object.freeze({ cancel: 'cancel', backdrop: 'backdrop', close: 'close', @@ -2037,7 +1891,7 @@ /** * @param {GlobalState} globalState */ - var removeKeydownHandler = function removeKeydownHandler(globalState) { + const removeKeydownHandler = globalState => { if (globalState.keydownTarget && globalState.keydownHandlerAdded) { globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, { capture: globalState.keydownListenerCapture @@ -2051,12 +1905,10 @@ * @param {SweetAlertOptions} innerParams * @param {*} dismissWith */ - var addKeydownHandler = function addKeydownHandler(globalState, innerParams, dismissWith) { + const addKeydownHandler = (globalState, innerParams, dismissWith) => { removeKeydownHandler(globalState); if (!innerParams.toast) { - globalState.keydownHandler = function (e) { - return keydownHandler(innerParams, e, dismissWith); - }; + globalState.keydownHandler = e => keydownHandler(innerParams, e, dismissWith); globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup(); globalState.keydownListenerCapture = innerParams.keydownListenerCapture; globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, { @@ -2070,9 +1922,9 @@ * @param {number} index * @param {number} increment */ - var setFocus = function setFocus(index, increment) { + const setFocus = (index, increment) => { var _dom$getPopup; - var focusableElements = getFocusableElements(); + const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match if (focusableElements.length) { index = index + increment; @@ -2091,15 +1943,15 @@ // no visible focusable elements, focus the popup (_dom$getPopup = getPopup()) === null || _dom$getPopup === void 0 || _dom$getPopup.focus(); }; - var arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; - var arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; + const arrowKeysNextButton = ['ArrowRight', 'ArrowDown']; + const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp']; /** * @param {SweetAlertOptions} innerParams * @param {KeyboardEvent} event * @param {Function} dismissWith */ - var keydownHandler = function keydownHandler(innerParams, event, dismissWith) { + const keydownHandler = (innerParams, event, dismissWith) => { if (!innerParams) { return; // This instance has already been destroyed } @@ -2126,7 +1978,7 @@ } // ARROWS - switch focus between buttons - else if ([].concat(arrowKeysNextButton, arrowKeysPreviousButton).includes(event.key)) { + else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(event.key)) { handleArrows(event.key); } @@ -2140,12 +1992,12 @@ * @param {KeyboardEvent} event * @param {SweetAlertOptions} innerParams */ - var handleEnter = function handleEnter(event, innerParams) { + const handleEnter = (event, innerParams) => { // https://github.com/sweetalert2/sweetalert2/issues/2386 if (!callIfFunction(innerParams.allowEnterKey)) { return; } - var input = getInput$1(getPopup(), innerParams.input); + const input = getInput$1(getPopup(), innerParams.input); if (event.target && input && event.target instanceof HTMLElement && event.target.outerHTML === input.outerHTML) { if (['textarea', 'file'].includes(innerParams.input)) { return; // do not submit @@ -2158,11 +2010,11 @@ /** * @param {KeyboardEvent} event */ - var handleTab = function handleTab(event) { - var targetElement = event.target; - var focusableElements = getFocusableElements(); - var btnIndex = -1; - for (var i = 0; i < focusableElements.length; i++) { + const handleTab = event => { + const targetElement = event.target; + const focusableElements = getFocusableElements(); + let btnIndex = -1; + for (let i = 0; i < focusableElements.length; i++) { if (targetElement === focusableElements[i]) { btnIndex = i; break; @@ -2185,25 +2037,25 @@ /** * @param {string} key */ - var handleArrows = function handleArrows(key) { - var actions = getActions(); - var confirmButton = getConfirmButton(); - var denyButton = getDenyButton(); - var cancelButton = getCancelButton(); + const handleArrows = key => { + const actions = getActions(); + const confirmButton = getConfirmButton(); + const denyButton = getDenyButton(); + const cancelButton = getCancelButton(); if (!actions || !confirmButton || !denyButton || !cancelButton) { return; } /** @type HTMLElement[] */ - var buttons = [confirmButton, denyButton, cancelButton]; + const buttons = [confirmButton, denyButton, cancelButton]; if (document.activeElement instanceof HTMLElement && !buttons.includes(document.activeElement)) { return; } - var sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; - var buttonToFocus = document.activeElement; + const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling'; + let buttonToFocus = document.activeElement; if (!buttonToFocus) { return; } - for (var i = 0; i < actions.children.length; i++) { + for (let i = 0; i < actions.children.length; i++) { buttonToFocus = buttonToFocus[sibling]; if (!buttonToFocus) { return; @@ -2222,7 +2074,7 @@ * @param {SweetAlertOptions} innerParams * @param {Function} dismissWith */ - var handleEsc = function handleEsc(event, innerParams, dismissWith) { + const handleEsc = (event, innerParams, dismissWith) => { if (callIfFunction(innerParams.allowEscapeKey)) { event.preventDefault(); dismissWith(DismissReason.esc); @@ -2249,10 +2101,10 @@ // elements not within the active modal dialog will not be surfaced if a user opens a screen // reader’s list of elements (headings, form controls, landmarks, etc.) in the document. - var setAriaHidden = function setAriaHidden() { - var container = getContainer(); - var bodyChildren = Array.from(document.body.children); - bodyChildren.forEach(function (el) { + const setAriaHidden = () => { + const container = getContainer(); + const bodyChildren = Array.from(document.body.children); + bodyChildren.forEach(el => { if (el.contains(container)) { return; } @@ -2262,9 +2114,9 @@ el.setAttribute('aria-hidden', 'true'); }); }; - var unsetAriaHidden = function unsetAriaHidden() { - var bodyChildren = Array.from(document.body.children); - bodyChildren.forEach(function (el) { + const unsetAriaHidden = () => { + const bodyChildren = Array.from(document.body.children); + bodyChildren.forEach(el => { if (el.hasAttribute('data-previous-aria-hidden')) { el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden') || ''); el.removeAttribute('data-previous-aria-hidden'); @@ -2275,16 +2127,16 @@ }; // @ts-ignore - var isSafariOrIOS = typeof window !== 'undefined' && !!window.GestureEvent; // true for Safari desktop + all iOS browsers https://stackoverflow.com/a/70585394 + const isSafariOrIOS = typeof window !== 'undefined' && !!window.GestureEvent; // true for Safari desktop + all iOS browsers https://stackoverflow.com/a/70585394 /** * Fix iOS scrolling * http://stackoverflow.com/q/39626302 */ - var iOSfix = function iOSfix() { + const iOSfix = () => { if (isSafariOrIOS && !hasClass(document.body, swalClasses.iosfix)) { - var offset = document.body.scrollTop; - document.body.style.top = "".concat(offset * -1, "px"); + const offset = document.body.scrollTop; + document.body.style.top = `${offset * -1}px`; addClass(document.body, swalClasses.iosfix); lockBodyScroll(); } @@ -2293,23 +2145,23 @@ /** * https://github.com/sweetalert2/sweetalert2/issues/1246 */ - var lockBodyScroll = function lockBodyScroll() { - var container = getContainer(); + const lockBodyScroll = () => { + const container = getContainer(); if (!container) { return; } /** @type {boolean} */ - var preventTouchMove; + let preventTouchMove; /** * @param {TouchEvent} event */ - container.ontouchstart = function (event) { + container.ontouchstart = event => { preventTouchMove = shouldPreventTouchMove(event); }; /** * @param {TouchEvent} event */ - container.ontouchmove = function (event) { + container.ontouchmove = event => { if (preventTouchMove) { event.preventDefault(); event.stopPropagation(); @@ -2321,10 +2173,10 @@ * @param {TouchEvent} event * @returns {boolean} */ - var shouldPreventTouchMove = function shouldPreventTouchMove(event) { - var target = event.target; - var container = getContainer(); - var htmlContainer = getHtmlContainer(); + const shouldPreventTouchMove = event => { + const target = event.target; + const container = getContainer(); + const htmlContainer = getHtmlContainer(); if (!container || !htmlContainer) { return false; } @@ -2352,7 +2204,7 @@ * @param {*} event * @returns {boolean} */ - var isStylus = function isStylus(event) { + const isStylus = event => { return event.touches && event.touches.length && event.touches[0].touchType === 'stylus'; }; @@ -2362,12 +2214,12 @@ * @param {TouchEvent} event * @returns {boolean} */ - var isZoom = function isZoom(event) { + const isZoom = event => { return event.touches && event.touches.length > 1; }; - var undoIOSfix = function undoIOSfix() { + const undoIOSfix = () => { if (hasClass(document.body, swalClasses.iosfix)) { - var offset = parseInt(document.body.style.top, 10); + const offset = parseInt(document.body.style.top, 10); removeClass(document.body, swalClasses.iosfix); document.body.style.top = ''; document.body.scrollTop = offset * -1; @@ -2380,11 +2232,11 @@ * * @returns {number} */ - var measureScrollbar = function measureScrollbar() { - var scrollDiv = document.createElement('div'); + const measureScrollbar = () => { + const scrollDiv = document.createElement('div'); scrollDiv.className = swalClasses['scrollbar-measure']; document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; document.body.removeChild(scrollDiv); return scrollbarWidth; }; @@ -2393,12 +2245,12 @@ * Remember state in cases where opening and handling a modal will fiddle with it. * @type {number | null} */ - var previousBodyPadding = null; + let previousBodyPadding = null; /** * @param {string} initialBodyOverflow */ - var replaceScrollbarWithPadding = function replaceScrollbarWithPadding(initialBodyOverflow) { + const replaceScrollbarWithPadding = initialBodyOverflow => { // for queues, do not do this more than once if (previousBodyPadding !== null) { return; @@ -2408,12 +2260,12 @@ ) { // add padding so the content doesn't shift after removal of scrollbar previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right')); - document.body.style.paddingRight = "".concat(previousBodyPadding + measureScrollbar(), "px"); + document.body.style.paddingRight = `${previousBodyPadding + measureScrollbar()}px`; } }; - var undoReplaceScrollbarWithPadding = function undoReplaceScrollbarWithPadding() { + const undoReplaceScrollbarWithPadding = () => { if (previousBodyPadding !== null) { - document.body.style.paddingRight = "".concat(previousBodyPadding, "px"); + document.body.style.paddingRight = `${previousBodyPadding}px`; previousBodyPadding = null; } }; @@ -2428,9 +2280,7 @@ if (isToast()) { triggerDidCloseAndDispose(instance, didClose); } else { - restoreActiveElement(returnFocus).then(function () { - return triggerDidCloseAndDispose(instance, didClose); - }); + restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose)); removeKeydownHandler(globalState); } @@ -2465,8 +2315,8 @@ */ function close(resolveValue) { resolveValue = prepareResolveValue(resolveValue); - var swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); - var didClose = triggerClosePopup(this); + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this); + const didClose = triggerClosePopup(this); if (this.isAwaitingPromise) { // A swal awaiting for a promise (after a click on Confirm or Deny) cannot be dismissed anymore #2335 if (!resolveValue.isDismissed) { @@ -2478,18 +2328,18 @@ swalPromiseResolve(resolveValue); } } - var triggerClosePopup = function triggerClosePopup(instance) { - var popup = getPopup(); + const triggerClosePopup = instance => { + const popup = getPopup(); if (!popup) { return false; } - var innerParams = privateProps.innerParams.get(instance); + const innerParams = privateProps.innerParams.get(instance); if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) { return false; } removeClass(popup, innerParams.showClass.popup); addClass(popup, innerParams.hideClass.popup); - var backdrop = getContainer(); + const backdrop = getContainer(); removeClass(backdrop, innerParams.showClass.backdrop); addClass(backdrop, innerParams.hideClass.backdrop); handlePopupAnimation(instance, popup, innerParams); @@ -2500,7 +2350,7 @@ * @param {any} error */ function rejectPromise(error) { - var rejectPromise = privateMethods.swalPromiseReject.get(this); + const rejectPromise = privateMethods.swalPromiseReject.get(this); handleAwaitingPromise(this); if (rejectPromise) { // Reject Swal promise @@ -2511,7 +2361,7 @@ /** * @param {SweetAlert} instance */ - var handleAwaitingPromise = function handleAwaitingPromise(instance) { + const handleAwaitingPromise = instance => { if (instance.isAwaitingPromise) { delete instance.isAwaitingPromise; // The instance might have been previously partly destroyed, we must resume the destroy process in this case #2335 @@ -2525,7 +2375,7 @@ * @param {any} resolveValue * @returns {SweetAlertResult} */ - var prepareResolveValue = function prepareResolveValue(resolveValue) { + const prepareResolveValue = resolveValue => { // When user calls Swal.close() if (typeof resolveValue === 'undefined') { return { @@ -2546,13 +2396,15 @@ * @param {HTMLElement} popup * @param {SweetAlertOptions} innerParams */ - var handlePopupAnimation = function handlePopupAnimation(instance, popup, innerParams) { - var container = getContainer(); + const handlePopupAnimation = (instance, popup, innerParams) => { + var _globalState$eventEmi; + const container = getContainer(); // If animation is supported, animate - var animationIsSupported = animationEndEvent && hasCssAnimation(popup); + const animationIsSupported = hasCssAnimation(popup); if (typeof innerParams.willClose === 'function') { innerParams.willClose(popup); } + (_globalState$eventEmi = globalState.eventEmitter) === null || _globalState$eventEmi === void 0 || _globalState$eventEmi.emit('willClose', popup); if (animationIsSupported) { animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose); } else { @@ -2568,28 +2420,35 @@ * @param {boolean} returnFocus * @param {Function} didClose */ - var animatePopup = function animatePopup(instance, popup, container, returnFocus, didClose) { - if (!animationEndEvent) { - return; - } + const animatePopup = (instance, popup, container, returnFocus, didClose) => { globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose); - popup.addEventListener(animationEndEvent, function (e) { + /** + * @param {AnimationEvent | TransitionEvent} e + */ + const swalCloseAnimationFinished = function (e) { if (e.target === popup) { - globalState.swalCloseEventFinishedCallback(); + var _globalState$swalClos; + (_globalState$swalClos = globalState.swalCloseEventFinishedCallback) === null || _globalState$swalClos === void 0 || _globalState$swalClos.call(globalState); delete globalState.swalCloseEventFinishedCallback; + popup.removeEventListener('animationend', swalCloseAnimationFinished); + popup.removeEventListener('transitionend', swalCloseAnimationFinished); } - }); + }; + popup.addEventListener('animationend', swalCloseAnimationFinished); + popup.addEventListener('transitionend', swalCloseAnimationFinished); }; /** * @param {SweetAlert} instance * @param {Function} didClose */ - var triggerDidCloseAndDispose = function triggerDidCloseAndDispose(instance, didClose) { - setTimeout(function () { + const triggerDidCloseAndDispose = (instance, didClose) => { + setTimeout(() => { + var _globalState$eventEmi2; if (typeof didClose === 'function') { didClose.bind(instance.params)(); } + (_globalState$eventEmi2 = globalState.eventEmitter) === null || _globalState$eventEmi2 === void 0 || _globalState$eventEmi2.emit('didClose'); // instance might have been destroyed already if (instance._destroy) { instance._destroy(); @@ -2603,16 +2462,16 @@ * * @param {HTMLButtonElement | null} [buttonToReplace] */ - var showLoading = function showLoading(buttonToReplace) { - var popup = getPopup(); + const showLoading = buttonToReplace => { + let popup = getPopup(); if (!popup) { - new Swal(); // eslint-disable-line no-new + new Swal(); } popup = getPopup(); if (!popup) { return; } - var loader = getLoader(); + const loader = getLoader(); if (isToast()) { hide(getIcon()); } else { @@ -2628,9 +2487,9 @@ * @param {HTMLElement} popup * @param {HTMLButtonElement | null} [buttonToReplace] */ - var replaceButton = function replaceButton(popup, buttonToReplace) { - var actions = getActions(); - var loader = getLoader(); + const replaceButton = (popup, buttonToReplace) => { + const actions = getActions(); + const loader = getLoader(); if (!actions || !loader) { return; } @@ -2650,12 +2509,10 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputOptionsAndValue = function handleInputOptionsAndValue(instance, params) { + const handleInputOptionsAndValue = (instance, params) => { if (params.input === 'select' || params.input === 'radio') { handleInputOptions(instance, params); - } else if (['text', 'email', 'number', 'tel', 'textarea'].some(function (i) { - return i === params.input; - }) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { + } else if (['text', 'email', 'number', 'tel', 'textarea'].some(i => i === params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) { showLoading(getConfirmButton()); handleInputValue(instance, params); } @@ -2666,8 +2523,8 @@ * @param {SweetAlertOptions} innerParams * @returns {SweetAlertInputValue} */ - var getInputValue = function getInputValue(instance, innerParams) { - var input = instance.getInput(); + const getInputValue = (instance, innerParams) => { + const input = instance.getInput(); if (!input) { return null; } @@ -2687,39 +2544,33 @@ * @param {HTMLInputElement} input * @returns {number} */ - var getCheckboxValue = function getCheckboxValue(input) { - return input.checked ? 1 : 0; - }; + const getCheckboxValue = input => input.checked ? 1 : 0; /** * @param {HTMLInputElement} input * @returns {string | null} */ - var getRadioValue = function getRadioValue(input) { - return input.checked ? input.value : null; - }; + const getRadioValue = input => input.checked ? input.value : null; /** * @param {HTMLInputElement} input * @returns {FileList | File | null} */ - var getFileValue = function getFileValue(input) { - return input.files && input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; - }; + const getFileValue = input => input.files && input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null; /** * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputOptions = function handleInputOptions(instance, params) { - var popup = getPopup(); + const handleInputOptions = (instance, params) => { + const popup = getPopup(); if (!popup) { return; } /** * @param {Record} inputOptions */ - var processInputOptions = function processInputOptions(inputOptions) { + const processInputOptions = inputOptions => { if (params.input === 'select') { populateSelectOptions(popup, formatInputOptions(inputOptions), params); } else if (params.input === 'radio') { @@ -2728,14 +2579,14 @@ }; if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) { showLoading(getConfirmButton()); - asPromise(params.inputOptions).then(function (inputOptions) { + asPromise(params.inputOptions).then(inputOptions => { instance.hideLoading(); processInputOptions(inputOptions); }); - } else if (_typeof(params.inputOptions) === 'object') { + } else if (typeof params.inputOptions === 'object') { processInputOptions(params.inputOptions); } else { - error("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(_typeof(params.inputOptions))); + error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`); } }; @@ -2743,19 +2594,19 @@ * @param {SweetAlert} instance * @param {SweetAlertOptions} params */ - var handleInputValue = function handleInputValue(instance, params) { - var input = instance.getInput(); + const handleInputValue = (instance, params) => { + const input = instance.getInput(); if (!input) { return; } hide(input); - asPromise(params.inputValue).then(function (inputValue) { - input.value = params.input === 'number' ? "".concat(parseFloat(inputValue) || 0) : "".concat(inputValue); + asPromise(params.inputValue).then(inputValue => { + input.value = params.input === 'number' ? `${parseFloat(inputValue) || 0}` : `${inputValue}`; show(input); input.focus(); instance.hideLoading(); - })["catch"](function (err) { - error("Error in inputValue promise: ".concat(err)); + }).catch(err => { + error(`Error in inputValue promise: ${err}`); input.value = ''; show(input); input.focus(); @@ -2769,7 +2620,7 @@ * @param {SweetAlertOptions} params */ function populateSelectOptions(popup, inputOptions, params) { - var select = getDirectChildByClass(popup, swalClasses.select); + const select = getDirectChildByClass(popup, swalClasses.select); if (!select) { return; } @@ -2778,29 +2629,27 @@ * @param {string} optionLabel * @param {string} optionValue */ - var renderOption = function renderOption(parent, optionLabel, optionValue) { - var option = document.createElement('option'); + const renderOption = (parent, optionLabel, optionValue) => { + const option = document.createElement('option'); option.value = optionValue; setInnerHtml(option, optionLabel); option.selected = isSelected(optionValue, params.inputValue); parent.appendChild(option); }; - inputOptions.forEach(function (inputOption) { - var optionValue = inputOption[0]; - var optionLabel = inputOption[1]; + inputOptions.forEach(inputOption => { + const optionValue = inputOption[0]; + const optionLabel = inputOption[1]; // spec: // https://www.w3.org/TR/html401/interact/forms.html#h-17.6 // "...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)..." // check whether this is a if (Array.isArray(optionLabel)) { // if it is an array, then it is an - var optgroup = document.createElement('optgroup'); + const optgroup = document.createElement('optgroup'); optgroup.label = optionValue; optgroup.disabled = false; // not configurable for now select.appendChild(optgroup); - optionLabel.forEach(function (o) { - return renderOption(optgroup, o[1], o[0]); - }); + optionLabel.forEach(o => renderOption(optgroup, o[1], o[0])); } else { // case of valueFormatted = formatInputOptions(valueFormatted); } result.push([key, valueFormatted]); }); } else { - Object.keys(inputOptions).forEach(function (key) { - var valueFormatted = inputOptions[key]; - if (_typeof(valueFormatted) === 'object') { + Object.keys(inputOptions).forEach(key => { + let valueFormatted = inputOptions[key]; + if (typeof valueFormatted === 'object') { // case of valueFormatted = formatInputOptions(valueFormatted); } @@ -2880,17 +2729,15 @@ * @param {SweetAlertInputValue} inputValue * @returns {boolean} */ - var isSelected = function isSelected(optionValue, inputValue) { + const isSelected = (optionValue, inputValue) => { return !!inputValue && inputValue.toString() === optionValue.toString(); }; - var _this = undefined; - /** * @param {SweetAlert} instance */ - var handleConfirmButtonClick = function handleConfirmButtonClick(instance) { - var innerParams = privateProps.innerParams.get(instance); + const handleConfirmButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); instance.disableButtons(); if (innerParams.input) { handleConfirmOrDenyWithInput(instance, 'confirm'); @@ -2902,8 +2749,8 @@ /** * @param {SweetAlert} instance */ - var handleDenyButtonClick = function handleDenyButtonClick(instance) { - var innerParams = privateProps.innerParams.get(instance); + const handleDenyButtonClick = instance => { + const innerParams = privateProps.innerParams.get(instance); instance.disableButtons(); if (innerParams.returnInputValueOnDeny) { handleConfirmOrDenyWithInput(instance, 'deny'); @@ -2916,7 +2763,7 @@ * @param {SweetAlert} instance * @param {Function} dismissWith */ - var handleCancelButtonClick = function handleCancelButtonClick(instance, dismissWith) { + const handleCancelButtonClick = (instance, dismissWith) => { instance.disableButtons(); dismissWith(DismissReason.cancel); }; @@ -2925,14 +2772,14 @@ * @param {SweetAlert} instance * @param {'confirm' | 'deny'} type */ - var handleConfirmOrDenyWithInput = function handleConfirmOrDenyWithInput(instance, type) { - var innerParams = privateProps.innerParams.get(instance); + const handleConfirmOrDenyWithInput = (instance, type) => { + const innerParams = privateProps.innerParams.get(instance); if (!innerParams.input) { - error("The \"input\" parameter is needed to be set when using returnInputValueOn".concat(capitalizeFirstLetter(type))); + error(`The "input" parameter is needed to be set when using returnInputValueOn${capitalizeFirstLetter(type)}`); return; } - var input = instance.getInput(); - var inputValue = getInputValue(instance, innerParams); + const input = instance.getInput(); + const inputValue = getInputValue(instance, innerParams); if (innerParams.inputValidator) { handleInputValidator(instance, inputValue, type); } else if (input && !input.checkValidity()) { @@ -2950,13 +2797,11 @@ * @param {SweetAlertInputValue} inputValue * @param {'confirm' | 'deny'} type */ - var handleInputValidator = function handleInputValidator(instance, inputValue, type) { - var innerParams = privateProps.innerParams.get(instance); + const handleInputValidator = (instance, inputValue, type) => { + const innerParams = privateProps.innerParams.get(instance); instance.disableInput(); - var validationPromise = Promise.resolve().then(function () { - return asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)); - }); - validationPromise.then(function (validationMessage) { + const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage))); + validationPromise.then(validationMessage => { instance.enableButtons(); instance.enableInput(); if (validationMessage) { @@ -2973,17 +2818,15 @@ * @param {SweetAlert} instance * @param {any} value */ - var deny = function deny(instance, value) { - var innerParams = privateProps.innerParams.get(instance || _this); + const deny = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); if (innerParams.showLoaderOnDeny) { showLoading(getDenyButton()); } if (innerParams.preDeny) { instance.isAwaitingPromise = true; // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preDeny's promise is received - var preDenyPromise = Promise.resolve().then(function () { - return asPromise(innerParams.preDeny(value, innerParams.validationMessage)); - }); - preDenyPromise.then(function (preDenyValue) { + const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage))); + preDenyPromise.then(preDenyValue => { if (preDenyValue === false) { instance.hideLoading(); handleAwaitingPromise(instance); @@ -2993,13 +2836,11 @@ value: typeof preDenyValue === 'undefined' ? value : preDenyValue }); } - })["catch"](function (error) { - return rejectWith(instance || _this, error); - }); + }).catch(error => rejectWith(instance || undefined, error)); } else { instance.close({ isDenied: true, - value: value + value }); } }; @@ -3008,10 +2849,10 @@ * @param {SweetAlert} instance * @param {any} value */ - var succeedWith = function succeedWith(instance, value) { + const succeedWith = (instance, value) => { instance.close({ isConfirmed: true, - value: value + value }); }; @@ -3020,7 +2861,7 @@ * @param {SweetAlert} instance * @param {string} error */ - var rejectWith = function rejectWith(instance, error) { + const rejectWith = (instance, error) => { instance.rejectPromise(error); }; @@ -3029,27 +2870,23 @@ * @param {SweetAlert} instance * @param {any} value */ - var confirm = function confirm(instance, value) { - var innerParams = privateProps.innerParams.get(instance || _this); + const confirm = (instance, value) => { + const innerParams = privateProps.innerParams.get(instance || undefined); if (innerParams.showLoaderOnConfirm) { showLoading(); } if (innerParams.preConfirm) { instance.resetValidationMessage(); instance.isAwaitingPromise = true; // Flagging the instance as awaiting a promise so it's own promise's reject/resolve methods doesn't get destroyed until the result from this preConfirm's promise is received - var preConfirmPromise = Promise.resolve().then(function () { - return asPromise(innerParams.preConfirm(value, innerParams.validationMessage)); - }); - preConfirmPromise.then(function (preConfirmValue) { + const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage))); + preConfirmPromise.then(preConfirmValue => { if (isVisible$1(getValidationMessage()) || preConfirmValue === false) { instance.hideLoading(); handleAwaitingPromise(instance); } else { succeedWith(instance, typeof preConfirmValue === 'undefined' ? value : preConfirmValue); } - })["catch"](function (error) { - return rejectWith(instance || _this, error); - }); + }).catch(error => rejectWith(instance || undefined, error)); } else { succeedWith(instance, value); } @@ -3060,11 +2897,11 @@ */ function hideLoading() { // do nothing if popup is closed - var innerParams = privateProps.innerParams.get(this); + const innerParams = privateProps.innerParams.get(this); if (!innerParams) { return; } - var domCache = privateProps.domCache.get(this); + const domCache = privateProps.domCache.get(this); hide(domCache.loader); if (isToast()) { if (innerParams.icon) { @@ -3080,8 +2917,8 @@ domCache.denyButton.disabled = false; domCache.cancelButton.disabled = false; } - var showRelatedButton = function showRelatedButton(domCache) { - var buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); + const showRelatedButton = domCache => { + const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace')); if (buttonToReplace.length) { show(buttonToReplace[0], 'inline-block'); } else if (allButtonsAreHidden()) { @@ -3095,8 +2932,8 @@ * @returns {HTMLInputElement | null} */ function getInput() { - var innerParams = privateProps.innerParams.get(this); - var domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); if (!domCache) { return null; } @@ -3109,8 +2946,8 @@ * @param {boolean} disabled */ function setButtonsDisabled(instance, buttons, disabled) { - var domCache = privateProps.domCache.get(instance); - buttons.forEach(function (button) { + const domCache = privateProps.domCache.get(instance); + buttons.forEach(button => { domCache[button].disabled = disabled; }); } @@ -3120,14 +2957,14 @@ * @param {boolean} disabled */ function setInputDisabled(input, disabled) { - var popup = getPopup(); + const popup = getPopup(); if (!popup || !input) { return; } if (input.type === 'radio') { /** @type {NodeListOf} */ - var radios = popup.querySelectorAll("[name=\"".concat(swalClasses.radio, "\"]")); - for (var i = 0; i < radios.length; i++) { + const radios = popup.querySelectorAll(`[name="${swalClasses.radio}"]`); + for (let i = 0; i < radios.length; i++) { radios[i].disabled = disabled; } } else { @@ -3174,15 +3011,15 @@ * @this {SweetAlert} */ function showValidationMessage(error) { - var domCache = privateProps.domCache.get(this); - var params = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); + const params = privateProps.innerParams.get(this); setInnerHtml(domCache.validationMessage, error); domCache.validationMessage.className = swalClasses['validation-message']; if (params.customClass && params.customClass.validationMessage) { addClass(domCache.validationMessage, params.customClass.validationMessage); } show(domCache.validationMessage); - var input = this.getInput(); + const input = this.getInput(); if (input) { input.setAttribute('aria-invalid', 'true'); input.setAttribute('aria-describedby', swalClasses['validation-message']); @@ -3197,11 +3034,11 @@ * @this {SweetAlert} */ function resetValidationMessage() { - var domCache = privateProps.domCache.get(this); + const domCache = privateProps.domCache.get(this); if (domCache.validationMessage) { hide(domCache.validationMessage); } - var input = this.getInput(); + const input = this.getInput(); if (input) { input.removeAttribute('aria-invalid'); input.removeAttribute('aria-describedby'); @@ -3209,7 +3046,7 @@ } } - var defaultParams = { + const defaultParams = { title: '', titleText: '', text: '', @@ -3220,7 +3057,9 @@ iconHtml: undefined, template: undefined, toast: false, + draggable: false, animation: true, + theme: 'light', showClass: { popup: 'swal2-show', backdrop: 'swal2-backdrop-show', @@ -3300,11 +3139,13 @@ didDestroy: undefined, scrollbarPadding: true }; - var updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose']; + const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'draggable', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'theme', 'willClose']; - /** @type {Record} */ - var deprecatedParams = {}; - var toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; + /** @type {Record} */ + const deprecatedParams = { + allowEnterKey: undefined + }; + const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'draggable', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture']; /** * Is valid parameter @@ -3312,7 +3153,7 @@ * @param {string} paramName * @returns {boolean} */ - var isValidParameter = function isValidParameter(paramName) { + const isValidParameter = paramName => { return Object.prototype.hasOwnProperty.call(defaultParams, paramName); }; @@ -3322,7 +3163,7 @@ * @param {string} paramName * @returns {boolean} */ - var isUpdatableParameter = function isUpdatableParameter(paramName) { + const isUpdatableParameter = paramName => { return updatableParams.indexOf(paramName) !== -1; }; @@ -3332,33 +3173,33 @@ * @param {string} paramName * @returns {string | undefined} */ - var isDeprecatedParameter = function isDeprecatedParameter(paramName) { + const isDeprecatedParameter = paramName => { return deprecatedParams[paramName]; }; /** * @param {string} param */ - var checkIfParamIsValid = function checkIfParamIsValid(param) { + const checkIfParamIsValid = param => { if (!isValidParameter(param)) { - warn("Unknown parameter \"".concat(param, "\"")); + warn(`Unknown parameter "${param}"`); } }; /** * @param {string} param */ - var checkIfToastParamIsValid = function checkIfToastParamIsValid(param) { + const checkIfToastParamIsValid = param => { if (toastIncompatibleParams.includes(param)) { - warn("The parameter \"".concat(param, "\" is incompatible with toasts")); + warn(`The parameter "${param}" is incompatible with toasts`); } }; /** * @param {string} param */ - var checkIfParamIsDeprecated = function checkIfParamIsDeprecated(param) { - var isDeprecated = isDeprecatedParameter(param); + const checkIfParamIsDeprecated = param => { + const isDeprecated = isDeprecatedParameter(param); if (isDeprecated) { warnAboutDeprecation(param, isDeprecated); } @@ -3369,11 +3210,14 @@ * * @param {SweetAlertOptions} params */ - var showWarningsForParams = function showWarningsForParams(params) { + const showWarningsForParams = params => { if (params.backdrop === false && params.allowOutsideClick) { warn('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'); } - for (var param in params) { + if (params.theme && !['light', 'dark', 'auto', 'borderless'].includes(params.theme)) { + warn(`Invalid theme "${params.theme}". Expected "light", "dark", "auto", or "borderless"`); + } + for (const param in params) { checkIfParamIsValid(param); if (params.toast) { checkIfToastParamIsValid(param); @@ -3388,14 +3232,17 @@ * @param {SweetAlertOptions} params */ function update(params) { - var popup = getPopup(); - var innerParams = privateProps.innerParams.get(this); + const container = getContainer(); + const popup = getPopup(); + const innerParams = privateProps.innerParams.get(this); if (!popup || hasClass(popup, innerParams.hideClass.popup)) { - warn("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup."); + warn(`You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.`); return; } - var validUpdatableParams = filterValidParams(params); - var updatedParams = Object.assign({}, innerParams, validUpdatableParams); + const validUpdatableParams = filterValidParams(params); + const updatedParams = Object.assign({}, innerParams, validUpdatableParams); + showWarningsForParams(updatedParams); + container.dataset['swal2Theme'] = updatedParams.theme; render(this, updatedParams); privateProps.innerParams.set(this, updatedParams); Object.defineProperties(this, { @@ -3411,13 +3258,13 @@ * @param {SweetAlertOptions} params * @returns {SweetAlertOptions} */ - var filterValidParams = function filterValidParams(params) { - var validUpdatableParams = {}; - Object.keys(params).forEach(function (param) { + const filterValidParams = params => { + const validUpdatableParams = {}; + Object.keys(params).forEach(param => { if (isUpdatableParameter(param)) { validUpdatableParams[param] = params[param]; } else { - warn("Invalid parameter to update: ".concat(param)); + warn(`Invalid parameter to update: ${param}`); } }); return validUpdatableParams; @@ -3427,8 +3274,8 @@ * Dispose the current SweetAlert2 instance */ function _destroy() { - var domCache = privateProps.domCache.get(this); - var innerParams = privateProps.innerParams.get(this); + const domCache = privateProps.domCache.get(this); + const innerParams = privateProps.innerParams.get(this); if (!innerParams) { disposeWeakMaps(this); // The WeakMaps might have been partly destroyed, we must recall it to dispose any remaining WeakMaps #2335 return; // This instance has already been destroyed @@ -3442,13 +3289,14 @@ if (typeof innerParams.didDestroy === 'function') { innerParams.didDestroy(); } + globalState.eventEmitter.emit('didDestroy'); disposeSwal(this); } /** * @param {SweetAlert} instance */ - var disposeSwal = function disposeSwal(instance) { + const disposeSwal = instance => { disposeWeakMaps(instance); // Unset this.params so GC will dispose it (#1569) delete instance.params; @@ -3462,7 +3310,7 @@ /** * @param {SweetAlert} instance */ - var disposeWeakMaps = function disposeWeakMaps(instance) { + const disposeWeakMaps = instance => { // If the current instance is awaiting a promise result, we keep the privateMethods to call them once the promise result is retrieved #2335 if (instance.isAwaitingPromise) { unsetWeakMaps(privateProps, instance); @@ -3495,9 +3343,9 @@ * @param {object} obj * @param {SweetAlert} instance */ - var unsetWeakMaps = function unsetWeakMaps(obj, instance) { - for (var i in obj) { - obj[i]["delete"](instance); + const unsetWeakMaps = (obj, instance) => { + for (const i in obj) { + obj[i].delete(instance); } }; @@ -3527,7 +3375,7 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handlePopupClick = function handlePopupClick(innerParams, domCache, dismissWith) { + const handlePopupClick = (innerParams, domCache, dismissWith) => { if (innerParams.toast) { handleToastClick(innerParams, domCache, dismissWith); } else { @@ -3546,9 +3394,9 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handleToastClick = function handleToastClick(innerParams, domCache, dismissWith) { + const handleToastClick = (innerParams, domCache, dismissWith) => { // Closing toast by internal click - domCache.popup.onclick = function () { + domCache.popup.onclick = () => { if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) { return; } @@ -3560,18 +3408,18 @@ * @param {SweetAlertOptions} innerParams * @returns {boolean} */ - var isAnyButtonShown = function isAnyButtonShown(innerParams) { + const isAnyButtonShown = innerParams => { return !!(innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton); }; - var ignoreOutsideClick = false; + let ignoreOutsideClick = false; /** * @param {DomCache} domCache */ - var handleModalMousedown = function handleModalMousedown(domCache) { - domCache.popup.onmousedown = function () { + const handleModalMousedown = domCache => { + domCache.popup.onmousedown = () => { domCache.container.onmouseup = function (e) { - domCache.container.onmouseup = function () {}; + domCache.container.onmouseup = () => {}; // We only check if the mouseup target is the container because usually it doesn't // have any other direct children aside of the popup if (e.target === domCache.container) { @@ -3584,10 +3432,14 @@ /** * @param {DomCache} domCache */ - var handleContainerMousedown = function handleContainerMousedown(domCache) { - domCache.container.onmousedown = function () { + const handleContainerMousedown = domCache => { + domCache.container.onmousedown = e => { + // prevent the modal text from being selected on double click on the container (allowOutsideClick: false) + if (e.target === domCache.container) { + e.preventDefault(); + } domCache.popup.onmouseup = function (e) { - domCache.popup.onmouseup = function () {}; + domCache.popup.onmouseup = () => {}; // We also need to check if the mouseup target is a child of the popup if (e.target === domCache.popup || e.target instanceof HTMLElement && domCache.popup.contains(e.target)) { ignoreOutsideClick = true; @@ -3601,8 +3453,8 @@ * @param {DomCache} domCache * @param {Function} dismissWith */ - var handleModalClick = function handleModalClick(innerParams, domCache, dismissWith) { - domCache.container.onclick = function (e) { + const handleModalClick = (innerParams, domCache, dismissWith) => { + domCache.container.onclick = e => { if (ignoreOutsideClick) { ignoreOutsideClick = false; return; @@ -3613,23 +3465,19 @@ }; }; - var isJqueryElement = function isJqueryElement(elem) { - return _typeof(elem) === 'object' && elem.jquery; - }; - var isElement = function isElement(elem) { - return elem instanceof Element || isJqueryElement(elem); - }; - var argsToParams = function argsToParams(args) { - var params = {}; - if (_typeof(args[0]) === 'object' && !isElement(args[0])) { + const isJqueryElement = elem => typeof elem === 'object' && elem.jquery; + const isElement = elem => elem instanceof Element || isJqueryElement(elem); + const argsToParams = args => { + const params = {}; + if (typeof args[0] === 'object' && !isElement(args[0])) { Object.assign(params, args[0]); } else { - ['title', 'html', 'icon'].forEach(function (name, index) { - var arg = args[index]; + ['title', 'html', 'icon'].forEach((name, index) => { + const arg = args[index]; if (typeof arg === 'string' || isElement(arg)) { params[name] = arg; } else if (arg !== undefined) { - error("Unexpected type of ".concat(name, "! Expected \"string\" or \"Element\", got ").concat(_typeof(arg))); + error(`Unexpected type of ${name}! Expected "string" or "Element", got ${typeof arg}`); } }); } @@ -3643,11 +3491,10 @@ * @returns {Promise} */ function fire() { - var Swal = this; // eslint-disable-line @typescript-eslint/no-this-alias for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - return _construct(Swal, args); + return new this(...args); } /** @@ -3670,20 +3517,12 @@ * @returns {SweetAlert} */ function mixin(mixinParams) { - var MixinSwal = /*#__PURE__*/function (_this) { - _inherits(MixinSwal, _this); - function MixinSwal() { - _classCallCheck(this, MixinSwal); - return _callSuper(this, MixinSwal, arguments); + class MixinSwal extends this { + _main(params, priorityMixinParams) { + return super._main(params, Object.assign({}, mixinParams, priorityMixinParams)); } - _createClass(MixinSwal, [{ - key: "_main", - value: function _main(params, priorityMixinParams) { - return _get(_getPrototypeOf(MixinSwal.prototype), "_main", this).call(this, params, Object.assign({}, mixinParams, priorityMixinParams)); - } - }]); - return MixinSwal; - }(this); // @ts-ignore + } + // @ts-ignore return MixinSwal; } @@ -3693,7 +3532,7 @@ * * @returns {number | undefined} */ - var getTimerLeft = function getTimerLeft() { + const getTimerLeft = () => { return globalState.timeout && globalState.timeout.getTimerLeft(); }; @@ -3703,7 +3542,7 @@ * * @returns {number | undefined} */ - var stopTimer = function stopTimer() { + const stopTimer = () => { if (globalState.timeout) { stopTimerProgressBar(); return globalState.timeout.stop(); @@ -3716,9 +3555,9 @@ * * @returns {number | undefined} */ - var resumeTimer = function resumeTimer() { + const resumeTimer = () => { if (globalState.timeout) { - var remaining = globalState.timeout.start(); + const remaining = globalState.timeout.start(); animateTimerProgressBar(remaining); return remaining; } @@ -3730,8 +3569,8 @@ * * @returns {number | undefined} */ - var toggleTimer = function toggleTimer() { - var timer = globalState.timeout; + const toggleTimer = () => { + const timer = globalState.timeout; return timer && (timer.running ? stopTimer() : resumeTimer()); }; @@ -3742,9 +3581,9 @@ * @param {number} ms * @returns {number | undefined} */ - var increaseTimer = function increaseTimer(ms) { + const increaseTimer = ms => { if (globalState.timeout) { - var remaining = globalState.timeout.increase(ms); + const remaining = globalState.timeout.increase(ms); animateTimerProgressBar(remaining, true); return remaining; } @@ -3757,31 +3596,31 @@ * * @returns {boolean} */ - var isTimerRunning = function isTimerRunning() { + const isTimerRunning = () => { return !!(globalState.timeout && globalState.timeout.isRunning()); }; - var bodyClickListenerAdded = false; - var clickHandlers = {}; + let bodyClickListenerAdded = false; + const clickHandlers = {}; /** * @param {string} attr */ function bindClickHandler() { - var attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; + let attr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'data-swal-template'; clickHandlers[attr] = this; if (!bodyClickListenerAdded) { document.body.addEventListener('click', bodyClickListener); bodyClickListenerAdded = true; } } - var bodyClickListener = function bodyClickListener(event) { - for (var el = event.target; el && el !== document; el = el.parentNode) { - for (var attr in clickHandlers) { - var template = el.getAttribute(attr); + const bodyClickListener = event => { + for (let el = event.target; el && el !== document; el = el.parentNode) { + for (const attr in clickHandlers) { + const template = el.getAttribute(attr); if (template) { clickHandlers[attr].fire({ - template: template + template }); return; } @@ -3789,6 +3628,141 @@ } }; + // Source: https://gist.github.com/mudge/5830382?permalink_comment_id=2691957#gistcomment-2691957 + + class EventEmitter { + constructor() { + /** @type {Events} */ + this.events = {}; + } + + /** + * @param {string} eventName + * @returns {EventHandlers} + */ + _getHandlersByEventName(eventName) { + if (typeof this.events[eventName] === 'undefined') { + // not Set because we need to keep the FIFO order + // https://github.com/sweetalert2/sweetalert2/pull/2763#discussion_r1748990334 + this.events[eventName] = []; + } + return this.events[eventName]; + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + on(eventName, eventHandler) { + const currentHandlers = this._getHandlersByEventName(eventName); + if (!currentHandlers.includes(eventHandler)) { + currentHandlers.push(eventHandler); + } + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + once(eventName, eventHandler) { + var _this = this; + /** + * @param {Array} args + */ + const onceFn = function () { + _this.removeListener(eventName, onceFn); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + eventHandler.apply(_this, args); + }; + this.on(eventName, onceFn); + } + + /** + * @param {string} eventName + * @param {Array} args + */ + emit(eventName) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + this._getHandlersByEventName(eventName).forEach( + /** + * @param {EventHandler} eventHandler + */ + eventHandler => { + try { + eventHandler.apply(this, args); + } catch (error) { + console.error(error); + } + }); + } + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + removeListener(eventName, eventHandler) { + const currentHandlers = this._getHandlersByEventName(eventName); + const index = currentHandlers.indexOf(eventHandler); + if (index > -1) { + currentHandlers.splice(index, 1); + } + } + + /** + * @param {string} eventName + */ + removeAllListeners(eventName) { + if (this.events[eventName] !== undefined) { + // https://github.com/sweetalert2/sweetalert2/pull/2763#discussion_r1749239222 + this.events[eventName].length = 0; + } + } + reset() { + this.events = {}; + } + } + + globalState.eventEmitter = new EventEmitter(); + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + const on = (eventName, eventHandler) => { + globalState.eventEmitter.on(eventName, eventHandler); + }; + + /** + * @param {string} eventName + * @param {EventHandler} eventHandler + */ + const once = (eventName, eventHandler) => { + globalState.eventEmitter.once(eventName, eventHandler); + }; + + /** + * @param {string} [eventName] + * @param {EventHandler} [eventHandler] + */ + const off = (eventName, eventHandler) => { + // Remove all handlers for all events + if (!eventName) { + globalState.eventEmitter.reset(); + return; + } + if (eventHandler) { + // Remove a specific handler + globalState.eventEmitter.removeListener(eventName, eventHandler); + } else { + // Remove all handlers for a specific event + globalState.eventEmitter.removeAllListeners(eventName); + } + }; + var staticMethods = /*#__PURE__*/Object.freeze({ __proto__: null, argsToParams: argsToParams, @@ -3826,19 +3800,21 @@ isValidParameter: isValidParameter, isVisible: isVisible, mixin: mixin, + off: off, + on: on, + once: once, resumeTimer: resumeTimer, showLoading: showLoading, stopTimer: stopTimer, toggleTimer: toggleTimer }); - var Timer = /*#__PURE__*/function () { + class Timer { /** * @param {Function} callback * @param {number} delay */ - function Timer(callback, delay) { - _classCallCheck(this, Timer); + constructor(callback, delay) { this.callback = callback; this.remaining = delay; this.running = false; @@ -3848,108 +3824,99 @@ /** * @returns {number} */ - _createClass(Timer, [{ - key: "start", - value: function start() { - if (!this.running) { - this.running = true; - this.started = new Date(); - this.id = setTimeout(this.callback, this.remaining); - } - return this.remaining; + start() { + if (!this.running) { + this.running = true; + this.started = new Date(); + this.id = setTimeout(this.callback, this.remaining); } + return this.remaining; + } - /** - * @returns {number} - */ - }, { - key: "stop", - value: function stop() { - if (this.started && this.running) { - this.running = false; - clearTimeout(this.id); - this.remaining -= new Date().getTime() - this.started.getTime(); - } - return this.remaining; + /** + * @returns {number} + */ + stop() { + if (this.started && this.running) { + this.running = false; + clearTimeout(this.id); + this.remaining -= new Date().getTime() - this.started.getTime(); } + return this.remaining; + } - /** - * @param {number} n - * @returns {number} - */ - }, { - key: "increase", - value: function increase(n) { - var running = this.running; - if (running) { - this.stop(); - } - this.remaining += n; - if (running) { - this.start(); - } - return this.remaining; + /** + * @param {number} n + * @returns {number} + */ + increase(n) { + const running = this.running; + if (running) { + this.stop(); } - - /** - * @returns {number} - */ - }, { - key: "getTimerLeft", - value: function getTimerLeft() { - if (this.running) { - this.stop(); - this.start(); - } - return this.remaining; + this.remaining += n; + if (running) { + this.start(); } + return this.remaining; + } - /** - * @returns {boolean} - */ - }, { - key: "isRunning", - value: function isRunning() { - return this.running; + /** + * @returns {number} + */ + getTimerLeft() { + if (this.running) { + this.stop(); + this.start(); } - }]); - return Timer; - }(); + return this.remaining; + } - var swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; + /** + * @returns {boolean} + */ + isRunning() { + return this.running; + } + } + + const swalStringParams = ['swal-title', 'swal-html', 'swal-footer']; /** * @param {SweetAlertOptions} params * @returns {SweetAlertOptions} */ - var getTemplateParams = function getTemplateParams(params) { - /** @type {HTMLTemplateElement} */ - var template = typeof params.template === 'string' ? document.querySelector(params.template) : params.template; + const getTemplateParams = params => { + const template = typeof params.template === 'string' ? (/** @type {HTMLTemplateElement} */document.querySelector(params.template)) : params.template; if (!template) { return {}; } /** @type {DocumentFragment} */ - var templateContent = template.content; + const templateContent = template.content; showWarningsForElements(templateContent); - var result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); + const result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams)); return result; }; /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalParams = function getSwalParams(templateContent) { - var result = {}; + const getSwalParams = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalParams = Array.from(templateContent.querySelectorAll('swal-param')); - swalParams.forEach(function (param) { + const swalParams = Array.from(templateContent.querySelectorAll('swal-param')); + swalParams.forEach(param => { showWarningsForAttributes(param, ['name', 'value']); - var paramName = param.getAttribute('name'); - var value = param.getAttribute('value'); + const paramName = /** @type {keyof SweetAlertOptions} */param.getAttribute('name'); + const value = param.getAttribute('value'); + if (!paramName || !value) { + return; + } if (typeof defaultParams[paramName] === 'boolean') { result[paramName] = value !== 'false'; - } else if (_typeof(defaultParams[paramName]) === 'object') { + } else if (typeof defaultParams[paramName] === 'object') { result[paramName] = JSON.parse(value); } else { result[paramName] = value; @@ -3960,38 +3927,46 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalFunctionParams = function getSwalFunctionParams(templateContent) { - var result = {}; + const getSwalFunctionParams = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalFunctions = Array.from(templateContent.querySelectorAll('swal-function-param')); - swalFunctions.forEach(function (param) { - var paramName = param.getAttribute('name'); - var value = param.getAttribute('value'); - result[paramName] = new Function("return ".concat(value))(); + const swalFunctions = Array.from(templateContent.querySelectorAll('swal-function-param')); + swalFunctions.forEach(param => { + const paramName = /** @type {keyof SweetAlertOptions} */param.getAttribute('name'); + const value = param.getAttribute('value'); + if (!paramName || !value) { + return; + } + result[paramName] = new Function(`return ${value}`)(); }); return result; }; /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalButtons = function getSwalButtons(templateContent) { - var result = {}; + const getSwalButtons = templateContent => { + /** @type {Record} */ + const result = {}; /** @type {HTMLElement[]} */ - var swalButtons = Array.from(templateContent.querySelectorAll('swal-button')); - swalButtons.forEach(function (button) { + const swalButtons = Array.from(templateContent.querySelectorAll('swal-button')); + swalButtons.forEach(button => { showWarningsForAttributes(button, ['type', 'color', 'aria-label']); - var type = button.getAttribute('type'); - result["".concat(type, "ButtonText")] = button.innerHTML; - result["show".concat(capitalizeFirstLetter(type), "Button")] = true; + const type = button.getAttribute('type'); + if (!type || !['confirm', 'cancel', 'deny'].includes(type)) { + return; + } + result[`${type}ButtonText`] = button.innerHTML; + result[`show${capitalizeFirstLetter(type)}Button`] = true; if (button.hasAttribute('color')) { - result["".concat(type, "ButtonColor")] = button.getAttribute('color'); + result[`${type}ButtonColor`] = button.getAttribute('color'); } if (button.hasAttribute('aria-label')) { - result["".concat(type, "ButtonAriaLabel")] = button.getAttribute('aria-label'); + result[`${type}ButtonAriaLabel`] = button.getAttribute('aria-label'); } }); return result; @@ -3999,25 +3974,25 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Pick} */ - var getSwalImage = function getSwalImage(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var image = templateContent.querySelector('swal-image'); + const getSwalImage = templateContent => { + const result = {}; + /** @type {HTMLElement | null} */ + const image = templateContent.querySelector('swal-image'); if (image) { showWarningsForAttributes(image, ['src', 'width', 'height', 'alt']); if (image.hasAttribute('src')) { - result.imageUrl = image.getAttribute('src'); + result.imageUrl = image.getAttribute('src') || undefined; } if (image.hasAttribute('width')) { - result.imageWidth = image.getAttribute('width'); + result.imageWidth = image.getAttribute('width') || undefined; } if (image.hasAttribute('height')) { - result.imageHeight = image.getAttribute('height'); + result.imageHeight = image.getAttribute('height') || undefined; } if (image.hasAttribute('alt')) { - result.imageAlt = image.getAttribute('alt'); + result.imageAlt = image.getAttribute('alt') || undefined; } } return result; @@ -4025,17 +4000,15 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalIcon = function getSwalIcon(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var icon = templateContent.querySelector('swal-icon'); + const getSwalIcon = templateContent => { + const result = {}; + /** @type {HTMLElement | null} */ + const icon = templateContent.querySelector('swal-icon'); if (icon) { showWarningsForAttributes(icon, ['type', 'color']); if (icon.hasAttribute('type')) { - /** @type {SweetAlertIcon} */ - // @ts-ignore result.icon = icon.getAttribute('type'); } if (icon.hasAttribute('color')) { @@ -4048,16 +4021,15 @@ /** * @param {DocumentFragment} templateContent - * @returns {SweetAlertOptions} + * @returns {Record} */ - var getSwalInput = function getSwalInput(templateContent) { - var result = {}; - /** @type {HTMLElement} */ - var input = templateContent.querySelector('swal-input'); + const getSwalInput = templateContent => { + /** @type {Record} */ + const result = {}; + /** @type {HTMLElement | null} */ + const input = templateContent.querySelector('swal-input'); if (input) { showWarningsForAttributes(input, ['type', 'label', 'placeholder', 'value']); - /** @type {SweetAlertInput} */ - // @ts-ignore result.input = input.getAttribute('type') || 'text'; if (input.hasAttribute('label')) { result.inputLabel = input.getAttribute('label'); @@ -4070,13 +4042,16 @@ } } /** @type {HTMLElement[]} */ - var inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option')); + const inputOptions = Array.from(templateContent.querySelectorAll('swal-input-option')); if (inputOptions.length) { result.inputOptions = {}; - inputOptions.forEach(function (option) { + inputOptions.forEach(option => { showWarningsForAttributes(option, ['value']); - var optionValue = option.getAttribute('value'); - var optionName = option.innerHTML; + const optionValue = option.getAttribute('value'); + if (!optionValue) { + return; + } + const optionName = option.innerHTML; result.inputOptions[optionValue] = optionName; }); } @@ -4086,14 +4061,15 @@ /** * @param {DocumentFragment} templateContent * @param {string[]} paramNames - * @returns {SweetAlertOptions} - */ - var getSwalStringParams = function getSwalStringParams(templateContent, paramNames) { - var result = {}; - for (var i in paramNames) { - var paramName = paramNames[i]; - /** @type {HTMLElement} */ - var tag = templateContent.querySelector(paramName); + * @returns {Record} + */ + const getSwalStringParams = (templateContent, paramNames) => { + /** @type {Record} */ + const result = {}; + for (const i in paramNames) { + const paramName = paramNames[i]; + /** @type {HTMLElement | null} */ + const tag = templateContent.querySelector(paramName); if (tag) { showWarningsForAttributes(tag, []); result[paramName.replace(/^swal-/, '')] = tag.innerHTML.trim(); @@ -4105,12 +4081,12 @@ /** * @param {DocumentFragment} templateContent */ - var showWarningsForElements = function showWarningsForElements(templateContent) { - var allowedElements = swalStringParams.concat(['swal-param', 'swal-function-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); - Array.from(templateContent.children).forEach(function (el) { - var tagName = el.tagName.toLowerCase(); + const showWarningsForElements = templateContent => { + const allowedElements = swalStringParams.concat(['swal-param', 'swal-function-param', 'swal-button', 'swal-image', 'swal-icon', 'swal-input', 'swal-input-option']); + Array.from(templateContent.children).forEach(el => { + const tagName = el.tagName.toLowerCase(); if (!allowedElements.includes(tagName)) { - warn("Unrecognized element <".concat(tagName, ">")); + warn(`Unrecognized element <${tagName}>`); } }); }; @@ -4119,33 +4095,34 @@ * @param {HTMLElement} el * @param {string[]} allowedAttributes */ - var showWarningsForAttributes = function showWarningsForAttributes(el, allowedAttributes) { - Array.from(el.attributes).forEach(function (attribute) { + const showWarningsForAttributes = (el, allowedAttributes) => { + Array.from(el.attributes).forEach(attribute => { if (allowedAttributes.indexOf(attribute.name) === -1) { - warn(["Unrecognized attribute \"".concat(attribute.name, "\" on <").concat(el.tagName.toLowerCase(), ">."), "".concat(allowedAttributes.length ? "Allowed attributes are: ".concat(allowedAttributes.join(', ')) : 'To set the value, use HTML within the element.')]); + warn([`Unrecognized attribute "${attribute.name}" on <${el.tagName.toLowerCase()}>.`, `${allowedAttributes.length ? `Allowed attributes are: ${allowedAttributes.join(', ')}` : 'To set the value, use HTML within the element.'}`]); } }); }; - var SHOW_CLASS_TIMEOUT = 10; + const SHOW_CLASS_TIMEOUT = 10; /** * Open popup, add necessary classes and styles, fix scrollbar * * @param {SweetAlertOptions} params */ - var openPopup = function openPopup(params) { - var container = getContainer(); - var popup = getPopup(); + const openPopup = params => { + const container = getContainer(); + const popup = getPopup(); if (typeof params.willOpen === 'function') { params.willOpen(popup); } - var bodyStyles = window.getComputedStyle(document.body); - var initialBodyOverflow = bodyStyles.overflowY; + globalState.eventEmitter.emit('willOpen', popup); + const bodyStyles = window.getComputedStyle(document.body); + const initialBodyOverflow = bodyStyles.overflowY; addClasses(container, popup, params); // scrolling is 'hidden' until animation is done, after that 'auto' - setTimeout(function () { + setTimeout(() => { setScrollingVisibility(container, popup); }, SHOW_CLASS_TIMEOUT); if (isModal()) { @@ -4156,23 +4133,23 @@ globalState.previousActiveElement = document.activeElement; } if (typeof params.didOpen === 'function') { - setTimeout(function () { - return params.didOpen(popup); - }); + setTimeout(() => params.didOpen(popup)); } + globalState.eventEmitter.emit('didOpen', popup); removeClass(container, swalClasses['no-transition']); }; /** * @param {AnimationEvent} event */ - var swalOpenAnimationFinished = function swalOpenAnimationFinished(event) { - var popup = getPopup(); - if (event.target !== popup || !animationEndEvent) { + const swalOpenAnimationFinished = event => { + const popup = getPopup(); + if (event.target !== popup) { return; } - var container = getContainer(); - popup.removeEventListener(animationEndEvent, swalOpenAnimationFinished); + const container = getContainer(); + popup.removeEventListener('animationend', swalOpenAnimationFinished); + popup.removeEventListener('transitionend', swalOpenAnimationFinished); container.style.overflowY = 'auto'; }; @@ -4180,10 +4157,11 @@ * @param {HTMLElement} container * @param {HTMLElement} popup */ - var setScrollingVisibility = function setScrollingVisibility(container, popup) { - if (animationEndEvent && hasCssAnimation(popup)) { + const setScrollingVisibility = (container, popup) => { + if (hasCssAnimation(popup)) { container.style.overflowY = 'hidden'; - popup.addEventListener(animationEndEvent, swalOpenAnimationFinished); + popup.addEventListener('animationend', swalOpenAnimationFinished); + popup.addEventListener('transitionend', swalOpenAnimationFinished); } else { container.style.overflowY = 'auto'; } @@ -4194,14 +4172,14 @@ * @param {boolean} scrollbarPadding * @param {string} initialBodyOverflow */ - var fixScrollContainer = function fixScrollContainer(container, scrollbarPadding, initialBodyOverflow) { + const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => { iOSfix(); if (scrollbarPadding && initialBodyOverflow !== 'hidden') { replaceScrollbarWithPadding(initialBodyOverflow); } // sweetalert2/issues/1247 - setTimeout(function () { + setTimeout(() => { container.scrollTop = 0; }); }; @@ -4211,13 +4189,13 @@ * @param {HTMLElement} popup * @param {SweetAlertOptions} params */ - var addClasses = function addClasses(container, popup, params) { + const addClasses = (container, popup, params) => { addClass(container, params.showClass.backdrop); if (params.animation) { // this workaround with opacity is needed for https://github.com/sweetalert2/sweetalert2/issues/2059 popup.style.setProperty('opacity', '0', 'important'); show(popup, 'grid'); - setTimeout(function () { + setTimeout(() => { // Animate popup right after showing it addClass(popup, params.showClass.popup); // and remove the opacity workaround @@ -4238,7 +4216,7 @@ * @param {string} [validationMessage] * @returns {Promise} */ - email: function email(string, validationMessage) { + email: (string, validationMessage) => { return /^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid email address'); }, /** @@ -4246,7 +4224,7 @@ * @param {string} [validationMessage] * @returns {Promise} */ - url: function url(string, validationMessage) { + url: (string, validationMessage) => { // taken from https://stackoverflow.com/a/3809435 with a small change from #1306 and #2013 return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || 'Invalid URL'); } @@ -4301,15 +4279,14 @@ } /** @type {SweetAlert} */ - var currentInstance; + let currentInstance; var _promise = /*#__PURE__*/new WeakMap(); - var SweetAlert = /*#__PURE__*/function () { + class SweetAlert { /** * @param {...any} args * @this {SweetAlert} */ - function SweetAlert() { - _classCallCheck(this, SweetAlert); + constructor() { /** * @type {Promise} */ @@ -4324,7 +4301,7 @@ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - var outerParams = Object.freeze(this.constructor.argsToParams(args)); + const outerParams = Object.freeze(this.constructor.argsToParams(args)); /** @type {Readonly} */ this.params = outerParams; @@ -4333,57 +4310,51 @@ this.isAwaitingPromise = false; _classPrivateFieldSet2(_promise, this, this._main(currentInstance.params)); } - _createClass(SweetAlert, [{ - key: "_main", - value: function _main(userParams) { - var mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - showWarningsForParams(Object.assign({}, mixinParams, userParams)); - if (globalState.currentInstance) { - var swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance); - var isAwaitingPromise = globalState.currentInstance.isAwaitingPromise; - globalState.currentInstance._destroy(); - if (!isAwaitingPromise) { - swalPromiseResolve({ - isDismissed: true - }); - } - if (isModal()) { - unsetAriaHidden(); - } + _main(userParams) { + let mixinParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + showWarningsForParams(Object.assign({}, mixinParams, userParams)); + if (globalState.currentInstance) { + const swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance); + const { + isAwaitingPromise + } = globalState.currentInstance; + globalState.currentInstance._destroy(); + if (!isAwaitingPromise) { + swalPromiseResolve({ + isDismissed: true + }); } - globalState.currentInstance = currentInstance; - var innerParams = prepareParams(userParams, mixinParams); - setParameters(innerParams); - Object.freeze(innerParams); - - // clear the previous timer - if (globalState.timeout) { - globalState.timeout.stop(); - delete globalState.timeout; + if (isModal()) { + unsetAriaHidden(); } - - // clear the restore focus timeout - clearTimeout(globalState.restoreFocusTimeout); - var domCache = populateDomCache(currentInstance); - render(currentInstance, innerParams); - privateProps.innerParams.set(currentInstance, innerParams); - return swalPromise(currentInstance, domCache, innerParams); } - - // `catch` cannot be the name of a module export, so we define our thenable methods here instead - }, { - key: "then", - value: function then(onFulfilled) { - return _classPrivateFieldGet2(_promise, this).then(onFulfilled); - } - }, { - key: "finally", - value: function _finally(onFinally) { - return _classPrivateFieldGet2(_promise, this)["finally"](onFinally); + globalState.currentInstance = currentInstance; + const innerParams = prepareParams(userParams, mixinParams); + setParameters(innerParams); + Object.freeze(innerParams); + + // clear the previous timer + if (globalState.timeout) { + globalState.timeout.stop(); + delete globalState.timeout; } - }]); - return SweetAlert; - }(); + + // clear the restore focus timeout + clearTimeout(globalState.restoreFocusTimeout); + const domCache = populateDomCache(currentInstance); + render(currentInstance, innerParams); + privateProps.innerParams.set(currentInstance, innerParams); + return swalPromise(currentInstance, domCache, innerParams); + } + + // `catch` cannot be the name of a module export, so we define our thenable methods here instead + then(onFulfilled) { + return _classPrivateFieldGet2(_promise, this).then(onFulfilled); + } + finally(onFinally) { + return _classPrivateFieldGet2(_promise, this).finally(onFinally); + } + } /** * @param {SweetAlert} instance @@ -4391,30 +4362,30 @@ * @param {SweetAlertOptions} innerParams * @returns {Promise} */ - var swalPromise = function swalPromise(instance, domCache, innerParams) { - return new Promise(function (resolve, reject) { + const swalPromise = (instance, domCache, innerParams) => { + return new Promise((resolve, reject) => { // functions to handle all closings/dismissals /** * @param {DismissReason} dismiss */ - var dismissWith = function dismissWith(dismiss) { + const dismissWith = dismiss => { instance.close({ isDismissed: true, - dismiss: dismiss + dismiss }); }; privateMethods.swalPromiseResolve.set(instance, resolve); privateMethods.swalPromiseReject.set(instance, reject); - domCache.confirmButton.onclick = function () { + domCache.confirmButton.onclick = () => { handleConfirmButtonClick(instance); }; - domCache.denyButton.onclick = function () { + domCache.denyButton.onclick = () => { handleDenyButtonClick(instance); }; - domCache.cancelButton.onclick = function () { + domCache.cancelButton.onclick = () => { handleCancelButtonClick(instance, dismissWith); }; - domCache.closeButton.onclick = function () { + domCache.closeButton.onclick = () => { dismissWith(DismissReason.close); }; handlePopupClick(innerParams, domCache, dismissWith); @@ -4425,7 +4396,7 @@ initFocus(domCache, innerParams); // Scroll container to top on open (#1247, #1946) - setTimeout(function () { + setTimeout(() => { domCache.container.scrollTop = 0; }); }); @@ -4436,9 +4407,9 @@ * @param {SweetAlertOptions} mixinParams * @returns {SweetAlertOptions} */ - var prepareParams = function prepareParams(userParams, mixinParams) { - var templateParams = getTemplateParams(userParams); - var params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 + const prepareParams = (userParams, mixinParams) => { + const templateParams = getTemplateParams(userParams); + const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams); // precedence is described in #2131 params.showClass = Object.assign({}, defaultParams.showClass, params.showClass); params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass); if (params.animation === false) { @@ -4454,8 +4425,8 @@ * @param {SweetAlert} instance * @returns {DomCache} */ - var populateDomCache = function populateDomCache(instance) { - var domCache = { + const populateDomCache = instance => { + const domCache = { popup: getPopup(), container: getContainer(), actions: getActions(), @@ -4476,18 +4447,18 @@ * @param {SweetAlertOptions} innerParams * @param {Function} dismissWith */ - var setupTimer = function setupTimer(globalState, innerParams, dismissWith) { - var timerProgressBar = getTimerProgressBar(); + const setupTimer = (globalState, innerParams, dismissWith) => { + const timerProgressBar = getTimerProgressBar(); hide(timerProgressBar); if (innerParams.timer) { - globalState.timeout = new Timer(function () { + globalState.timeout = new Timer(() => { dismissWith('timer'); delete globalState.timeout; }, innerParams.timer); if (innerParams.timerProgressBar) { show(timerProgressBar); applyCustomClass(timerProgressBar, innerParams, 'timerProgressBar'); - setTimeout(function () { + setTimeout(() => { if (globalState.timeout && globalState.timeout.running) { // timer can be already stopped or unset at this point animateTimerProgressBar(innerParams.timer); @@ -4498,20 +4469,50 @@ }; /** + * Initialize focus in the popup: + * + * 1. If `toast` is `true`, don't steal focus from the document. + * 2. Else if there is an [autofocus] element, focus it. + * 3. Else if `focusConfirm` is `true` and confirm button is visible, focus it. + * 4. Else if `focusDeny` is `true` and deny button is visible, focus it. + * 5. Else if `focusCancel` is `true` and cancel button is visible, focus it. + * 6. Else focus the first focusable element in a popup (if any). + * * @param {DomCache} domCache * @param {SweetAlertOptions} innerParams */ - var initFocus = function initFocus(domCache, innerParams) { + const initFocus = (domCache, innerParams) => { if (innerParams.toast) { return; } + // TODO: this is dumb, remove `allowEnterKey` param in the next major version if (!callIfFunction(innerParams.allowEnterKey)) { + warnAboutDeprecation('allowEnterKey'); blurActiveElement(); return; } - if (!focusButton(domCache, innerParams)) { - setFocus(-1, 1); + if (focusAutofocus(domCache)) { + return; + } + if (focusButton(domCache, innerParams)) { + return; + } + setFocus(-1, 1); + }; + + /** + * @param {DomCache} domCache + * @returns {boolean} + */ + const focusAutofocus = domCache => { + const autofocusElements = Array.from(domCache.popup.querySelectorAll('[autofocus]')); + for (const autofocusElement of autofocusElements) { + if (autofocusElement instanceof HTMLElement && isVisible$1(autofocusElement)) { + autofocusElement.focus(); + return true; + } } + return false; }; /** @@ -4519,7 +4520,7 @@ * @param {SweetAlertOptions} innerParams * @returns {boolean} */ - var focusButton = function focusButton(domCache, innerParams) { + const focusButton = (domCache, innerParams) => { if (innerParams.focusDeny && isVisible$1(domCache.denyButton)) { domCache.denyButton.focus(); return true; @@ -4534,7 +4535,7 @@ } return false; }; - var blurActiveElement = function blurActiveElement() { + const blurActiveElement = () => { if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === 'function') { document.activeElement.blur(); } @@ -4542,19 +4543,19 @@ // Dear russian users visiting russian sites. Let's have fun. if (typeof window !== 'undefined' && /^ru\b/.test(navigator.language) && location.host.match(/\.(ru|su|by|xn--p1ai)$/)) { - var now = new Date(); - var initiationDate = localStorage.getItem('swal-initiation'); + const now = new Date(); + const initiationDate = localStorage.getItem('swal-initiation'); if (!initiationDate) { - localStorage.setItem('swal-initiation', "".concat(now)); + localStorage.setItem('swal-initiation', `${now}`); } else if ((now.getTime() - Date.parse(initiationDate)) / (1000 * 60 * 60 * 24) > 3) { - setTimeout(function () { + setTimeout(() => { document.body.style.pointerEvents = 'none'; - var ukrainianAnthem = document.createElement('audio'); + const ukrainianAnthem = document.createElement('audio'); ukrainianAnthem.src = 'https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3'; ukrainianAnthem.loop = true; document.body.appendChild(ukrainianAnthem); - setTimeout(function () { - ukrainianAnthem.play()["catch"](function () { + setTimeout(() => { + ukrainianAnthem.play().catch(() => { // ignore }); }, 2500); @@ -4584,25 +4585,24 @@ Object.assign(SweetAlert, staticMethods); // Proxy to instance methods to constructor, for now, for backwards compatibility - Object.keys(instanceMethods).forEach(function (key) { + Object.keys(instanceMethods).forEach(key => { /** * @param {...any} args * @returns {any | undefined} */ SweetAlert[key] = function () { if (currentInstance && currentInstance[key]) { - var _currentInstance; - return (_currentInstance = currentInstance)[key].apply(_currentInstance, arguments); + return currentInstance[key](...arguments); } return null; }; }); SweetAlert.DismissReason = DismissReason; - SweetAlert.version = '11.10.7'; + SweetAlert.version = '11.17.2'; - var Swal = SweetAlert; + const Swal = SweetAlert; // @ts-ignore - Swal["default"] = Swal; + Swal.default = Swal; return Swal; diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.css b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.css index 7d533ed37..402be8970 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.css +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.css @@ -1 +1 @@ -.swal2-popup.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-popup.swal2-toast>*{grid-column:2}.swal2-popup.swal2-toast .swal2-title{margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-loading{justify-content:center}.swal2-popup.swal2-toast .swal2-input{height:2em;margin:.5em;font-size:1em}.swal2-popup.swal2-toast .swal2-validation-message{font-size:1em}.swal2-popup.swal2-toast .swal2-footer{margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-popup.swal2-toast .swal2-close{grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-popup.swal2-toast .swal2-html-container{margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-popup.swal2-toast .swal2-html-container:empty{padding:0}.swal2-popup.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-popup.swal2-toast .swal2-actions{justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-popup.swal2-toast .swal2-styled{margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-popup.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-popup.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-popup.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-popup.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-popup.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:.625em;overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:rgba(0,0,0,.4)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:32em;max-width:100%;padding:0 0 1.25em;border:none;border-radius:5px;background:#fff;color:#545454;font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm{border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-confirm:focus{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny{border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-deny:focus{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel{border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled).swal2-cancel:focus{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid #eee;color:inherit;font-size:1em;text-align:center}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:5px;border-bottom-left-radius:5px}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em}div:where(.swal2-container) button:where(.swal2-close){z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:5px;background:rgba(0,0,0,0);color:#ccc;font-family:monospace;font-size:2.5em;cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) .swal2-html-container{z-index:1;justify-content:center;margin:1em 1.6em .3em;padding:0;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:rgba(0,0,0,0);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:#fff}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:rgba(0,0,0,0);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:#fff;color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:#f0f0f0;color:#666;font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:#add8e6;color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:#add8e6}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:0.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#facea8;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#9de0f6;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#c9dae1;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:swal2-show .3s}.swal2-hide{animation:swal2-hide .15s forwards}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px rgba(0,0,0,.4)}@media print{body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container{position:static !important}}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto} +:root{--swal2-container-padding: 0.625em;--swal2-backdrop: rgba(0, 0, 0, 0.4);--swal2-width: 32em;--swal2-padding: 0 0 1.25em;--swal2-border: none;--swal2-border-radius: 0.3125rem;--swal2-background: white;--swal2-color: #545454;--swal2-footer-border-color: #eee;--swal2-show-animation: swal2-show 0.3s;--swal2-hide-animation: swal2-hide 0.15s forwards;--swal2-input-background: transparent;--swal2-progress-step-background: #add8e6;--swal2-validation-message-background: #f0f0f0;--swal2-validation-message-color: #666;--swal2-close-button-position: initial;--swal2-close-button-inset: auto;--swal2-close-button-font-size: 2.5em;--swal2-close-button-color: #ccc}[data-swal2-theme=dark]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}@media(prefers-color-scheme: dark){[data-swal2-theme=auto]{--swal2-dark-theme-black: #19191a;--swal2-dark-theme-white: #e1e1e1;--swal2-background: var(--swal2-dark-theme-black);--swal2-color: var(--swal2-dark-theme-white);--swal2-footer-border-color: #555;--swal2-input-background: color-mix(in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10%);--swal2-validation-message-background: color-mix( in srgb, var(--swal2-dark-theme-black), var(--swal2-dark-theme-white) 10% );--swal2-validation-message-color: var(--swal2-dark-theme-white)}}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow:hidden}body.swal2-height-auto{height:auto !important}body.swal2-no-backdrop .swal2-container{background-color:rgba(0,0,0,0) !important;pointer-events:none}body.swal2-no-backdrop .swal2-container .swal2-popup{pointer-events:all}body.swal2-no-backdrop .swal2-container .swal2-modal{box-shadow:0 0 10px var(--swal2-backdrop)}body.swal2-toast-shown .swal2-container{box-sizing:border-box;width:360px;max-width:100%;background-color:rgba(0,0,0,0);pointer-events:none}body.swal2-toast-shown .swal2-container.swal2-top{inset:0 auto auto 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-top-end,body.swal2-toast-shown .swal2-container.swal2-top-right{inset:0 0 auto auto}body.swal2-toast-shown .swal2-container.swal2-top-start,body.swal2-toast-shown .swal2-container.swal2-top-left{inset:0 auto auto 0}body.swal2-toast-shown .swal2-container.swal2-center-start,body.swal2-toast-shown .swal2-container.swal2-center-left{inset:50% auto auto 0;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-center{inset:50% auto auto 50%;transform:translate(-50%, -50%)}body.swal2-toast-shown .swal2-container.swal2-center-end,body.swal2-toast-shown .swal2-container.swal2-center-right{inset:50% 0 auto auto;transform:translateY(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-start,body.swal2-toast-shown .swal2-container.swal2-bottom-left{inset:auto auto 0 0}body.swal2-toast-shown .swal2-container.swal2-bottom{inset:auto auto 0 50%;transform:translateX(-50%)}body.swal2-toast-shown .swal2-container.swal2-bottom-end,body.swal2-toast-shown .swal2-container.swal2-bottom-right{inset:auto 0 0 auto}@media print{body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown){overflow-y:scroll !important}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown)>[aria-hidden=true]{display:none}body.swal2-shown:not(.swal2-no-backdrop,.swal2-toast-shown) .swal2-container{position:static !important}}div:where(.swal2-container){display:grid;position:fixed;z-index:1060;inset:0;box-sizing:border-box;grid-template-areas:"top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end";grid-template-rows:minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto);height:100%;padding:var(--swal2-container-padding);overflow-x:hidden;transition:background-color .1s;-webkit-overflow-scrolling:touch}div:where(.swal2-container).swal2-backdrop-show,div:where(.swal2-container).swal2-noanimation{background:var(--swal2-backdrop)}div:where(.swal2-container).swal2-backdrop-hide{background:rgba(0,0,0,0) !important}div:where(.swal2-container).swal2-top-start,div:where(.swal2-container).swal2-center-start,div:where(.swal2-container).swal2-bottom-start{grid-template-columns:minmax(0, 1fr) auto auto}div:where(.swal2-container).swal2-top,div:where(.swal2-container).swal2-center,div:where(.swal2-container).swal2-bottom{grid-template-columns:auto minmax(0, 1fr) auto}div:where(.swal2-container).swal2-top-end,div:where(.swal2-container).swal2-center-end,div:where(.swal2-container).swal2-bottom-end{grid-template-columns:auto auto minmax(0, 1fr)}div:where(.swal2-container).swal2-top-start>.swal2-popup{align-self:start}div:where(.swal2-container).swal2-top>.swal2-popup{grid-column:2;place-self:start center}div:where(.swal2-container).swal2-top-end>.swal2-popup,div:where(.swal2-container).swal2-top-right>.swal2-popup{grid-column:3;place-self:start end}div:where(.swal2-container).swal2-center-start>.swal2-popup,div:where(.swal2-container).swal2-center-left>.swal2-popup{grid-row:2;align-self:center}div:where(.swal2-container).swal2-center>.swal2-popup{grid-column:2;grid-row:2;place-self:center center}div:where(.swal2-container).swal2-center-end>.swal2-popup,div:where(.swal2-container).swal2-center-right>.swal2-popup{grid-column:3;grid-row:2;place-self:center end}div:where(.swal2-container).swal2-bottom-start>.swal2-popup,div:where(.swal2-container).swal2-bottom-left>.swal2-popup{grid-column:1;grid-row:3;align-self:end}div:where(.swal2-container).swal2-bottom>.swal2-popup{grid-column:2;grid-row:3;place-self:end center}div:where(.swal2-container).swal2-bottom-end>.swal2-popup,div:where(.swal2-container).swal2-bottom-right>.swal2-popup{grid-column:3;grid-row:3;place-self:end end}div:where(.swal2-container).swal2-grow-row>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-column:1/4;width:100%}div:where(.swal2-container).swal2-grow-column>.swal2-popup,div:where(.swal2-container).swal2-grow-fullscreen>.swal2-popup{grid-row:1/4;align-self:stretch}div:where(.swal2-container).swal2-no-transition{transition:none !important}div:where(.swal2-container) div:where(.swal2-popup){display:none;position:relative;box-sizing:border-box;grid-template-columns:minmax(0, 100%);width:var(--swal2-width);max-width:100%;padding:var(--swal2-padding);border:var(--swal2-border);border-radius:var(--swal2-border-radius);background:var(--swal2-background);color:var(--swal2-color);font-family:inherit;font-size:1rem}div:where(.swal2-container) div:where(.swal2-popup):focus{outline:none}div:where(.swal2-container) div:where(.swal2-popup).swal2-loading{overflow-y:hidden}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable{cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-draggable div:where(.swal2-icon){cursor:grab}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging{cursor:grabbing}div:where(.swal2-container) div:where(.swal2-popup).swal2-dragging div:where(.swal2-icon){cursor:grabbing}div:where(.swal2-container) h2:where(.swal2-title){position:relative;max-width:100%;margin:0;padding:.8em 1em 0;color:inherit;font-size:1.875em;font-weight:600;text-align:center;text-transform:none;word-wrap:break-word;cursor:initial}div:where(.swal2-container) div:where(.swal2-actions){display:flex;z-index:1;box-sizing:border-box;flex-wrap:wrap;align-items:center;justify-content:center;width:auto;margin:1.25em auto 0;padding:0}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled[disabled]{opacity:.4}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:hover{background-image:linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1))}div:where(.swal2-container) div:where(.swal2-actions):not(.swal2-loading) .swal2-styled:active{background-image:linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2))}div:where(.swal2-container) div:where(.swal2-loader){display:none;align-items:center;justify-content:center;width:2.2em;height:2.2em;margin:0 1.875em;animation:swal2-rotate-loading 1.5s linear 0s infinite normal;border-width:.25em;border-style:solid;border-radius:100%;border-color:#2778c4 rgba(0,0,0,0) #2778c4 rgba(0,0,0,0)}div:where(.swal2-container) button:where(.swal2-styled){margin:.3125em;padding:.625em 1.1em;transition:box-shadow .1s;box-shadow:0 0 0 3px rgba(0,0,0,0);font-weight:500}div:where(.swal2-container) button:where(.swal2-styled):not([disabled]){cursor:pointer}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm){border:0;border-radius:.25em;background:initial;background-color:#7066e0;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-confirm):focus-visible{box-shadow:0 0 0 3px rgba(112,102,224,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny){border:0;border-radius:.25em;background:initial;background-color:#dc3741;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-deny):focus-visible{box-shadow:0 0 0 3px rgba(220,55,65,.5)}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel){border:0;border-radius:.25em;background:initial;background-color:#6e7881;color:#fff;font-size:1em}div:where(.swal2-container) button:where(.swal2-styled):where(.swal2-cancel):focus-visible{box-shadow:0 0 0 3px rgba(110,120,129,.5)}div:where(.swal2-container) button:where(.swal2-styled).swal2-default-outline:focus-visible{box-shadow:0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-styled):focus-visible{outline:none}div:where(.swal2-container) button:where(.swal2-styled)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-footer){margin:1em 0 0;padding:1em 1em 0;border-top:1px solid var(--swal2-footer-border-color);color:inherit;font-size:1em;text-align:center;cursor:initial}div:where(.swal2-container) .swal2-timer-progress-bar-container{position:absolute;right:0;bottom:0;left:0;grid-column:auto !important;overflow:hidden;border-bottom-right-radius:var(--swal2-border-radius);border-bottom-left-radius:var(--swal2-border-radius)}div:where(.swal2-container) div:where(.swal2-timer-progress-bar){width:100%;height:.25em;background:rgba(0,0,0,.2)}div:where(.swal2-container) img:where(.swal2-image){max-width:100%;margin:2em auto 1em;cursor:initial}div:where(.swal2-container) button:where(.swal2-close){position:var(--swal2-close-button-position);inset:var(--swal2-close-button-inset);z-index:2;align-items:center;justify-content:center;width:1.2em;height:1.2em;margin-top:0;margin-right:0;margin-bottom:-1.2em;padding:0;overflow:hidden;transition:color .1s,box-shadow .1s;border:none;border-radius:var(--swal2-border-radius);background:rgba(0,0,0,0);color:var(--swal2-close-button-color);font-family:monospace;font-size:var(--swal2-close-button-font-size);cursor:pointer;justify-self:end}div:where(.swal2-container) button:where(.swal2-close):hover{transform:none;background:rgba(0,0,0,0);color:#f27474}div:where(.swal2-container) button:where(.swal2-close):focus-visible{outline:none;box-shadow:inset 0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) button:where(.swal2-close)::-moz-focus-inner{border:0}div:where(.swal2-container) div:where(.swal2-html-container){z-index:1;justify-content:center;margin:0;padding:1em 1.6em .3em;overflow:auto;color:inherit;font-size:1.125em;font-weight:normal;line-height:normal;text-align:center;word-wrap:break-word;word-break:break-word;cursor:initial}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea),div:where(.swal2-container) select:where(.swal2-select),div:where(.swal2-container) div:where(.swal2-radio),div:where(.swal2-container) label:where(.swal2-checkbox){margin:1em 2em 3px}div:where(.swal2-container) input:where(.swal2-input),div:where(.swal2-container) input:where(.swal2-file),div:where(.swal2-container) textarea:where(.swal2-textarea){box-sizing:border-box;width:auto;transition:border-color .1s,box-shadow .1s;border:1px solid #d9d9d9;border-radius:.1875em;background:var(--swal2-input-background);box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(0,0,0,0);color:inherit;font-size:1.125em}div:where(.swal2-container) input:where(.swal2-input).swal2-inputerror,div:where(.swal2-container) input:where(.swal2-file).swal2-inputerror,div:where(.swal2-container) textarea:where(.swal2-textarea).swal2-inputerror{border-color:#f27474 !important;box-shadow:0 0 2px #f27474 !important}div:where(.swal2-container) input:where(.swal2-input):focus,div:where(.swal2-container) input:where(.swal2-file):focus,div:where(.swal2-container) textarea:where(.swal2-textarea):focus{border:1px solid #b4dbed;outline:none;box-shadow:inset 0 1px 1px rgba(0,0,0,.06),0 0 0 3px rgba(100,150,200,.5)}div:where(.swal2-container) input:where(.swal2-input)::placeholder,div:where(.swal2-container) input:where(.swal2-file)::placeholder,div:where(.swal2-container) textarea:where(.swal2-textarea)::placeholder{color:#ccc}div:where(.swal2-container) .swal2-range{margin:1em 2em 3px;background:var(--swal2-background)}div:where(.swal2-container) .swal2-range input{width:80%}div:where(.swal2-container) .swal2-range output{width:20%;color:inherit;font-weight:600;text-align:center}div:where(.swal2-container) .swal2-range input,div:where(.swal2-container) .swal2-range output{height:2.625em;padding:0;font-size:1.125em;line-height:2.625em}div:where(.swal2-container) .swal2-input{height:2.625em;padding:0 .75em}div:where(.swal2-container) .swal2-file{width:75%;margin-right:auto;margin-left:auto;background:var(--swal2-input-background);font-size:1.125em}div:where(.swal2-container) .swal2-textarea{height:6.75em;padding:.75em}div:where(.swal2-container) .swal2-select{min-width:50%;max-width:100%;padding:.375em .625em;background:var(--swal2-input-background);color:inherit;font-size:1.125em}div:where(.swal2-container) .swal2-radio,div:where(.swal2-container) .swal2-checkbox{align-items:center;justify-content:center;background:var(--swal2-background);color:inherit}div:where(.swal2-container) .swal2-radio label,div:where(.swal2-container) .swal2-checkbox label{margin:0 .6em;font-size:1.125em}div:where(.swal2-container) .swal2-radio input,div:where(.swal2-container) .swal2-checkbox input{flex-shrink:0;margin:0 .4em}div:where(.swal2-container) label:where(.swal2-input-label){display:flex;justify-content:center;margin:1em auto 0}div:where(.swal2-container) div:where(.swal2-validation-message){align-items:center;justify-content:center;margin:1em 0 0;padding:.625em;overflow:hidden;background:var(--swal2-validation-message-background);color:var(--swal2-validation-message-color);font-size:1em;font-weight:300}div:where(.swal2-container) div:where(.swal2-validation-message)::before{content:"!";display:inline-block;width:1.5em;min-width:1.5em;height:1.5em;margin:0 .625em;border-radius:50%;background-color:#f27474;color:#fff;font-weight:600;line-height:1.5em;text-align:center}div:where(.swal2-container) .swal2-progress-steps{flex-wrap:wrap;align-items:center;max-width:100%;margin:1.25em auto;padding:0;background:rgba(0,0,0,0);font-weight:600}div:where(.swal2-container) .swal2-progress-steps li{display:inline-block;position:relative}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step{z-index:20;flex-shrink:0;width:2em;height:2em;border-radius:2em;background:#2778c4;color:#fff;line-height:2em;text-align:center}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step{background:#2778c4}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step{background:var(--swal2-progress-step-background);color:#fff}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step.swal2-active-progress-step~.swal2-progress-step-line{background:var(--swal2-progress-step-background)}div:where(.swal2-container) .swal2-progress-steps .swal2-progress-step-line{z-index:10;flex-shrink:0;width:2.5em;height:.4em;margin:0 -1px;background:#2778c4}div:where(.swal2-icon){position:relative;box-sizing:content-box;justify-content:center;width:5em;height:5em;margin:2.5em auto .6em;border:.25em solid rgba(0,0,0,0);border-radius:50%;border-color:#000;font-family:inherit;line-height:5em;cursor:default;user-select:none}div:where(.swal2-icon) .swal2-icon-content{display:flex;align-items:center;font-size:3.75em}div:where(.swal2-icon).swal2-error{border-color:#f27474;color:#f27474}div:where(.swal2-icon).swal2-error .swal2-x-mark{position:relative;flex-grow:1}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line]{display:block;position:absolute;top:2.3125em;width:2.9375em;height:.3125em;border-radius:.125em;background-color:#f27474}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=left]{left:1.0625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-error [class^=swal2-x-mark-line][class$=right]{right:1em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-error.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-error.swal2-icon-show .swal2-x-mark{animation:swal2-animate-error-x-mark .5s}div:where(.swal2-icon).swal2-warning{border-color:#f8bb86;color:#f8bb86}div:where(.swal2-icon).swal2-warning.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-warning.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .5s}div:where(.swal2-icon).swal2-info{border-color:#3fc3ee;color:#3fc3ee}div:where(.swal2-icon).swal2-info.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-info.swal2-icon-show .swal2-icon-content{animation:swal2-animate-i-mark .8s}div:where(.swal2-icon).swal2-question{border-color:#87adbd;color:#87adbd}div:where(.swal2-icon).swal2-question.swal2-icon-show{animation:swal2-animate-error-icon .5s}div:where(.swal2-icon).swal2-question.swal2-icon-show .swal2-icon-content{animation:swal2-animate-question-mark .8s}div:where(.swal2-icon).swal2-success{border-color:#a5dc86;color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line]{position:absolute;width:3.75em;height:7.5em;border-radius:50%}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.4375em;left:-2.0635em;transform:rotate(-45deg);transform-origin:3.75em 3.75em;border-radius:7.5em 0 0 7.5em}div:where(.swal2-icon).swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.6875em;left:1.875em;transform:rotate(-45deg);transform-origin:0 3.75em;border-radius:0 7.5em 7.5em 0}div:where(.swal2-icon).swal2-success .swal2-success-ring{position:absolute;z-index:2;top:-0.25em;left:-0.25em;box-sizing:content-box;width:100%;height:100%;border:.25em solid rgba(165,220,134,.3);border-radius:50%}div:where(.swal2-icon).swal2-success .swal2-success-fix{position:absolute;z-index:1;top:.5em;left:1.625em;width:.4375em;height:5.625em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line]{display:block;position:absolute;z-index:2;height:.3125em;border-radius:.125em;background-color:#a5dc86}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=tip]{top:2.875em;left:.8125em;width:1.5625em;transform:rotate(45deg)}div:where(.swal2-icon).swal2-success [class^=swal2-success-line][class$=long]{top:2.375em;right:.5em;width:2.9375em;transform:rotate(-45deg)}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-animate-success-line-tip .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-animate-success-line-long .75s}div:where(.swal2-icon).swal2-success.swal2-icon-show .swal2-success-circular-line-right{animation:swal2-rotate-success-circular-line 4.25s ease-in}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}.swal2-show{animation:var(--swal2-show-animation)}.swal2-hide{animation:var(--swal2-hide-animation)}.swal2-noanimation{transition:none}.swal2-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.swal2-rtl .swal2-close{margin-right:initial;margin-left:0}.swal2-rtl .swal2-timer-progress-bar{right:0;left:auto}.swal2-toast{box-sizing:border-box;grid-column:1/4 !important;grid-row:1/4 !important;grid-template-columns:min-content auto min-content;padding:1em;overflow-y:hidden;background:var(--swal2-background);box-shadow:0 0 1px rgba(0,0,0,.075),0 1px 2px rgba(0,0,0,.075),1px 2px 4px rgba(0,0,0,.075),1px 3px 8px rgba(0,0,0,.075),2px 4px 16px rgba(0,0,0,.075);pointer-events:all}.swal2-toast>*{grid-column:2}.swal2-toast h2:where(.swal2-title){margin:.5em 1em;padding:0;font-size:1em;text-align:initial}.swal2-toast .swal2-loading{justify-content:center}.swal2-toast input:where(.swal2-input){height:2em;margin:.5em;font-size:1em}.swal2-toast .swal2-validation-message{font-size:1em}.swal2-toast div:where(.swal2-footer){margin:.5em 0 0;padding:.5em 0 0;font-size:.8em}.swal2-toast button:where(.swal2-close){grid-column:3/3;grid-row:1/99;align-self:center;width:.8em;height:.8em;margin:0;font-size:2em}.swal2-toast div:where(.swal2-html-container){margin:.5em 1em;padding:0;overflow:initial;font-size:1em;text-align:initial}.swal2-toast div:where(.swal2-html-container):empty{padding:0}.swal2-toast .swal2-loader{grid-column:1;grid-row:1/99;align-self:center;width:2em;height:2em;margin:.25em}.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;width:2em;min-width:2em;height:2em;margin:0 .5em 0 0}.swal2-toast .swal2-icon .swal2-icon-content{display:flex;align-items:center;font-size:1.8em;font-weight:bold}.swal2-toast .swal2-icon.swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line]{top:.875em;width:1.375em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{left:.3125em}.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{right:.3125em}.swal2-toast div:where(.swal2-actions){justify-content:flex-start;height:auto;margin:0;margin-top:.5em;padding:0 .5em}.swal2-toast button:where(.swal2-styled){margin:.25em .5em;padding:.4em .6em;font-size:1em}.swal2-toast .swal2-success{border-color:#a5dc86}.swal2-toast .swal2-success [class^=swal2-success-circular-line]{position:absolute;width:1.6em;height:3em;border-radius:50%}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left]{top:-0.8em;left:-0.5em;transform:rotate(-45deg);transform-origin:2em 2em;border-radius:4em 0 0 4em}.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right]{top:-0.25em;left:.9375em;transform-origin:0 1.5em;border-radius:0 4em 4em 0}.swal2-toast .swal2-success .swal2-success-ring{width:2em;height:2em}.swal2-toast .swal2-success .swal2-success-fix{top:0;left:.4375em;width:.4375em;height:2.6875em}.swal2-toast .swal2-success [class^=swal2-success-line]{height:.3125em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip]{top:1.125em;left:.1875em;width:.75em}.swal2-toast .swal2-success [class^=swal2-success-line][class$=long]{top:.9375em;right:.1875em;width:1.375em}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip{animation:swal2-toast-animate-success-line-tip .75s}.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long{animation:swal2-toast-animate-success-line-long .75s}.swal2-toast.swal2-show{animation:swal2-toast-show .5s}.swal2-toast.swal2-hide{animation:swal2-toast-hide .1s forwards}@keyframes swal2-show{0%{transform:scale(0.7)}45%{transform:scale(1.05)}80%{transform:scale(0.95)}100%{transform:scale(1)}}@keyframes swal2-hide{0%{transform:scale(1);opacity:1}100%{transform:scale(0.5);opacity:0}}@keyframes swal2-animate-success-line-tip{0%{top:1.1875em;left:.0625em;width:0}54%{top:1.0625em;left:.125em;width:0}70%{top:2.1875em;left:-0.375em;width:3.125em}84%{top:3em;left:1.3125em;width:1.0625em}100%{top:2.8125em;left:.8125em;width:1.5625em}}@keyframes swal2-animate-success-line-long{0%{top:3.375em;right:2.875em;width:0}65%{top:3.375em;right:2.875em;width:0}84%{top:2.1875em;right:0;width:3.4375em}100%{top:2.375em;right:.5em;width:2.9375em}}@keyframes swal2-rotate-success-circular-line{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}100%{transform:rotate(-405deg)}}@keyframes swal2-animate-error-x-mark{0%{margin-top:1.625em;transform:scale(0.4);opacity:0}50%{margin-top:1.625em;transform:scale(0.4);opacity:0}80%{margin-top:-0.375em;transform:scale(1.15)}100%{margin-top:0;transform:scale(1);opacity:1}}@keyframes swal2-animate-error-icon{0%{transform:rotateX(100deg);opacity:0}100%{transform:rotateX(0deg);opacity:1}}@keyframes swal2-rotate-loading{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes swal2-animate-question-mark{0%{transform:rotateY(-360deg)}100%{transform:rotateY(0)}}@keyframes swal2-animate-i-mark{0%{transform:rotateZ(45deg);opacity:0}25%{transform:rotateZ(-25deg);opacity:.4}50%{transform:rotateZ(15deg);opacity:.8}75%{transform:rotateZ(-5deg);opacity:1}100%{transform:rotateX(0);opacity:1}}@keyframes swal2-toast-show{0%{transform:translateY(-0.625em) rotateZ(2deg)}33%{transform:translateY(0) rotateZ(-2deg)}66%{transform:translateY(0.3125em) rotateZ(2deg)}100%{transform:translateY(0) rotateZ(0deg)}}@keyframes swal2-toast-hide{100%{transform:rotateZ(1deg);opacity:0}}@keyframes swal2-toast-animate-success-line-tip{0%{top:.5625em;left:.0625em;width:0}54%{top:.125em;left:.125em;width:0}70%{top:.625em;left:-0.25em;width:1.625em}84%{top:1.0625em;left:.75em;width:.5em}100%{top:1.125em;left:.1875em;width:.75em}}@keyframes swal2-toast-animate-success-line-long{0%{top:1.625em;right:1.375em;width:0}65%{top:1.25em;right:.9375em;width:0}84%{top:.9375em;right:0;width:1.125em}100%{top:.9375em;right:.1875em;width:1.375em}} diff --git a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.js b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.js index ff9a43889..0eb486b3a 100644 --- a/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.js +++ b/aspnet-core/services/LY.MicroService.AuthServer/wwwroot/libs/sweetalert2/sweetalert2.min.js @@ -1,5 +1,5 @@ /*! -* sweetalert2 v11.10.7 +* sweetalert2 v11.17.2 * Released under the MIT License. */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Sweetalert2=e()}(this,(function(){"use strict";function t(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function e(t,e,n){return e=s(e),function(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,o()?Reflect.construct(e,n||[],s(t).constructor):e.apply(t,n))}function n(e,n){return e.get(t(e,n))}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(o=function(){return!!t})()}function i(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function c(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,o=new Array(e);no?1:n .").concat(w[e]));case"checkbox":return t.querySelector(".".concat(w.popup," > .").concat(w.checkbox," input"));case"radio":return t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:checked"))||t.querySelector(".".concat(w.popup," > .").concat(w.radio," input:first-child"));case"range":return t.querySelector(".".concat(w.popup," > .").concat(w.range," input"));default:return t.querySelector(".".concat(w.popup," > .").concat(w.input))}},ot=function(t){if(t.focus(),"file"!==t.type){var e=t.value;t.value="",t.value=e}},it=function(t,e,n){t&&e&&("string"==typeof e&&(e=e.split(/\s+/).filter(Boolean)),e.forEach((function(e){Array.isArray(t)?t.forEach((function(t){n?t.classList.add(e):t.classList.remove(e)})):n?t.classList.add(e):t.classList.remove(e)})))},rt=function(t,e){it(t,e,!0)},at=function(t,e){it(t,e,!1)},ct=function(t,e){for(var n=Array.from(t.children),o=0;o1&&void 0!==arguments[1]?arguments[1]:"flex";t&&(t.style.display=e)},lt=function(t){t&&(t.style.display="none")},dt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";t&&new MutationObserver((function(){pt(t,t.innerHTML,e)})).observe(t,{childList:!0,subtree:!0})},ft=function(t,e,n,o){var i=t.querySelector(e);i&&i.style.setProperty(n,o)},pt=function(t,e){e?st(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):lt(t)},mt=function(t){return!(!t||!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))},ht=function(t){return!!(t.scrollHeight>t.clientHeight)},vt=function(t){var e=window.getComputedStyle(t),n=parseFloat(e.getPropertyValue("animation-duration")||"0"),o=parseFloat(e.getPropertyValue("transition-duration")||"0");return n>0||o>0},gt=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=Z();n&&mt(n)&&(e&&(n.style.transition="none",n.style.width="100%"),setTimeout((function(){n.style.transition="width ".concat(t/1e3,"s linear"),n.style.width="0%"}),10))},bt=function(){return"undefined"==typeof window||"undefined"==typeof document},yt='\n
            \n \n
              \n
              \n \n

              \n
              \n \n \n
              \n \n \n
              \n \n
              \n \n \n
              \n
              \n
              \n \n \n \n
              \n
              \n
              \n
              \n
              \n
              \n').replace(/(^|\n)\s*/g,""),wt=function(){g.currentInstance.resetValidationMessage()},Ct=function(t){var e,n=!!(e=j())&&(e.remove(),at([document.documentElement,document.body],[w["no-backdrop"],w["toast-shown"],w["has-column"]]),!0);if(bt())P("SweetAlert2 requires document to initialize");else{var o=document.createElement("div");o.className=w.container,n&&rt(o,w["no-transition"]),Q(o,yt);var i,r,a,c,u,s,l,d,f,p="string"==typeof(i=t.target)?document.querySelector(i):i;p.appendChild(o),function(t){var e=H();e.setAttribute("role",t.toast?"alert":"dialog"),e.setAttribute("aria-live",t.toast?"polite":"assertive"),t.toast||e.setAttribute("aria-modal","true")}(t),function(t){"rtl"===window.getComputedStyle(t).direction&&rt(j(),w.rtl)}(p),r=H(),a=ct(r,w.input),c=ct(r,w.file),u=r.querySelector(".".concat(w.range," input")),s=r.querySelector(".".concat(w.range," output")),l=ct(r,w.select),d=r.querySelector(".".concat(w.checkbox," input")),f=ct(r,w.textarea),a.oninput=wt,c.onchange=wt,l.onchange=wt,d.onchange=wt,f.oninput=wt,u.oninput=function(){wt(),s.value=u.value},u.onchange=function(){wt(),s.value=u.value}}},At=function(t,e){t instanceof HTMLElement?e.appendChild(t):"object"===r(t)?kt(t,e):t&&Q(e,t)},kt=function(t,e){t.jquery?Et(e,t):Q(e,t.toString())},Et=function(t,e){if(t.textContent="",0 in e)for(var n=0;n in e;n++)t.appendChild(e[n].cloneNode(!0));else t.appendChild(e.cloneNode(!0))},Pt=function(){if(bt())return!1;var t=document.createElement("div");return void 0!==t.style.webkitAnimation?"webkitAnimationEnd":void 0!==t.style.animation&&"animationend"}(),Bt=function(t,e){var n=K(),o=W();n&&o&&(e.showConfirmButton||e.showDenyButton||e.showCancelButton?st(n):lt(n),et(n,e,"actions"),function(t,e,n){var o=F(),i=z(),r=U();if(!o||!i||!r)return;Tt(o,"confirm",n),Tt(i,"deny",n),Tt(r,"cancel",n),function(t,e,n,o){if(!o.buttonsStyling)return void at([t,e,n],w.styled);rt([t,e,n],w.styled),o.confirmButtonColor&&(t.style.backgroundColor=o.confirmButtonColor,rt(t,w["default-outline"]));o.denyButtonColor&&(e.style.backgroundColor=o.denyButtonColor,rt(e,w["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,rt(n,w["default-outline"]))}(o,i,r,n),n.reverseButtons&&(n.toast?(t.insertBefore(r,o),t.insertBefore(i,o)):(t.insertBefore(r,e),t.insertBefore(i,e),t.insertBefore(o,e)))}(n,o,e),Q(o,e.loaderHtml||""),et(o,e,"loader"))};function Tt(t,e,n){var o=k(e);pt(t,n["show".concat(o,"Button")],"inline-block"),Q(t,n["".concat(e,"ButtonText")]||""),t.setAttribute("aria-label",n["".concat(e,"ButtonAriaLabel")]||""),t.className=w[e],et(t,n,"".concat(e,"Button"))}var xt=function(t,e){var n=j();n&&(!function(t,e){"string"==typeof e?t.style.background=e:e||rt([document.documentElement,document.body],w["no-backdrop"])}(n,e.backdrop),function(t,e){if(!e)return;e in w?rt(t,w[e]):(E('The "position" parameter is not valid, defaulting to "center"'),rt(t,w.center))}(n,e.position),function(t,e){if(!e)return;rt(t,w["grow-".concat(e)])}(n,e.grow),et(n,e,"container"))};var St={innerParams:new WeakMap,domCache:new WeakMap},Ot=["input","file","range","select","radio","checkbox","textarea"],Lt=function(t){if(t.input)if(Vt[t.input]){var e=Dt(t.input),n=Vt[t.input](e,t);st(e),t.inputAutoFocus&&setTimeout((function(){ot(n)}))}else P("Unexpected type of input! Expected ".concat(Object.keys(Vt).join(" | "),', got "').concat(t.input,'"'))},jt=function(t,e){var n=nt(H(),t);if(n)for(var o in function(t){for(var e=0;en?H().style.width="".concat(i,"px"):ut(H(),"width",e.width)}})).observe(t,{attributes:!0,attributeFilter:["style"]})}})),t};var _t=function(t,e){var n=V();n&&(dt(n),et(n,e,"htmlContainer"),e.html?(At(e.html,n),st(n,"block")):e.text?(n.textContent=e.text,st(n,"block")):lt(n),function(t,e){var n=H();if(n){var o=St.innerParams.get(t),i=!o||e.input!==o.input;Ot.forEach((function(t){var o=ct(n,w[t]);o&&(jt(t,e.inputAttributes),o.className=w[t],i&<(o))})),e.input&&(i&&Lt(e),Mt(e))}}(t,e))},Rt=function(t,e){for(var n=0,o=Object.entries(C);n\n \n
              \n
              \n',n=n.replace(/ style=".*?"/g,"");else if("error"===e.icon)o='\n \n \n \n \n';else if(e.icon){o=zt({question:"?",warning:"!",info:"i"}[e.icon])}n.trim()!==o.trim()&&Q(t,o)}},Ut=function(t,e){if(e.iconColor){t.style.color=e.iconColor,t.style.borderColor=e.iconColor;for(var n=0,o=[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"];n').concat(t,"")},Wt=function(t,e){var n=e.showClass||{};t.className="".concat(w.popup," ").concat(mt(t)?n.popup:""),e.toast?(rt([document.documentElement,document.body],w["toast-shown"]),rt(t,w.toast)):rt(t,w.modal),et(t,e,"popup"),"string"==typeof e.customClass&&rt(t,e.customClass),e.icon&&rt(t,w["icon-".concat(e.icon)])},Kt=function(t){var e=document.createElement("li");return rt(e,w["progress-step"]),Q(e,t),e},Yt=function(t){var e=document.createElement("li");return rt(e,w["progress-step-line"]),t.progressStepsDistance&&ut(e,"width",t.progressStepsDistance),e},Zt=function(t,e){!function(t,e){var n=j(),o=H();if(n&&o){if(e.toast){ut(n,"width",e.width),o.style.width="100%";var i=W();i&&o.insertBefore(i,D())}else ut(o,"width",e.width);ut(o,"padding",e.padding),e.color&&(o.style.color=e.color),e.background&&(o.style.background=e.background),lt(N()),Wt(o,e)}}(0,e),xt(0,e),function(t,e){var n=R();if(n){var o=e.progressSteps,i=e.currentProgressStep;o&&0!==o.length&&void 0!==i?(st(n),n.textContent="",i>=o.length&&E("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.forEach((function(t,r){var a=Kt(t);if(n.appendChild(a),r===i&&rt(a,w["active-progress-step"]),r!==o.length-1){var c=Yt(e);n.appendChild(c)}}))):lt(n)}}(0,e),function(t,e){var n=St.innerParams.get(t),o=D();if(o){if(n&&e.icon===n.icon)return Ft(o,e),void Rt(o,e);if(e.icon||e.iconHtml){if(e.icon&&-1===Object.keys(C).indexOf(e.icon))return P('Unknown icon! Expected "success", "error", "warning", "info" or "question", got "'.concat(e.icon,'"')),void lt(o);st(o),Ft(o,e),Rt(o,e),rt(o,e.showClass&&e.showClass.icon)}else lt(o)}}(t,e),function(t,e){var n=_();n&&(e.imageUrl?(st(n,""),n.setAttribute("src",e.imageUrl),n.setAttribute("alt",e.imageAlt||""),ut(n,"width",e.imageWidth),ut(n,"height",e.imageHeight),n.className=w.image,et(n,e,"image")):lt(n))}(0,e),function(t,e){var n=q();n&&(dt(n),pt(n,e.title||e.titleText,"block"),e.title&&At(e.title,n),e.titleText&&(n.innerText=e.titleText),et(n,e,"title"))}(0,e),function(t,e){var n=$();n&&(Q(n,e.closeButtonHtml||""),et(n,e,"closeButton"),pt(n,e.showCloseButton),n.setAttribute("aria-label",e.closeButtonAriaLabel||""))}(0,e),_t(t,e),Bt(0,e),function(t,e){var n=Y();n&&(dt(n),pt(n,e.footer,"block"),e.footer&&At(e.footer,n),et(n,e,"footer"))}(0,e);var n=H();"function"==typeof e.didRender&&n&&e.didRender(n)},$t=function(){var t;return null===(t=F())||void 0===t?void 0:t.click()},Jt=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),Xt=function(t){t.keydownTarget&&t.keydownHandlerAdded&&(t.keydownTarget.removeEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!1)},Gt=function(t,e){var n,o=J();if(o.length)return(t+=e)===o.length?t=0:-1===t&&(t=o.length-1),void o[t].focus();null===(n=H())||void 0===n||n.focus()},Qt=["ArrowRight","ArrowDown"],te=["ArrowLeft","ArrowUp"],ee=function(t,e,n){t&&(e.isComposing||229===e.keyCode||(t.stopKeydownPropagation&&e.stopPropagation(),"Enter"===e.key?ne(e,t):"Tab"===e.key?oe(e):[].concat(Qt,te).includes(e.key)?ie(e.key):"Escape"===e.key&&re(e,t,n)))},ne=function(t,e){if(x(e.allowEnterKey)){var n=nt(H(),e.input);if(t.target&&n&&t.target instanceof HTMLElement&&t.target.outerHTML===n.outerHTML){if(["textarea","file"].includes(e.input))return;$t(),t.preventDefault()}}},oe=function(t){for(var e=t.target,n=J(),o=-1,i=0;i1},pe=null,me=function(t){null===pe&&(document.body.scrollHeight>window.innerHeight||"scroll"===t)&&(pe=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight="".concat(pe+function(){var t=document.createElement("div");t.className=w["scrollbar-measure"],document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}(),"px"))};function he(t,e,n,o){G()?ke(t,o):(b(n).then((function(){return ke(t,o)})),Xt(g)),ue?(e.setAttribute("style","display:none !important"),e.removeAttribute("class"),e.innerHTML=""):e.remove(),X()&&(null!==pe&&(document.body.style.paddingRight="".concat(pe,"px"),pe=null),function(){if(tt(document.body,w.iosfix)){var t=parseInt(document.body.style.top,10);at(document.body,w.iosfix),document.body.style.top="",document.body.scrollTop=-1*t}}(),ce()),at([document.documentElement,document.body],[w.shown,w["height-auto"],w["no-backdrop"],w["toast-shown"]])}function ve(t){t=we(t);var e=ae.swalPromiseResolve.get(this),n=ge(this);this.isAwaitingPromise?t.isDismissed||(ye(this),e(t)):n&&e(t)}var ge=function(t){var e=H();if(!e)return!1;var n=St.innerParams.get(t);if(!n||tt(e,n.hideClass.popup))return!1;at(e,n.showClass.popup),rt(e,n.hideClass.popup);var o=j();return at(o,n.showClass.backdrop),rt(o,n.hideClass.backdrop),Ce(t,e,n),!0};function be(t){var e=ae.swalPromiseReject.get(this);ye(this),e&&e(t)}var ye=function(t){t.isAwaitingPromise&&(delete t.isAwaitingPromise,St.innerParams.get(t)||t._destroy())},we=function(t){return void 0===t?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},t)},Ce=function(t,e,n){var o=j(),i=Pt&&vt(e);"function"==typeof n.willClose&&n.willClose(e),i?Ae(t,e,o,n.returnFocus,n.didClose):he(t,o,n.returnFocus,n.didClose)},Ae=function(t,e,n,o,i){Pt&&(g.swalCloseEventFinishedCallback=he.bind(null,t,n,o,i),e.addEventListener(Pt,(function(t){t.target===e&&(g.swalCloseEventFinishedCallback(),delete g.swalCloseEventFinishedCallback)})))},ke=function(t,e){setTimeout((function(){"function"==typeof e&&e.bind(t.params)(),t._destroy&&t._destroy()}))},Ee=function(t){var e=H();if(e||new io,e=H()){var n=W();G()?lt(D()):Pe(e,t),st(n),e.setAttribute("data-loading","true"),e.setAttribute("aria-busy","true"),e.focus()}},Pe=function(t,e){var n=K(),o=W();n&&o&&(!e&&mt(F())&&(e=F()),st(n),e&&(lt(e),o.setAttribute("data-button-to-replace",e.className),n.insertBefore(o,e)),rt([t,n],w.loading))},Be=function(t){return t.checked?1:0},Te=function(t){return t.checked?t.value:null},xe=function(t){return t.files&&t.files.length?null!==t.getAttribute("multiple")?t.files:t.files[0]:null},Se=function(t,e){var n=H();if(n){var o=function(t){"select"===e.input?function(t,e,n){var o=ct(t,w.select);if(!o)return;var i=function(t,e,o){var i=document.createElement("option");i.value=o,Q(i,e),i.selected=je(o,n.inputValue),t.appendChild(i)};e.forEach((function(t){var e=t[0],n=t[1];if(Array.isArray(n)){var r=document.createElement("optgroup");r.label=e,r.disabled=!1,o.appendChild(r),n.forEach((function(t){return i(r,t[1],t[0])}))}else i(o,n,e)})),o.focus()}(n,Le(t),e):"radio"===e.input&&function(t,e,n){var o=ct(t,w.radio);if(!o)return;e.forEach((function(t){var e=t[0],i=t[1],r=document.createElement("input"),a=document.createElement("label");r.type="radio",r.name=w.radio,r.value=e,je(e,n.inputValue)&&(r.checked=!0);var c=document.createElement("span");Q(c,i),c.className=w.label,a.appendChild(r),a.appendChild(c),o.appendChild(a)}));var i=o.querySelectorAll("input");i.length&&i[0].focus()}(n,Le(t),e)};S(e.inputOptions)||L(e.inputOptions)?(Ee(F()),O(e.inputOptions).then((function(e){t.hideLoading(),o(e)}))):"object"===r(e.inputOptions)?o(e.inputOptions):P("Unexpected type of inputOptions! Expected object, Map or Promise, got ".concat(r(e.inputOptions)))}},Oe=function(t,e){var n=t.getInput();n&&(lt(n),O(e.inputValue).then((function(o){n.value="number"===e.input?"".concat(parseFloat(o)||0):"".concat(o),st(n),n.focus(),t.hideLoading()})).catch((function(e){P("Error in inputValue promise: ".concat(e)),n.value="",st(n),n.focus(),t.hideLoading()})))};var Le=function t(e){var n=[];return e instanceof Map?e.forEach((function(e,o){var i=e;"object"===r(i)&&(i=t(i)),n.push([o,i])})):Object.keys(e).forEach((function(o){var i=e[o];"object"===r(i)&&(i=t(i)),n.push([o,i])})),n},je=function(t,e){return!!e&&e.toString()===t.toString()},Me=void 0,Ie=function(t,e){var n=St.innerParams.get(t);if(n.input){var o=t.getInput(),i=function(t,e){var n=t.getInput();if(!n)return null;switch(e.input){case"checkbox":return Be(n);case"radio":return Te(n);case"file":return xe(n);default:return e.inputAutoTrim?n.value.trim():n.value}}(t,n);n.inputValidator?He(t,i,e):o&&!o.checkValidity()?(t.enableButtons(),t.showValidationMessage(n.validationMessage||o.validationMessage)):"deny"===e?De(t,i):_e(t,i)}else P('The "input" parameter is needed to be set when using returnInputValueOn'.concat(k(e)))},He=function(t,e,n){var o=St.innerParams.get(t);t.disableInput(),Promise.resolve().then((function(){return O(o.inputValidator(e,o.validationMessage))})).then((function(o){t.enableButtons(),t.enableInput(),o?t.showValidationMessage(o):"deny"===n?De(t,e):_e(t,e)}))},De=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnDeny&&Ee(z()),n.preDeny)?(t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preDeny(e,n.validationMessage))})).then((function(n){!1===n?(t.hideLoading(),ye(t)):t.close({isDenied:!0,value:void 0===n?e:n})})).catch((function(e){return Ve(t||Me,e)}))):t.close({isDenied:!0,value:e})},qe=function(t,e){t.close({isConfirmed:!0,value:e})},Ve=function(t,e){t.rejectPromise(e)},_e=function(t,e){var n=St.innerParams.get(t||Me);(n.showLoaderOnConfirm&&Ee(),n.preConfirm)?(t.resetValidationMessage(),t.isAwaitingPromise=!0,Promise.resolve().then((function(){return O(n.preConfirm(e,n.validationMessage))})).then((function(n){mt(N())||!1===n?(t.hideLoading(),ye(t)):qe(t,void 0===n?e:n)})).catch((function(e){return Ve(t||Me,e)}))):qe(t,e)};function Re(){var t=St.innerParams.get(this);if(t){var e=St.domCache.get(this);lt(e.loader),G()?t.icon&&st(D()):Ne(e),at([e.popup,e.actions],w.loading),e.popup.removeAttribute("aria-busy"),e.popup.removeAttribute("data-loading"),e.confirmButton.disabled=!1,e.denyButton.disabled=!1,e.cancelButton.disabled=!1}}var Ne=function(t){var e=t.popup.getElementsByClassName(t.loader.getAttribute("data-button-to-replace"));e.length?st(e[0],"inline-block"):mt(F())||mt(z())||mt(U())||lt(t.actions)};function Fe(){var t=St.innerParams.get(this),e=St.domCache.get(this);return e?nt(e.popup,t.input):null}function Ue(t,e,n){var o=St.domCache.get(t);e.forEach((function(t){o[t].disabled=n}))}function ze(t,e){var n=H();if(n&&t)if("radio"===t.type)for(var o=n.querySelectorAll('[name="'.concat(w.radio,'"]')),i=0;i0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,En||(document.body.addEventListener("click",Tn),En=!0)},clickCancel:function(){var t;return null===(t=U())||void 0===t?void 0:t.click()},clickConfirm:$t,clickDeny:function(){var t;return null===(t=z())||void 0===t?void 0:t.click()},enableLoading:Ee,fire:function(){for(var t=arguments.length,e=new Array(t),n=0;n"))}))},_n=function(t,e){Array.from(t.attributes).forEach((function(n){-1===e.indexOf(n.name)&&E(['Unrecognized attribute "'.concat(n.name,'" on <').concat(t.tagName.toLowerCase(),">."),"".concat(e.length?"Allowed attributes are: ".concat(e.join(", ")):"To set the value, use HTML within the element.")])}))},Rn=function(t){var e=j(),n=H();"function"==typeof t.willOpen&&t.willOpen(n);var o=window.getComputedStyle(document.body).overflowY;zn(e,n,t),setTimeout((function(){Fn(e,n)}),10),X()&&(Un(e,t.scrollbarPadding,o),function(){var t=j();Array.from(document.body.children).forEach((function(e){e.contains(t)||(e.hasAttribute("aria-hidden")&&e.setAttribute("data-previous-aria-hidden",e.getAttribute("aria-hidden")||""),e.setAttribute("aria-hidden","true"))}))}()),G()||g.previousActiveElement||(g.previousActiveElement=document.activeElement),"function"==typeof t.didOpen&&setTimeout((function(){return t.didOpen(n)})),at(e,w["no-transition"])},Nn=function t(e){var n=H();if(e.target===n&&Pt){var o=j();n.removeEventListener(Pt,t),o.style.overflowY="auto"}},Fn=function(t,e){Pt&&vt(e)?(t.style.overflowY="hidden",e.addEventListener(Pt,Nn)):t.style.overflowY="auto"},Un=function(t,e,n){!function(){if(ue&&!tt(document.body,w.iosfix)){var t=document.body.scrollTop;document.body.style.top="".concat(-1*t,"px"),rt(document.body,w.iosfix),se()}}(),e&&"hidden"!==n&&me(n),setTimeout((function(){t.scrollTop=0}))},zn=function(t,e,n){rt(t,n.showClass.backdrop),n.animation?(e.style.setProperty("opacity","0","important"),st(e,"grid"),setTimeout((function(){rt(e,n.showClass.popup),e.style.removeProperty("opacity")}),10)):st(e,"grid"),rt([document.documentElement,document.body],w.shown),n.heightAuto&&n.backdrop&&!n.toast&&rt([document.documentElement,document.body],w["height-auto"])},Wn={email:function(t,e){return/^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid email address")},url:function(t,e){return/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(t)?Promise.resolve():Promise.resolve(e||"Invalid URL")}};function Kn(t){!function(t){t.inputValidator||("email"===t.input&&(t.inputValidator=Wn.email),"url"===t.input&&(t.inputValidator=Wn.url))}(t),t.showLoaderOnConfirm&&!t.preConfirm&&E("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(t){(!t.target||"string"==typeof t.target&&!document.querySelector(t.target)||"string"!=typeof t.target&&!t.target.appendChild)&&(E('Target parameter is not valid, defaulting to "body"'),t.target="body")}(t),"string"==typeof t.title&&(t.title=t.title.split("\n").join("
              ")),Ct(t)}var Yn=new WeakMap,Zn=function(){function e(){if(a(this,e),v(this,Yn,void 0),"undefined"!=typeof window){Bn=this;for(var n=arguments.length,o=new Array(n),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(function(t){for(var e in!1===t.backdrop&&t.allowOutsideClick&&E('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),t)rn(e),t.toast&&an(e),cn(e)}(Object.assign({},e,t)),g.currentInstance){var n=ae.swalPromiseResolve.get(g.currentInstance),o=g.currentInstance.isAwaitingPromise;g.currentInstance._destroy(),o||n({isDismissed:!0}),X()&&ce()}g.currentInstance=Bn;var i=Jn(t,e);Kn(i),Object.freeze(i),g.timeout&&(g.timeout.stop(),delete g.timeout),clearTimeout(g.restoreFocusTimeout);var r=Xn(Bn);return Zt(Bn,i),St.innerParams.set(Bn,i),$n(Bn,r,i)}},{key:"then",value:function(t){return n(Yn,this).then(t)}},{key:"finally",value:function(t){return n(Yn,this).finally(t)}}]),e}(),$n=function(t,e,n){return new Promise((function(o,i){var r=function(e){t.close({isDismissed:!0,dismiss:e})};ae.swalPromiseResolve.set(t,o),ae.swalPromiseReject.set(t,i),e.confirmButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.input?Ie(t,"confirm"):_e(t,!0)}(t)},e.denyButton.onclick=function(){!function(t){var e=St.innerParams.get(t);t.disableButtons(),e.returnInputValueOnDeny?Ie(t,"deny"):De(t,!1)}(t)},e.cancelButton.onclick=function(){!function(t,e){t.disableButtons(),e(Jt.cancel)}(t,r)},e.closeButton.onclick=function(){r(Jt.close)},function(t,e,n){t.toast?hn(t,e,n):(bn(e),yn(e),wn(t,e,n))}(n,e,r),function(t,e,n){Xt(t),e.toast||(t.keydownHandler=function(t){return ee(e,t,n)},t.keydownTarget=e.keydownListenerCapture?window:H(),t.keydownListenerCapture=e.keydownListenerCapture,t.keydownTarget.addEventListener("keydown",t.keydownHandler,{capture:t.keydownListenerCapture}),t.keydownHandlerAdded=!0)}(g,n,r),function(t,e){"select"===e.input||"radio"===e.input?Se(t,e):["text","email","number","tel","textarea"].some((function(t){return t===e.input}))&&(S(e.inputValue)||L(e.inputValue))&&(Ee(F()),Oe(t,e))}(t,n),Rn(n),Gn(g,n,r),Qn(e,n),setTimeout((function(){e.container.scrollTop=0}))}))},Jn=function(t,e){var n=function(t){var e="string"==typeof t.template?document.querySelector(t.template):t.template;if(!e)return{};var n=e.content;return Vn(n),Object.assign(Ln(n),jn(n),Mn(n),In(n),Hn(n),Dn(n),qn(n,On))}(t),o=Object.assign({},Xe,e,n,t);return o.showClass=Object.assign({},Xe.showClass,o.showClass),o.hideClass=Object.assign({},Xe.hideClass,o.hideClass),!1===o.animation&&(o.showClass={backdrop:"swal2-noanimation"},o.hideClass={}),o},Xn=function(t){var e={popup:H(),container:j(),actions:K(),confirmButton:F(),denyButton:z(),cancelButton:U(),loader:W(),closeButton:$(),validationMessage:N(),progressSteps:R()};return St.domCache.set(t,e),e},Gn=function(t,e,n){var o=Z();lt(o),e.timer&&(t.timeout=new Sn((function(){n("timer"),delete t.timeout}),e.timer),e.timerProgressBar&&(st(o),et(o,e,"timerProgressBar"),setTimeout((function(){t.timeout&&t.timeout.running&>(e.timer)}))))},Qn=function(t,e){e.toast||(x(e.allowEnterKey)?to(t,e)||Gt(-1,1):eo())},to=function(t,e){return e.focusDeny&&mt(t.denyButton)?(t.denyButton.focus(),!0):e.focusCancel&&mt(t.cancelButton)?(t.cancelButton.focus(),!0):!(!e.focusConfirm||!mt(t.confirmButton))&&(t.confirmButton.focus(),!0)},eo=function(){document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){var no=new Date,oo=localStorage.getItem("swal-initiation");oo?(no.getTime()-Date.parse(oo))/864e5>3&&setTimeout((function(){document.body.style.pointerEvents="none";var t=document.createElement("audio");t.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",t.loop=!0,document.body.appendChild(t),setTimeout((function(){t.play().catch((function(){}))}),2500)}),500):localStorage.setItem("swal-initiation","".concat(no))}Zn.prototype.disableButtons=Ke,Zn.prototype.enableButtons=We,Zn.prototype.getInput=Fe,Zn.prototype.disableInput=Ze,Zn.prototype.enableInput=Ye,Zn.prototype.hideLoading=Re,Zn.prototype.disableLoading=Re,Zn.prototype.showValidationMessage=$e,Zn.prototype.resetValidationMessage=Je,Zn.prototype.close=ve,Zn.prototype.closePopup=ve,Zn.prototype.closeModal=ve,Zn.prototype.closeToast=ve,Zn.prototype.rejectPromise=be,Zn.prototype.update=un,Zn.prototype._destroy=ln,Object.assign(Zn,xn),Object.keys(mn).forEach((function(t){Zn[t]=function(){var e;return Bn&&Bn[t]?(e=Bn)[t].apply(e,arguments):null}})),Zn.DismissReason=Jt,Zn.version="11.10.7";var io=Zn;return io.default=io,io})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Sweetalert2=t()}(this,(function(){"use strict";function e(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function t(t,n){return t.get(e(t,n))}function n(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}const o={},i=e=>new Promise((t=>{if(!e)return t();const n=window.scrollX,i=window.scrollY;o.restoreFocusTimeout=setTimeout((()=>{o.previousActiveElement instanceof HTMLElement?(o.previousActiveElement.focus(),o.previousActiveElement=null):document.body&&document.body.focus(),t()}),100),window.scrollTo(n,i)})),s="swal2-",r=["container","shown","height-auto","iosfix","popup","modal","no-backdrop","no-transition","toast","toast-shown","show","hide","close","title","html-container","actions","confirm","deny","cancel","default-outline","footer","icon","icon-content","image","input","file","range","select","radio","checkbox","label","textarea","inputerror","input-label","validation-message","progress-steps","active-progress-step","progress-step","progress-step-line","loader","loading","styled","top","top-start","top-end","top-left","top-right","center","center-start","center-end","center-left","center-right","bottom","bottom-start","bottom-end","bottom-left","bottom-right","grow-row","grow-column","grow-fullscreen","rtl","timer-progress-bar","timer-progress-bar-container","scrollbar-measure","icon-success","icon-warning","icon-info","icon-question","icon-error","draggable","dragging"].reduce(((e,t)=>(e[t]=s+t,e)),{}),a=["success","warning","info","question","error"].reduce(((e,t)=>(e[t]=s+t,e)),{}),l="SweetAlert2:",c=e=>e.charAt(0).toUpperCase()+e.slice(1),u=e=>{console.warn(`${l} ${"object"==typeof e?e.join(" "):e}`)},d=e=>{console.error(`${l} ${e}`)},p=[],m=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;var n;n=`"${e}" is deprecated and will be removed in the next major release.${t?` Use "${t}" instead.`:""}`,p.includes(n)||(p.push(n),u(n))},h=e=>"function"==typeof e?e():e,g=e=>e&&"function"==typeof e.toPromise,f=e=>g(e)?e.toPromise():Promise.resolve(e),b=e=>e&&Promise.resolve(e)===e,y=()=>document.body.querySelector(`.${r.container}`),v=e=>{const t=y();return t?t.querySelector(e):null},w=e=>v(`.${e}`),C=()=>w(r.popup),A=()=>w(r.icon),E=()=>w(r.title),k=()=>w(r["html-container"]),B=()=>w(r.image),L=()=>w(r["progress-steps"]),$=()=>w(r["validation-message"]),x=()=>v(`.${r.actions} .${r.confirm}`),P=()=>v(`.${r.actions} .${r.cancel}`),T=()=>v(`.${r.actions} .${r.deny}`),S=()=>v(`.${r.loader}`),O=()=>w(r.actions),M=()=>w(r.footer),j=()=>w(r["timer-progress-bar"]),H=()=>w(r.close),I=()=>{const e=C();if(!e)return[];const t=e.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'),n=Array.from(t).sort(((e,t)=>{const n=parseInt(e.getAttribute("tabindex")||"0"),o=parseInt(t.getAttribute("tabindex")||"0");return n>o?1:n"-1"!==e.getAttribute("tabindex")));return[...new Set(n.concat(i))].filter((e=>ee(e)))},D=()=>N(document.body,r.shown)&&!N(document.body,r["toast-shown"])&&!N(document.body,r["no-backdrop"]),q=()=>{const e=C();return!!e&&N(e,r.toast)},V=(e,t)=>{if(e.textContent="",t){const n=(new DOMParser).parseFromString(t,"text/html"),o=n.querySelector("head");o&&Array.from(o.childNodes).forEach((t=>{e.appendChild(t)}));const i=n.querySelector("body");i&&Array.from(i.childNodes).forEach((t=>{t instanceof HTMLVideoElement||t instanceof HTMLAudioElement?e.appendChild(t.cloneNode(!0)):e.appendChild(t)}))}},N=(e,t)=>{if(!t)return!1;const n=t.split(/\s+/);for(let t=0;t{if(((e,t)=>{Array.from(e.classList).forEach((n=>{Object.values(r).includes(n)||Object.values(a).includes(n)||Object.values(t.showClass||{}).includes(n)||e.classList.remove(n)}))})(e,t),!t.customClass)return;const o=t.customClass[n];o&&("string"==typeof o||o.forEach?z(e,o):u(`Invalid type of customClass.${n}! Expected string or iterable object, got "${typeof o}"`))},F=(e,t)=>{if(!t)return null;switch(t){case"select":case"textarea":case"file":return e.querySelector(`.${r.popup} > .${r[t]}`);case"checkbox":return e.querySelector(`.${r.popup} > .${r.checkbox} input`);case"radio":return e.querySelector(`.${r.popup} > .${r.radio} input:checked`)||e.querySelector(`.${r.popup} > .${r.radio} input:first-child`);case"range":return e.querySelector(`.${r.popup} > .${r.range} input`);default:return e.querySelector(`.${r.popup} > .${r.input}`)}},R=e=>{if(e.focus(),"file"!==e.type){const t=e.value;e.value="",e.value=t}},U=(e,t,n)=>{e&&t&&("string"==typeof t&&(t=t.split(/\s+/).filter(Boolean)),t.forEach((t=>{Array.isArray(e)?e.forEach((e=>{n?e.classList.add(t):e.classList.remove(t)})):n?e.classList.add(t):e.classList.remove(t)})))},z=(e,t)=>{U(e,t,!0)},W=(e,t)=>{U(e,t,!1)},K=(e,t)=>{const n=Array.from(e.children);for(let e=0;e{n===`${parseInt(n)}`&&(n=parseInt(n)),n||0===parseInt(n)?e.style.setProperty(t,"number"==typeof n?`${n}px`:n):e.style.removeProperty(t)},X=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"flex";e&&(e.style.display=t)},Z=e=>{e&&(e.style.display="none")},J=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"block";e&&new MutationObserver((()=>{Q(e,e.innerHTML,t)})).observe(e,{childList:!0,subtree:!0})},G=(e,t,n,o)=>{const i=e.querySelector(t);i&&i.style.setProperty(n,o)},Q=function(e,t){t?X(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:"flex"):Z(e)},ee=e=>!(!e||!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)),te=e=>!!(e.scrollHeight>e.clientHeight),ne=e=>{const t=window.getComputedStyle(e),n=parseFloat(t.getPropertyValue("animation-duration")||"0"),o=parseFloat(t.getPropertyValue("transition-duration")||"0");return n>0||o>0},oe=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=j();n&&ee(n)&&(t&&(n.style.transition="none",n.style.width="100%"),setTimeout((()=>{n.style.transition=`width ${e/1e3}s linear`,n.style.width="0%"}),10))},ie=`\n
              \n \n
                \n
                \n \n

                \n
                \n \n \n
                \n \n \n
                \n \n
                \n \n \n
                \n
                \n
                \n \n \n \n
                \n
                \n
                \n
                \n
                \n
                \n`.replace(/(^|\n)\s*/g,""),se=()=>{o.currentInstance.resetValidationMessage()},re=e=>{const t=(()=>{const e=y();return!!e&&(e.remove(),W([document.documentElement,document.body],[r["no-backdrop"],r["toast-shown"],r["has-column"]]),!0)})();if("undefined"==typeof window||"undefined"==typeof document)return void d("SweetAlert2 requires document to initialize");const n=document.createElement("div");n.className=r.container,t&&z(n,r["no-transition"]),V(n,ie),n.dataset.swal2Theme=e.theme;const o="string"==typeof(i=e.target)?document.querySelector(i):i;var i;o.appendChild(n),(e=>{const t=C();t.setAttribute("role",e.toast?"alert":"dialog"),t.setAttribute("aria-live",e.toast?"polite":"assertive"),e.toast||t.setAttribute("aria-modal","true")})(e),(e=>{"rtl"===window.getComputedStyle(e).direction&&z(y(),r.rtl)})(o),(()=>{const e=C(),t=K(e,r.input),n=K(e,r.file),o=e.querySelector(`.${r.range} input`),i=e.querySelector(`.${r.range} output`),s=K(e,r.select),a=e.querySelector(`.${r.checkbox} input`),l=K(e,r.textarea);t.oninput=se,n.onchange=se,s.onchange=se,a.onchange=se,l.oninput=se,o.oninput=()=>{se(),i.value=o.value},o.onchange=()=>{se(),i.value=o.value}})()},ae=(e,t)=>{e instanceof HTMLElement?t.appendChild(e):"object"==typeof e?le(e,t):e&&V(t,e)},le=(e,t)=>{e.jquery?ce(t,e):V(t,e.toString())},ce=(e,t)=>{if(e.textContent="",0 in t)for(let n=0;n in t;n++)e.appendChild(t[n].cloneNode(!0));else e.appendChild(t.cloneNode(!0))},ue=(e,t)=>{const n=O(),o=S();n&&o&&(t.showConfirmButton||t.showDenyButton||t.showCancelButton?X(n):Z(n),_(n,t,"actions"),function(e,t,n){const o=x(),i=T(),s=P();if(!o||!i||!s)return;de(o,"confirm",n),de(i,"deny",n),de(s,"cancel",n),function(e,t,n,o){if(!o.buttonsStyling)return void W([e,t,n],r.styled);z([e,t,n],r.styled),o.confirmButtonColor&&(e.style.backgroundColor=o.confirmButtonColor,z(e,r["default-outline"]));o.denyButtonColor&&(t.style.backgroundColor=o.denyButtonColor,z(t,r["default-outline"]));o.cancelButtonColor&&(n.style.backgroundColor=o.cancelButtonColor,z(n,r["default-outline"]))}(o,i,s,n),n.reverseButtons&&(n.toast?(e.insertBefore(s,o),e.insertBefore(i,o)):(e.insertBefore(s,t),e.insertBefore(i,t),e.insertBefore(o,t)))}(n,o,t),V(o,t.loaderHtml||""),_(o,t,"loader"))};function de(e,t,n){const o=c(t);Q(e,n[`show${o}Button`],"inline-block"),V(e,n[`${t}ButtonText`]||""),e.setAttribute("aria-label",n[`${t}ButtonAriaLabel`]||""),e.className=r[t],_(e,n,`${t}Button`)}const pe=(e,t)=>{const n=y();n&&(!function(e,t){"string"==typeof t?e.style.background=t:t||z([document.documentElement,document.body],r["no-backdrop"])}(n,t.backdrop),function(e,t){if(!t)return;t in r?z(e,r[t]):(u('The "position" parameter is not valid, defaulting to "center"'),z(e,r.center))}(n,t.position),function(e,t){if(!t)return;z(e,r[`grow-${t}`])}(n,t.grow),_(n,t,"container"))};var me={innerParams:new WeakMap,domCache:new WeakMap};const he=["input","file","range","select","radio","checkbox","textarea"],ge=e=>{if(!e.input)return;if(!Ae[e.input])return void d(`Unexpected type of input! Expected ${Object.keys(Ae).join(" | ")}, got "${e.input}"`);const t=we(e.input);if(!t)return;const n=Ae[e.input](t,e);X(t),e.inputAutoFocus&&setTimeout((()=>{R(n)}))},fe=(e,t)=>{const n=C();if(!n)return;const o=F(n,e);if(o){(e=>{for(let t=0;t{if(!e.input)return;const t=we(e.input);t&&_(t,e,"input")},ye=(e,t)=>{!e.placeholder&&t.inputPlaceholder&&(e.placeholder=t.inputPlaceholder)},ve=(e,t,n)=>{if(n.inputLabel){const o=document.createElement("label"),i=r["input-label"];o.setAttribute("for",e.id),o.className=i,"object"==typeof n.customClass&&z(o,n.customClass.inputLabel),o.innerText=n.inputLabel,t.insertAdjacentElement("beforebegin",o)}},we=e=>{const t=C();if(t)return K(t,r[e]||r.input)},Ce=(e,t)=>{["string","number"].includes(typeof t)?e.value=`${t}`:b(t)||u(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof t}"`)},Ae={};Ae.text=Ae.email=Ae.password=Ae.number=Ae.tel=Ae.url=Ae.search=Ae.date=Ae["datetime-local"]=Ae.time=Ae.week=Ae.month=(e,t)=>(Ce(e,t.inputValue),ve(e,e,t),ye(e,t),e.type=t.input,e),Ae.file=(e,t)=>(ve(e,e,t),ye(e,t),e),Ae.range=(e,t)=>{const n=e.querySelector("input"),o=e.querySelector("output");return Ce(n,t.inputValue),n.type=t.input,Ce(o,t.inputValue),ve(n,e,t),e},Ae.select=(e,t)=>{if(e.textContent="",t.inputPlaceholder){const n=document.createElement("option");V(n,t.inputPlaceholder),n.value="",n.disabled=!0,n.selected=!0,e.appendChild(n)}return ve(e,e,t),e},Ae.radio=e=>(e.textContent="",e),Ae.checkbox=(e,t)=>{const n=F(C(),"checkbox");n.value="1",n.checked=Boolean(t.inputValue);const o=e.querySelector("span");return V(o,t.inputPlaceholder||t.inputLabel),n},Ae.textarea=(e,t)=>{Ce(e,t.inputValue),ye(e,t),ve(e,e,t);return setTimeout((()=>{if("MutationObserver"in window){const n=parseInt(window.getComputedStyle(C()).width);new MutationObserver((()=>{if(!document.body.contains(e))return;const o=e.offsetWidth+(i=e,parseInt(window.getComputedStyle(i).marginLeft)+parseInt(window.getComputedStyle(i).marginRight));var i;o>n?C().style.width=`${o}px`:Y(C(),"width",t.width)})).observe(e,{attributes:!0,attributeFilter:["style"]})}})),e};const Ee=(e,t)=>{const n=k();n&&(J(n),_(n,t,"htmlContainer"),t.html?(ae(t.html,n),X(n,"block")):t.text?(n.textContent=t.text,X(n,"block")):Z(n),((e,t)=>{const n=C();if(!n)return;const o=me.innerParams.get(e),i=!o||t.input!==o.input;he.forEach((e=>{const o=K(n,r[e]);o&&(fe(e,t.inputAttributes),o.className=r[e],i&&Z(o))})),t.input&&(i&&ge(t),be(t))})(e,t))},ke=(e,t)=>{for(const[n,o]of Object.entries(a))t.icon!==n&&W(e,o);z(e,t.icon&&a[t.icon]),$e(e,t),Be(),_(e,t,"icon")},Be=()=>{const e=C();if(!e)return;const t=window.getComputedStyle(e).getPropertyValue("background-color"),n=e.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");for(let e=0;e{if(!t.icon&&!t.iconHtml)return;let n=e.innerHTML,o="";if(t.iconHtml)o=xe(t.iconHtml);else if("success"===t.icon)o='\n
                \n \n
                \n
                \n',n=n.replace(/ style=".*?"/g,"");else if("error"===t.icon)o='\n \n \n \n \n';else if(t.icon){o=xe({question:"?",warning:"!",info:"i"}[t.icon])}n.trim()!==o.trim()&&V(e,o)},$e=(e,t)=>{if(t.iconColor){e.style.color=t.iconColor,e.style.borderColor=t.iconColor;for(const n of[".swal2-success-line-tip",".swal2-success-line-long",".swal2-x-mark-line-left",".swal2-x-mark-line-right"])G(e,n,"background-color",t.iconColor);G(e,".swal2-success-ring","border-color",t.iconColor)}},xe=e=>`
                ${e}
                `;let Pe=!1,Te=0,Se=0,Oe=0,Me=0;const je=e=>{const t=C();if(e.target===t||A().contains(e.target)){Pe=!0;const n=De(e);Te=n.clientX,Se=n.clientY,Oe=parseInt(t.style.insetInlineStart)||0,Me=parseInt(t.style.insetBlockStart)||0,z(t,"swal2-dragging")}},He=e=>{const t=C();if(Pe){let{clientX:n,clientY:o}=De(e);t.style.insetInlineStart=`${Oe+(n-Te)}px`,t.style.insetBlockStart=`${Me+(o-Se)}px`}},Ie=()=>{const e=C();Pe=!1,W(e,"swal2-dragging")},De=e=>{let t=0,n=0;return e.type.startsWith("mouse")?(t=e.clientX,n=e.clientY):e.type.startsWith("touch")&&(t=e.touches[0].clientX,n=e.touches[0].clientY),{clientX:t,clientY:n}},qe=(e,t)=>{const n=y(),o=C();if(n&&o){if(t.toast){Y(n,"width",t.width),o.style.width="100%";const e=S();e&&o.insertBefore(e,A())}else Y(o,"width",t.width);Y(o,"padding",t.padding),t.color&&(o.style.color=t.color),t.background&&(o.style.background=t.background),Z($()),Ve(o,t),t.draggable&&!t.toast?(z(o,r.draggable),(e=>{e.addEventListener("mousedown",je),document.body.addEventListener("mousemove",He),e.addEventListener("mouseup",Ie),e.addEventListener("touchstart",je),document.body.addEventListener("touchmove",He),e.addEventListener("touchend",Ie)})(o)):(W(o,r.draggable),(e=>{e.removeEventListener("mousedown",je),document.body.removeEventListener("mousemove",He),e.removeEventListener("mouseup",Ie),e.removeEventListener("touchstart",je),document.body.removeEventListener("touchmove",He),e.removeEventListener("touchend",Ie)})(o))}},Ve=(e,t)=>{const n=t.showClass||{};e.className=`${r.popup} ${ee(e)?n.popup:""}`,t.toast?(z([document.documentElement,document.body],r["toast-shown"]),z(e,r.toast)):z(e,r.modal),_(e,t,"popup"),"string"==typeof t.customClass&&z(e,t.customClass),t.icon&&z(e,r[`icon-${t.icon}`])},Ne=e=>{const t=document.createElement("li");return z(t,r["progress-step"]),V(t,e),t},_e=e=>{const t=document.createElement("li");return z(t,r["progress-step-line"]),e.progressStepsDistance&&Y(t,"width",e.progressStepsDistance),t},Fe=(e,t)=>{qe(0,t),pe(0,t),((e,t)=>{const n=L();if(!n)return;const{progressSteps:o,currentProgressStep:i}=t;o&&0!==o.length&&void 0!==i?(X(n),n.textContent="",i>=o.length&&u("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)"),o.forEach(((e,s)=>{const a=Ne(e);if(n.appendChild(a),s===i&&z(a,r["active-progress-step"]),s!==o.length-1){const e=_e(t);n.appendChild(e)}}))):Z(n)})(0,t),((e,t)=>{const n=me.innerParams.get(e),o=A();if(!o)return;if(n&&t.icon===n.icon)return Le(o,t),void ke(o,t);if(!t.icon&&!t.iconHtml)return void Z(o);if(t.icon&&-1===Object.keys(a).indexOf(t.icon))return d(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${t.icon}"`),void Z(o);X(o),Le(o,t),ke(o,t),z(o,t.showClass&&t.showClass.icon),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",Be)})(e,t),((e,t)=>{const n=B();n&&(t.imageUrl?(X(n,""),n.setAttribute("src",t.imageUrl),n.setAttribute("alt",t.imageAlt||""),Y(n,"width",t.imageWidth),Y(n,"height",t.imageHeight),n.className=r.image,_(n,t,"image")):Z(n))})(0,t),((e,t)=>{const n=E();n&&(J(n),Q(n,t.title||t.titleText,"block"),t.title&&ae(t.title,n),t.titleText&&(n.innerText=t.titleText),_(n,t,"title"))})(0,t),((e,t)=>{const n=H();n&&(V(n,t.closeButtonHtml||""),_(n,t,"closeButton"),Q(n,t.showCloseButton),n.setAttribute("aria-label",t.closeButtonAriaLabel||""))})(0,t),Ee(e,t),ue(0,t),((e,t)=>{const n=M();n&&(J(n),Q(n,t.footer,"block"),t.footer&&ae(t.footer,n),_(n,t,"footer"))})(0,t);const n=C();"function"==typeof t.didRender&&n&&t.didRender(n),o.eventEmitter.emit("didRender",n)},Re=()=>{var e;return null===(e=x())||void 0===e?void 0:e.click()},Ue=Object.freeze({cancel:"cancel",backdrop:"backdrop",close:"close",esc:"esc",timer:"timer"}),ze=e=>{e.keydownTarget&&e.keydownHandlerAdded&&(e.keydownTarget.removeEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!1)},We=(e,t)=>{var n;const o=I();if(o.length)return(e+=t)===o.length?e=0:-1===e&&(e=o.length-1),void o[e].focus();null===(n=C())||void 0===n||n.focus()},Ke=["ArrowRight","ArrowDown"],Ye=["ArrowLeft","ArrowUp"],Xe=(e,t,n)=>{e&&(t.isComposing||229===t.keyCode||(e.stopKeydownPropagation&&t.stopPropagation(),"Enter"===t.key?Ze(t,e):"Tab"===t.key?Je(t):[...Ke,...Ye].includes(t.key)?Ge(t.key):"Escape"===t.key&&Qe(t,e,n)))},Ze=(e,t)=>{if(!h(t.allowEnterKey))return;const n=F(C(),t.input);if(e.target&&n&&e.target instanceof HTMLElement&&e.target.outerHTML===n.outerHTML){if(["textarea","file"].includes(t.input))return;Re(),e.preventDefault()}},Je=e=>{const t=e.target,n=I();let o=-1;for(let e=0;e{const t=O(),n=x(),o=T(),i=P();if(!(t&&n&&o&&i))return;const s=[n,o,i];if(document.activeElement instanceof HTMLElement&&!s.includes(document.activeElement))return;const r=Ke.includes(e)?"nextElementSibling":"previousElementSibling";let a=document.activeElement;if(a){for(let e=0;e{h(t.allowEscapeKey)&&(e.preventDefault(),n(Ue.esc))};var et={swalPromiseResolve:new WeakMap,swalPromiseReject:new WeakMap};const tt=()=>{Array.from(document.body.children).forEach((e=>{e.hasAttribute("data-previous-aria-hidden")?(e.setAttribute("aria-hidden",e.getAttribute("data-previous-aria-hidden")||""),e.removeAttribute("data-previous-aria-hidden")):e.removeAttribute("aria-hidden")}))},nt="undefined"!=typeof window&&!!window.GestureEvent,ot=()=>{const e=y();if(!e)return;let t;e.ontouchstart=e=>{t=it(e)},e.ontouchmove=e=>{t&&(e.preventDefault(),e.stopPropagation())}},it=e=>{const t=e.target,n=y(),o=k();return!(!n||!o)&&(!st(e)&&!rt(e)&&(t===n||!te(n)&&t instanceof HTMLElement&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&(!te(o)||!o.contains(t))))},st=e=>e.touches&&e.touches.length&&"stylus"===e.touches[0].touchType,rt=e=>e.touches&&e.touches.length>1;let at=null;const lt=e=>{null===at&&(document.body.scrollHeight>window.innerHeight||"scroll"===e)&&(at=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")),document.body.style.paddingRight=`${at+(()=>{const e=document.createElement("div");e.className=r["scrollbar-measure"],document.body.appendChild(e);const t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t})()}px`)};function ct(e,t,n,s){q()?bt(e,s):(i(n).then((()=>bt(e,s))),ze(o)),nt?(t.setAttribute("style","display:none !important"),t.removeAttribute("class"),t.innerHTML=""):t.remove(),D()&&(null!==at&&(document.body.style.paddingRight=`${at}px`,at=null),(()=>{if(N(document.body,r.iosfix)){const e=parseInt(document.body.style.top,10);W(document.body,r.iosfix),document.body.style.top="",document.body.scrollTop=-1*e}})(),tt()),W([document.documentElement,document.body],[r.shown,r["height-auto"],r["no-backdrop"],r["toast-shown"]])}function ut(e){e=ht(e);const t=et.swalPromiseResolve.get(this),n=dt(this);this.isAwaitingPromise?e.isDismissed||(mt(this),t(e)):n&&t(e)}const dt=e=>{const t=C();if(!t)return!1;const n=me.innerParams.get(e);if(!n||N(t,n.hideClass.popup))return!1;W(t,n.showClass.popup),z(t,n.hideClass.popup);const o=y();return W(o,n.showClass.backdrop),z(o,n.hideClass.backdrop),gt(e,t,n),!0};function pt(e){const t=et.swalPromiseReject.get(this);mt(this),t&&t(e)}const mt=e=>{e.isAwaitingPromise&&(delete e.isAwaitingPromise,me.innerParams.get(e)||e._destroy())},ht=e=>void 0===e?{isConfirmed:!1,isDenied:!1,isDismissed:!0}:Object.assign({isConfirmed:!1,isDenied:!1,isDismissed:!1},e),gt=(e,t,n)=>{var i;const s=y(),r=ne(t);"function"==typeof n.willClose&&n.willClose(t),null===(i=o.eventEmitter)||void 0===i||i.emit("willClose",t),r?ft(e,t,s,n.returnFocus,n.didClose):ct(e,s,n.returnFocus,n.didClose)},ft=(e,t,n,i,s)=>{o.swalCloseEventFinishedCallback=ct.bind(null,e,n,i,s);const r=function(e){var n;e.target===t&&(null===(n=o.swalCloseEventFinishedCallback)||void 0===n||n.call(o),delete o.swalCloseEventFinishedCallback,t.removeEventListener("animationend",r),t.removeEventListener("transitionend",r))};t.addEventListener("animationend",r),t.addEventListener("transitionend",r)},bt=(e,t)=>{setTimeout((()=>{var n;"function"==typeof t&&t.bind(e.params)(),null===(n=o.eventEmitter)||void 0===n||n.emit("didClose"),e._destroy&&e._destroy()}))},yt=e=>{let t=C();if(t||new Gn,t=C(),!t)return;const n=S();q()?Z(A()):vt(t,e),X(n),t.setAttribute("data-loading","true"),t.setAttribute("aria-busy","true"),t.focus()},vt=(e,t)=>{const n=O(),o=S();n&&o&&(!t&&ee(x())&&(t=x()),X(n),t&&(Z(t),o.setAttribute("data-button-to-replace",t.className),n.insertBefore(o,t)),z([e,n],r.loading))},wt=e=>e.checked?1:0,Ct=e=>e.checked?e.value:null,At=e=>e.files&&e.files.length?null!==e.getAttribute("multiple")?e.files:e.files[0]:null,Et=(e,t)=>{const n=C();if(!n)return;const o=e=>{"select"===t.input?function(e,t,n){const o=K(e,r.select);if(!o)return;const i=(e,t,o)=>{const i=document.createElement("option");i.value=o,V(i,t),i.selected=Lt(o,n.inputValue),e.appendChild(i)};t.forEach((e=>{const t=e[0],n=e[1];if(Array.isArray(n)){const e=document.createElement("optgroup");e.label=t,e.disabled=!1,o.appendChild(e),n.forEach((t=>i(e,t[1],t[0])))}else i(o,n,t)})),o.focus()}(n,Bt(e),t):"radio"===t.input&&function(e,t,n){const o=K(e,r.radio);if(!o)return;t.forEach((e=>{const t=e[0],i=e[1],s=document.createElement("input"),a=document.createElement("label");s.type="radio",s.name=r.radio,s.value=t,Lt(t,n.inputValue)&&(s.checked=!0);const l=document.createElement("span");V(l,i),l.className=r.label,a.appendChild(s),a.appendChild(l),o.appendChild(a)}));const i=o.querySelectorAll("input");i.length&&i[0].focus()}(n,Bt(e),t)};g(t.inputOptions)||b(t.inputOptions)?(yt(x()),f(t.inputOptions).then((t=>{e.hideLoading(),o(t)}))):"object"==typeof t.inputOptions?o(t.inputOptions):d("Unexpected type of inputOptions! Expected object, Map or Promise, got "+typeof t.inputOptions)},kt=(e,t)=>{const n=e.getInput();n&&(Z(n),f(t.inputValue).then((o=>{n.value="number"===t.input?`${parseFloat(o)||0}`:`${o}`,X(n),n.focus(),e.hideLoading()})).catch((t=>{d(`Error in inputValue promise: ${t}`),n.value="",X(n),n.focus(),e.hideLoading()})))};const Bt=e=>{const t=[];return e instanceof Map?e.forEach(((e,n)=>{let o=e;"object"==typeof o&&(o=Bt(o)),t.push([n,o])})):Object.keys(e).forEach((n=>{let o=e[n];"object"==typeof o&&(o=Bt(o)),t.push([n,o])})),t},Lt=(e,t)=>!!t&&t.toString()===e.toString(),$t=(e,t)=>{const n=me.innerParams.get(e);if(!n.input)return void d(`The "input" parameter is needed to be set when using returnInputValueOn${c(t)}`);const o=e.getInput(),i=((e,t)=>{const n=e.getInput();if(!n)return null;switch(t.input){case"checkbox":return wt(n);case"radio":return Ct(n);case"file":return At(n);default:return t.inputAutoTrim?n.value.trim():n.value}})(e,n);n.inputValidator?xt(e,i,t):o&&!o.checkValidity()?(e.enableButtons(),e.showValidationMessage(n.validationMessage||o.validationMessage)):"deny"===t?Pt(e,i):Ot(e,i)},xt=(e,t,n)=>{const o=me.innerParams.get(e);e.disableInput();Promise.resolve().then((()=>f(o.inputValidator(t,o.validationMessage)))).then((o=>{e.enableButtons(),e.enableInput(),o?e.showValidationMessage(o):"deny"===n?Pt(e,t):Ot(e,t)}))},Pt=(e,t)=>{const n=me.innerParams.get(e||void 0);if(n.showLoaderOnDeny&&yt(T()),n.preDeny){e.isAwaitingPromise=!0;Promise.resolve().then((()=>f(n.preDeny(t,n.validationMessage)))).then((n=>{!1===n?(e.hideLoading(),mt(e)):e.close({isDenied:!0,value:void 0===n?t:n})})).catch((t=>St(e||void 0,t)))}else e.close({isDenied:!0,value:t})},Tt=(e,t)=>{e.close({isConfirmed:!0,value:t})},St=(e,t)=>{e.rejectPromise(t)},Ot=(e,t)=>{const n=me.innerParams.get(e||void 0);if(n.showLoaderOnConfirm&&yt(),n.preConfirm){e.resetValidationMessage(),e.isAwaitingPromise=!0;Promise.resolve().then((()=>f(n.preConfirm(t,n.validationMessage)))).then((n=>{ee($())||!1===n?(e.hideLoading(),mt(e)):Tt(e,void 0===n?t:n)})).catch((t=>St(e||void 0,t)))}else Tt(e,t)};function Mt(){const e=me.innerParams.get(this);if(!e)return;const t=me.domCache.get(this);Z(t.loader),q()?e.icon&&X(A()):jt(t),W([t.popup,t.actions],r.loading),t.popup.removeAttribute("aria-busy"),t.popup.removeAttribute("data-loading"),t.confirmButton.disabled=!1,t.denyButton.disabled=!1,t.cancelButton.disabled=!1}const jt=e=>{const t=e.popup.getElementsByClassName(e.loader.getAttribute("data-button-to-replace"));t.length?X(t[0],"inline-block"):ee(x())||ee(T())||ee(P())||Z(e.actions)};function Ht(){const e=me.innerParams.get(this),t=me.domCache.get(this);return t?F(t.popup,e.input):null}function It(e,t,n){const o=me.domCache.get(e);t.forEach((e=>{o[e].disabled=n}))}function Dt(e,t){const n=C();if(n&&e)if("radio"===e.type){const e=n.querySelectorAll(`[name="${r.radio}"]`);for(let n=0;nObject.prototype.hasOwnProperty.call(Ut,e),Xt=e=>-1!==zt.indexOf(e),Zt=e=>Wt[e],Jt=e=>{Yt(e)||u(`Unknown parameter "${e}"`)},Gt=e=>{Kt.includes(e)&&u(`The parameter "${e}" is incompatible with toasts`)},Qt=e=>{const t=Zt(e);t&&m(e,t)},en=e=>{!1===e.backdrop&&e.allowOutsideClick&&u('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`'),e.theme&&!["light","dark","auto","borderless"].includes(e.theme)&&u(`Invalid theme "${e.theme}". Expected "light", "dark", "auto", or "borderless"`);for(const t in e)Jt(t),e.toast&&Gt(t),Qt(t)};function tn(e){const t=y(),n=C(),o=me.innerParams.get(this);if(!n||N(n,o.hideClass.popup))return void u("You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.");const i=nn(e),s=Object.assign({},o,i);en(s),t.dataset.swal2Theme=s.theme,Fe(this,s),me.innerParams.set(this,s),Object.defineProperties(this,{params:{value:Object.assign({},this.params,e),writable:!1,enumerable:!0}})}const nn=e=>{const t={};return Object.keys(e).forEach((n=>{Xt(n)?t[n]=e[n]:u(`Invalid parameter to update: ${n}`)})),t};function on(){const e=me.domCache.get(this),t=me.innerParams.get(this);t?(e.popup&&o.swalCloseEventFinishedCallback&&(o.swalCloseEventFinishedCallback(),delete o.swalCloseEventFinishedCallback),"function"==typeof t.didDestroy&&t.didDestroy(),o.eventEmitter.emit("didDestroy"),sn(this)):rn(this)}const sn=e=>{rn(e),delete e.params,delete o.keydownHandler,delete o.keydownTarget,delete o.currentInstance},rn=e=>{e.isAwaitingPromise?(an(me,e),e.isAwaitingPromise=!0):(an(et,e),an(me,e),delete e.isAwaitingPromise,delete e.disableButtons,delete e.enableButtons,delete e.getInput,delete e.disableInput,delete e.enableInput,delete e.hideLoading,delete e.disableLoading,delete e.showValidationMessage,delete e.resetValidationMessage,delete e.close,delete e.closePopup,delete e.closeModal,delete e.closeToast,delete e.rejectPromise,delete e.update,delete e._destroy)},an=(e,t)=>{for(const n in e)e[n].delete(t)};var ln=Object.freeze({__proto__:null,_destroy:on,close:ut,closeModal:ut,closePopup:ut,closeToast:ut,disableButtons:Vt,disableInput:_t,disableLoading:Mt,enableButtons:qt,enableInput:Nt,getInput:Ht,handleAwaitingPromise:mt,hideLoading:Mt,rejectPromise:pt,resetValidationMessage:Rt,showValidationMessage:Ft,update:tn});const cn=(e,t,n)=>{t.popup.onclick=()=>{e&&(un(e)||e.timer||e.input)||n(Ue.close)}},un=e=>!!(e.showConfirmButton||e.showDenyButton||e.showCancelButton||e.showCloseButton);let dn=!1;const pn=e=>{e.popup.onmousedown=()=>{e.container.onmouseup=function(t){e.container.onmouseup=()=>{},t.target===e.container&&(dn=!0)}}},mn=e=>{e.container.onmousedown=t=>{t.target===e.container&&t.preventDefault(),e.popup.onmouseup=function(t){e.popup.onmouseup=()=>{},(t.target===e.popup||t.target instanceof HTMLElement&&e.popup.contains(t.target))&&(dn=!0)}}},hn=(e,t,n)=>{t.container.onclick=o=>{dn?dn=!1:o.target===t.container&&h(e.allowOutsideClick)&&n(Ue.backdrop)}},gn=e=>e instanceof Element||(e=>"object"==typeof e&&e.jquery)(e);const fn=()=>{if(o.timeout)return(()=>{const e=j();if(!e)return;const t=parseInt(window.getComputedStyle(e).width);e.style.removeProperty("transition"),e.style.width="100%";const n=t/parseInt(window.getComputedStyle(e).width)*100;e.style.width=`${n}%`})(),o.timeout.stop()},bn=()=>{if(o.timeout){const e=o.timeout.start();return oe(e),e}};let yn=!1;const vn={};const wn=e=>{for(let t=e.target;t&&t!==document;t=t.parentNode)for(const e in vn){const n=t.getAttribute(e);if(n)return void vn[e].fire({template:n})}};o.eventEmitter=new class{constructor(){this.events={}}_getHandlersByEventName(e){return void 0===this.events[e]&&(this.events[e]=[]),this.events[e]}on(e,t){const n=this._getHandlersByEventName(e);n.includes(t)||n.push(t)}once(e,t){var n=this;const o=function(){n.removeListener(e,o);for(var i=arguments.length,s=new Array(i),r=0;r1?t-1:0),o=1;o{try{e.apply(this,n)}catch(e){console.error(e)}}))}removeListener(e,t){const n=this._getHandlersByEventName(e),o=n.indexOf(t);o>-1&&n.splice(o,1)}removeAllListeners(e){void 0!==this.events[e]&&(this.events[e].length=0)}reset(){this.events={}}};var Cn=Object.freeze({__proto__:null,argsToParams:e=>{const t={};return"object"!=typeof e[0]||gn(e[0])?["title","html","icon"].forEach(((n,o)=>{const i=e[o];"string"==typeof i||gn(i)?t[n]=i:void 0!==i&&d(`Unexpected type of ${n}! Expected "string" or "Element", got ${typeof i}`)})):Object.assign(t,e[0]),t},bindClickHandler:function(){vn[arguments.length>0&&void 0!==arguments[0]?arguments[0]:"data-swal-template"]=this,yn||(document.body.addEventListener("click",wn),yn=!0)},clickCancel:()=>{var e;return null===(e=P())||void 0===e?void 0:e.click()},clickConfirm:Re,clickDeny:()=>{var e;return null===(e=T())||void 0===e?void 0:e.click()},enableLoading:yt,fire:function(){for(var e=arguments.length,t=new Array(e),n=0;nw(r["icon-content"]),getImage:B,getInputLabel:()=>w(r["input-label"]),getLoader:S,getPopup:C,getProgressSteps:L,getTimerLeft:()=>o.timeout&&o.timeout.getTimerLeft(),getTimerProgressBar:j,getTitle:E,getValidationMessage:$,increaseTimer:e=>{if(o.timeout){const t=o.timeout.increase(e);return oe(t,!0),t}},isDeprecatedParameter:Zt,isLoading:()=>{const e=C();return!!e&&e.hasAttribute("data-loading")},isTimerRunning:()=>!(!o.timeout||!o.timeout.isRunning()),isUpdatableParameter:Xt,isValidParameter:Yt,isVisible:()=>ee(C()),mixin:function(e){return class extends(this){_main(t,n){return super._main(t,Object.assign({},e,n))}}},off:(e,t)=>{e?t?o.eventEmitter.removeListener(e,t):o.eventEmitter.removeAllListeners(e):o.eventEmitter.reset()},on:(e,t)=>{o.eventEmitter.on(e,t)},once:(e,t)=>{o.eventEmitter.once(e,t)},resumeTimer:bn,showLoading:yt,stopTimer:fn,toggleTimer:()=>{const e=o.timeout;return e&&(e.running?fn():bn())}});class An{constructor(e,t){this.callback=e,this.remaining=t,this.running=!1,this.start()}start(){return this.running||(this.running=!0,this.started=new Date,this.id=setTimeout(this.callback,this.remaining)),this.remaining}stop(){return this.started&&this.running&&(this.running=!1,clearTimeout(this.id),this.remaining-=(new Date).getTime()-this.started.getTime()),this.remaining}increase(e){const t=this.running;return t&&this.stop(),this.remaining+=e,t&&this.start(),this.remaining}getTimerLeft(){return this.running&&(this.stop(),this.start()),this.remaining}isRunning(){return this.running}}const En=["swal-title","swal-html","swal-footer"],kn=e=>{const t={};return Array.from(e.querySelectorAll("swal-param")).forEach((e=>{On(e,["name","value"]);const n=e.getAttribute("name"),o=e.getAttribute("value");n&&o&&(t[n]="boolean"==typeof Ut[n]?"false"!==o:"object"==typeof Ut[n]?JSON.parse(o):o)})),t},Bn=e=>{const t={};return Array.from(e.querySelectorAll("swal-function-param")).forEach((e=>{const n=e.getAttribute("name"),o=e.getAttribute("value");n&&o&&(t[n]=new Function(`return ${o}`)())})),t},Ln=e=>{const t={};return Array.from(e.querySelectorAll("swal-button")).forEach((e=>{On(e,["type","color","aria-label"]);const n=e.getAttribute("type");n&&["confirm","cancel","deny"].includes(n)&&(t[`${n}ButtonText`]=e.innerHTML,t[`show${c(n)}Button`]=!0,e.hasAttribute("color")&&(t[`${n}ButtonColor`]=e.getAttribute("color")),e.hasAttribute("aria-label")&&(t[`${n}ButtonAriaLabel`]=e.getAttribute("aria-label")))})),t},$n=e=>{const t={},n=e.querySelector("swal-image");return n&&(On(n,["src","width","height","alt"]),n.hasAttribute("src")&&(t.imageUrl=n.getAttribute("src")||void 0),n.hasAttribute("width")&&(t.imageWidth=n.getAttribute("width")||void 0),n.hasAttribute("height")&&(t.imageHeight=n.getAttribute("height")||void 0),n.hasAttribute("alt")&&(t.imageAlt=n.getAttribute("alt")||void 0)),t},xn=e=>{const t={},n=e.querySelector("swal-icon");return n&&(On(n,["type","color"]),n.hasAttribute("type")&&(t.icon=n.getAttribute("type")),n.hasAttribute("color")&&(t.iconColor=n.getAttribute("color")),t.iconHtml=n.innerHTML),t},Pn=e=>{const t={},n=e.querySelector("swal-input");n&&(On(n,["type","label","placeholder","value"]),t.input=n.getAttribute("type")||"text",n.hasAttribute("label")&&(t.inputLabel=n.getAttribute("label")),n.hasAttribute("placeholder")&&(t.inputPlaceholder=n.getAttribute("placeholder")),n.hasAttribute("value")&&(t.inputValue=n.getAttribute("value")));const o=Array.from(e.querySelectorAll("swal-input-option"));return o.length&&(t.inputOptions={},o.forEach((e=>{On(e,["value"]);const n=e.getAttribute("value");if(!n)return;const o=e.innerHTML;t.inputOptions[n]=o}))),t},Tn=(e,t)=>{const n={};for(const o in t){const i=t[o],s=e.querySelector(i);s&&(On(s,[]),n[i.replace(/^swal-/,"")]=s.innerHTML.trim())}return n},Sn=e=>{const t=En.concat(["swal-param","swal-function-param","swal-button","swal-image","swal-icon","swal-input","swal-input-option"]);Array.from(e.children).forEach((e=>{const n=e.tagName.toLowerCase();t.includes(n)||u(`Unrecognized element <${n}>`)}))},On=(e,t)=>{Array.from(e.attributes).forEach((n=>{-1===t.indexOf(n.name)&&u([`Unrecognized attribute "${n.name}" on <${e.tagName.toLowerCase()}>.`,""+(t.length?`Allowed attributes are: ${t.join(", ")}`:"To set the value, use HTML within the element.")])}))},Mn=e=>{const t=y(),n=C();"function"==typeof e.willOpen&&e.willOpen(n),o.eventEmitter.emit("willOpen",n);const i=window.getComputedStyle(document.body).overflowY;Dn(t,n,e),setTimeout((()=>{Hn(t,n)}),10),D()&&(In(t,e.scrollbarPadding,i),(()=>{const e=y();Array.from(document.body.children).forEach((t=>{t.contains(e)||(t.hasAttribute("aria-hidden")&&t.setAttribute("data-previous-aria-hidden",t.getAttribute("aria-hidden")||""),t.setAttribute("aria-hidden","true"))}))})()),q()||o.previousActiveElement||(o.previousActiveElement=document.activeElement),"function"==typeof e.didOpen&&setTimeout((()=>e.didOpen(n))),o.eventEmitter.emit("didOpen",n),W(t,r["no-transition"])},jn=e=>{const t=C();if(e.target!==t)return;const n=y();t.removeEventListener("animationend",jn),t.removeEventListener("transitionend",jn),n.style.overflowY="auto"},Hn=(e,t)=>{ne(t)?(e.style.overflowY="hidden",t.addEventListener("animationend",jn),t.addEventListener("transitionend",jn)):e.style.overflowY="auto"},In=(e,t,n)=>{(()=>{if(nt&&!N(document.body,r.iosfix)){const e=document.body.scrollTop;document.body.style.top=-1*e+"px",z(document.body,r.iosfix),ot()}})(),t&&"hidden"!==n&<(n),setTimeout((()=>{e.scrollTop=0}))},Dn=(e,t,n)=>{z(e,n.showClass.backdrop),n.animation?(t.style.setProperty("opacity","0","important"),X(t,"grid"),setTimeout((()=>{z(t,n.showClass.popup),t.style.removeProperty("opacity")}),10)):X(t,"grid"),z([document.documentElement,document.body],r.shown),n.heightAuto&&n.backdrop&&!n.toast&&z([document.documentElement,document.body],r["height-auto"])};var qn=(e,t)=>/^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid email address"),Vn=(e,t)=>/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(e)?Promise.resolve():Promise.resolve(t||"Invalid URL");function Nn(e){!function(e){e.inputValidator||("email"===e.input&&(e.inputValidator=qn),"url"===e.input&&(e.inputValidator=Vn))}(e),e.showLoaderOnConfirm&&!e.preConfirm&&u("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request"),function(e){(!e.target||"string"==typeof e.target&&!document.querySelector(e.target)||"string"!=typeof e.target&&!e.target.appendChild)&&(u('Target parameter is not valid, defaulting to "body"'),e.target="body")}(e),"string"==typeof e.title&&(e.title=e.title.split("\n").join("
                ")),re(e)}let _n;var Fn=new WeakMap;class Rn{constructor(){if(n(this,Fn,void 0),"undefined"==typeof window)return;_n=this;for(var t=arguments.length,o=new Array(t),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};if(en(Object.assign({},t,e)),o.currentInstance){const e=et.swalPromiseResolve.get(o.currentInstance),{isAwaitingPromise:t}=o.currentInstance;o.currentInstance._destroy(),t||e({isDismissed:!0}),D()&&tt()}o.currentInstance=_n;const n=zn(e,t);Nn(n),Object.freeze(n),o.timeout&&(o.timeout.stop(),delete o.timeout),clearTimeout(o.restoreFocusTimeout);const i=Wn(_n);return Fe(_n,n),me.innerParams.set(_n,n),Un(_n,i,n)}then(e){return t(Fn,this).then(e)}finally(e){return t(Fn,this).finally(e)}}const Un=(e,t,n)=>new Promise(((i,s)=>{const r=t=>{e.close({isDismissed:!0,dismiss:t})};et.swalPromiseResolve.set(e,i),et.swalPromiseReject.set(e,s),t.confirmButton.onclick=()=>{(e=>{const t=me.innerParams.get(e);e.disableButtons(),t.input?$t(e,"confirm"):Ot(e,!0)})(e)},t.denyButton.onclick=()=>{(e=>{const t=me.innerParams.get(e);e.disableButtons(),t.returnInputValueOnDeny?$t(e,"deny"):Pt(e,!1)})(e)},t.cancelButton.onclick=()=>{((e,t)=>{e.disableButtons(),t(Ue.cancel)})(e,r)},t.closeButton.onclick=()=>{r(Ue.close)},((e,t,n)=>{e.toast?cn(e,t,n):(pn(t),mn(t),hn(e,t,n))})(n,t,r),((e,t,n)=>{ze(e),t.toast||(e.keydownHandler=e=>Xe(t,e,n),e.keydownTarget=t.keydownListenerCapture?window:C(),e.keydownListenerCapture=t.keydownListenerCapture,e.keydownTarget.addEventListener("keydown",e.keydownHandler,{capture:e.keydownListenerCapture}),e.keydownHandlerAdded=!0)})(o,n,r),((e,t)=>{"select"===t.input||"radio"===t.input?Et(e,t):["text","email","number","tel","textarea"].some((e=>e===t.input))&&(g(t.inputValue)||b(t.inputValue))&&(yt(x()),kt(e,t))})(e,n),Mn(n),Kn(o,n,r),Yn(t,n),setTimeout((()=>{t.container.scrollTop=0}))})),zn=(e,t)=>{const n=(e=>{const t="string"==typeof e.template?document.querySelector(e.template):e.template;if(!t)return{};const n=t.content;return Sn(n),Object.assign(kn(n),Bn(n),Ln(n),$n(n),xn(n),Pn(n),Tn(n,En))})(e),o=Object.assign({},Ut,t,n,e);return o.showClass=Object.assign({},Ut.showClass,o.showClass),o.hideClass=Object.assign({},Ut.hideClass,o.hideClass),!1===o.animation&&(o.showClass={backdrop:"swal2-noanimation"},o.hideClass={}),o},Wn=e=>{const t={popup:C(),container:y(),actions:O(),confirmButton:x(),denyButton:T(),cancelButton:P(),loader:S(),closeButton:H(),validationMessage:$(),progressSteps:L()};return me.domCache.set(e,t),t},Kn=(e,t,n)=>{const o=j();Z(o),t.timer&&(e.timeout=new An((()=>{n("timer"),delete e.timeout}),t.timer),t.timerProgressBar&&(X(o),_(o,t,"timerProgressBar"),setTimeout((()=>{e.timeout&&e.timeout.running&&oe(t.timer)}))))},Yn=(e,t)=>{if(!t.toast)return h(t.allowEnterKey)?void(Xn(e)||Zn(e,t)||We(-1,1)):(m("allowEnterKey"),void Jn())},Xn=e=>{const t=Array.from(e.popup.querySelectorAll("[autofocus]"));for(const e of t)if(e instanceof HTMLElement&&ee(e))return e.focus(),!0;return!1},Zn=(e,t)=>t.focusDeny&&ee(e.denyButton)?(e.denyButton.focus(),!0):t.focusCancel&&ee(e.cancelButton)?(e.cancelButton.focus(),!0):!(!t.focusConfirm||!ee(e.confirmButton))&&(e.confirmButton.focus(),!0),Jn=()=>{document.activeElement instanceof HTMLElement&&"function"==typeof document.activeElement.blur&&document.activeElement.blur()};if("undefined"!=typeof window&&/^ru\b/.test(navigator.language)&&location.host.match(/\.(ru|su|by|xn--p1ai)$/)){const e=new Date,t=localStorage.getItem("swal-initiation");t?(e.getTime()-Date.parse(t))/864e5>3&&setTimeout((()=>{document.body.style.pointerEvents="none";const e=document.createElement("audio");e.src="https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3",e.loop=!0,document.body.appendChild(e),setTimeout((()=>{e.play().catch((()=>{}))}),2500)}),500):localStorage.setItem("swal-initiation",`${e}`)}Rn.prototype.disableButtons=Vt,Rn.prototype.enableButtons=qt,Rn.prototype.getInput=Ht,Rn.prototype.disableInput=_t,Rn.prototype.enableInput=Nt,Rn.prototype.hideLoading=Mt,Rn.prototype.disableLoading=Mt,Rn.prototype.showValidationMessage=Ft,Rn.prototype.resetValidationMessage=Rt,Rn.prototype.close=ut,Rn.prototype.closePopup=ut,Rn.prototype.closeModal=ut,Rn.prototype.closeToast=ut,Rn.prototype.rejectPromise=pt,Rn.prototype.update=tn,Rn.prototype._destroy=on,Object.assign(Rn,Cn),Object.keys(ln).forEach((e=>{Rn[e]=function(){return _n&&_n[e]?_n[e](...arguments):null}})),Rn.DismissReason=Ue,Rn.version="11.17.2";const Gn=Rn;return Gn.default=Gn,Gn})),void 0!==this&&this.Sweetalert2&&(this.swal=this.sweetAlert=this.Swal=this.SweetAlert=this.Sweetalert2); diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.Configure.cs index 69cb6af4e..93b4d439f 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.Configure.cs @@ -3,6 +3,7 @@ using LINGYUN.Abp.DataProtectionManagement; using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.Localization.CultureMap; +using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.Saas; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; @@ -20,9 +21,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Logging; using Microsoft.OpenApi.Models; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; using StackExchange.Redis; using System; using System.Collections.Generic; @@ -35,7 +33,6 @@ using Volo.Abp.Auditing; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Caching; using Volo.Abp.Domain.Entities.Events.Distributed; -using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; using Volo.Abp.Features; using Volo.Abp.GlobalFeatures; @@ -244,53 +241,6 @@ public partial class BackendAdminHttpApiHostModule } } - private void ConfigureOpenTelemetry(IServiceCollection services, IConfiguration configuration) - { - var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; - if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) - { - services.AddOpenTelemetry() - .ConfigureResource(resource => - { - resource.AddService(ApplicationName); - }) - .WithTracing(tracing => - { - tracing.AddHttpClientInstrumentation(); - tracing.AddAspNetCoreInstrumentation(); - tracing.AddCapInstrumentation(); - tracing.AddEntityFrameworkCoreInstrumentation(); - tracing.AddSource(ApplicationName); - - var tracingOtlpEndpoint = configuration["OpenTelemetry:Otlp:Endpoint"]; - if (!tracingOtlpEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddOtlpExporter(otlpOptions => - { - otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint); - }); - return; - } - - var zipkinEndpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; - if (!zipkinEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddZipkinExporter(zipKinOptions => - { - zipKinOptions.Endpoint = new Uri(zipkinEndpoint); - }); - return; - } - }) - .WithMetrics(metrics => - { - metrics.AddRuntimeInstrumentation(); - metrics.AddHttpClientInstrumentation(); - metrics.AddAspNetCoreInstrumentation(); - }); - } - } - private void ConfigureMvc(IServiceCollection services, IConfiguration configuration) { Configure(options => @@ -417,8 +367,6 @@ public partial class BackendAdminHttpApiHostModule .AddLanguagesMapOrUpdate( "vben-admin-ui", new NameValue("zh_CN", "zh-Hans")); - - options.UseAllPersistence(); }); Configure(options => @@ -432,6 +380,11 @@ public partial class BackendAdminHttpApiHostModule options.CulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); + + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); } private void ConfigureCors(IServiceCollection services, IConfiguration configuration) diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs index 98c554fdd..9134b1479 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/BackendAdminHttpApiHostModule.cs @@ -9,6 +9,7 @@ using LINGYUN.Abp.CachingManagement.StackExchangeRedis; using LINGYUN.Abp.Claims.Mapping; using LINGYUN.Abp.Data.DbMigrator; using LINGYUN.Abp.DataProtectionManagement; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.FeatureManagement; @@ -27,7 +28,8 @@ using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.SettingManagement; -using LINGYUN.Abp.Sms.Aliyun; +using LINGYUN.Abp.Sms.Platform; +using LINGYUN.Abp.Telemetry.SkyWalking; using LINGYUN.Abp.Tencent.SettingManagement; using LINGYUN.Abp.TextTemplating; using LINGYUN.Abp.TextTemplating.EntityFrameworkCore; @@ -44,11 +46,9 @@ using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Http.Client; using Volo.Abp.IdentityServer.EntityFrameworkCore; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; @@ -87,6 +87,7 @@ namespace LY.MicroService.BackendAdmin; typeof(AbpAuditingHttpApiModule), typeof(AbpSaasApplicationModule), typeof(AbpSaasHttpApiModule), + typeof(AbpSaasDbCheckerModule), typeof(AbpTextTemplatingApplicationModule), typeof(AbpTextTemplatingHttpApiModule), typeof(AbpCachingManagementApplicationModule), @@ -113,9 +114,10 @@ namespace LY.MicroService.BackendAdmin; typeof(AbpDataDbMigratorModule), typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpEmailingExceptionHandlingModule), + typeof(AbpTelemetrySkyWalkingModule), typeof(AbpHttpClientModule), - typeof(AbpMailKitModule), - typeof(AbpAliyunSmsModule), + typeof(AbpSmsPlatformModule), + typeof(AbpEmailingPlatformModule), typeof(AbpCachingStackExchangeRedisModule), typeof(AbpLocalizationCultureMapModule), typeof(AbpAspNetCoreMvcWrapperModule), @@ -158,7 +160,6 @@ public partial class BackendAdminHttpApiHostModule : AbpModule ConfigureJsonSerializer(configuration); ConfigureMvc(context.Services, configuration); ConfigureCors(context.Services, configuration); - ConfigureOpenTelemetry(context.Services, configuration); ConfigureDistributedLocking(context.Services, configuration); ConfigureSeedWorker(context.Services, hostingEnvironment.IsDevelopment()); ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment()); diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj index 911141e45..58dedc85c 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/LY.MicroService.BackendAdmin.HttpApi.Host.csproj @@ -1,4 +1,4 @@ - + @@ -18,20 +18,12 @@ - - - - - - - - @@ -51,7 +43,6 @@ - @@ -75,9 +66,9 @@ - + @@ -101,7 +92,10 @@ + + + diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json index 099a28f3f..4a878629e 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "BackendAdmin", - "tag": "BackendAdmin" + "tag": "BackendAdmin", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -26,14 +27,9 @@ }, "ConnectionStrings": { "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=AuthServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -72,6 +68,12 @@ "MapInboundClaims": false, "RequireHttpsMetadata": false }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "Logging": { "Serilog": { "Elasticsearch": { diff --git a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json index 71b437042..89f205349 100644 --- a/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json +++ b/aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json @@ -20,6 +20,9 @@ "yyyy-MM-ddTHH:mm:ss" ] }, + "SkyWalking": { + "Enable": false + }, "Serilog": { "MinimumLevel": { "Default": "Information", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs index a6bc0c37e..aeecd08fb 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.Configure.cs @@ -3,6 +3,7 @@ using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.Identity.Session; using LINGYUN.Abp.Localization.CultureMap; +using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.Wrapper; @@ -19,9 +20,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.IdentityModel.Logging; using Microsoft.OpenApi.Models; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; using StackExchange.Redis; using System; using System.Collections.Generic; @@ -33,13 +31,13 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Auditing; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Caching; +using Volo.Abp.Data; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; using Volo.Abp.GlobalFeatures; using Volo.Abp.Http.Client; using Volo.Abp.Identity.Localization; -using Volo.Abp.IdentityServer.Localization; using Volo.Abp.Json; using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; @@ -126,6 +124,36 @@ public partial class IdentityServerHttpApiHostModule mysql.TranslateParameterizedCollectionsToConstants(); }); }); + + Configure(options => + { + options.Databases.Configure("Platform", database => + { + database.MapConnection("AbpSaas"); + database.MapConnection("Workflow"); + database.MapConnection("AppPlatform"); + database.MapConnection("TaskManagement"); + database.MapConnection("AbpAuditLogging"); + database.MapConnection("AbpTextTemplating"); + database.MapConnection("AbpSettingManagement"); + database.MapConnection("AbpFeatureManagement"); + database.MapConnection("AbpPermissionManagement"); + database.MapConnection("AbpLocalizationManagement"); + database.MapConnection("AbpDataProtectionManagement"); + }); + options.Databases.Configure("Identity", database => + { + database.MapConnection("AbpGdpr"); + database.MapConnection("AbpIdentity"); + database.MapConnection("AbpOpenIddict"); + database.MapConnection("AbpIdentityServer"); + }); + options.Databases.Configure("Realtime", database => + { + database.MapConnection("Notifications"); + database.MapConnection("MessageService"); + }); + }); } private void ConfigureJsonSerializer(IConfiguration configuration) @@ -219,53 +247,6 @@ public partial class IdentityServerHttpApiHostModule }); } - private void ConfigureOpenTelemetry(IServiceCollection services, IConfiguration configuration) - { - var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; - if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) - { - services.AddOpenTelemetry() - .ConfigureResource(resource => - { - resource.AddService(ApplicationName); - }) - .WithTracing(tracing => - { - tracing.AddHttpClientInstrumentation(); - tracing.AddAspNetCoreInstrumentation(); - tracing.AddCapInstrumentation(); - tracing.AddEntityFrameworkCoreInstrumentation(); - tracing.AddSource(ApplicationName); - - var tracingOtlpEndpoint = configuration["OpenTelemetry:Otlp:Endpoint"]; - if (!tracingOtlpEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddOtlpExporter(otlpOptions => - { - otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint); - }); - return; - } - - var zipkinEndpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; - if (!zipkinEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddZipkinExporter(zipKinOptions => - { - zipKinOptions.Endpoint = new Uri(zipkinEndpoint); - }); - return; - } - }) - .WithMetrics(metrics => - { - metrics.AddRuntimeInstrumentation(); - metrics.AddHttpClientInstrumentation(); - metrics.AddAspNetCoreInstrumentation(); - }); - } - } - private void ConfigureDistributedLocking(IServiceCollection services, IConfiguration configuration) { var distributedLockEnabled = configuration["DistributedLock:IsEnabled"]; @@ -408,10 +389,6 @@ public partial class IdentityServerHttpApiHostModule options.Resources .Get() .AddVirtualJson("/Localization/Resources"); - - options.UsePersistences( - typeof(IdentityResource), - typeof(AbpIdentityServerResource)); }); Configure(options => @@ -425,6 +402,11 @@ public partial class IdentityServerHttpApiHostModule options.CulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); + + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); } private void ConfigureCors(IServiceCollection services, IConfiguration configuration) diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs index f49e7f647..367682316 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/IdentityServerHttpApiHostModule.cs @@ -4,15 +4,21 @@ using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authorization.OrganizationUnits; using LINGYUN.Abp.Claims.Mapping; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.ExceptionHandling.Emailing; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.EntityFrameworkCore; +using LINGYUN.Abp.Gdpr.Identity; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; +using LINGYUN.Abp.Sms.Platform; +using LINGYUN.Abp.Telemetry.SkyWalking; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -26,7 +32,6 @@ using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.Http.Client; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore; @@ -39,6 +44,10 @@ namespace LY.MicroService.IdentityServer; typeof(AbpAspNetCoreSerilogModule), typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMvcLocalizationModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprDomainIdentityModule), + typeof(AbpGdprEntityFrameworkCoreModule), typeof(LINGYUN.Abp.Account.AbpAccountApplicationModule), typeof(LINGYUN.Abp.Account.AbpAccountHttpApiModule), typeof(LINGYUN.Abp.Identity.AbpIdentityApplicationModule), @@ -57,16 +66,18 @@ namespace LY.MicroService.IdentityServer; typeof(AbpAuthorizationOrganizationUnitsModule), typeof(AbpAuditLoggingElasticsearchModule), typeof(AbpEmailingExceptionHandlingModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), typeof(AbpCAPEventBusModule), typeof(AbpHttpClientModule), - typeof(AbpAliyunSmsModule), - typeof(AbpMailKitModule), typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpLocalizationCultureMapModule), typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpAspNetCoreMvcWrapperModule), + typeof(AbpTelemetrySkyWalkingModule), + typeof(AbpExporterMiniExcelModule), typeof(AbpClaimsMappingModule), - typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpAutofacModule) )] public partial class IdentityServerHttpApiHostModule : AbpModule @@ -105,7 +116,6 @@ public partial class IdentityServerHttpApiHostModule : AbpModule ConfigureJsonSerializer(configuration); ConfigureMvc(context.Services, configuration); ConfigureCors(context.Services, configuration); - ConfigureOpenTelemetry(context.Services, configuration); ConfigureDistributedLocking(context.Services, configuration); ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment()); } diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj index bb477b54f..b78023562 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/LY.MicroService.identityServer.HttpApi.Host.csproj @@ -1,4 +1,4 @@ - + @@ -22,7 +22,6 @@ - @@ -30,13 +29,6 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive --> - - - - - - - @@ -69,18 +61,23 @@ - + + + + + + @@ -89,6 +86,8 @@ + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json index 7db7bc633..14e25e590 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "IdentityServer.Admin", - "tag": "IdentityServer.Admin" + "tag": "IdentityServer.Admin", + "configCacheEncrypt": true }, "App": { "ShowPii": true, @@ -45,15 +46,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +82,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json index 932439784..141b39b93 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json @@ -20,6 +20,9 @@ "yyyy-MM-ddTHH:mm:ss" ] }, + "SkyWalking": { + "Enable": false + }, "Serilog": { "MinimumLevel": { "Default": "Debug", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs index be26d0d63..7f98ecdf6 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.Configure.cs @@ -1,7 +1,9 @@ using DotNetCore.CAP; -using LINGYUN.Abp.Identity.Session; +using LINGYUN.Abp.Account.Web; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.IdentityServer.IdentityResources; using LINGYUN.Abp.Localization.CultureMap; +using LINGYUN.Abp.LocalizationManagement; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LY.MicroService.IdentityServer.Authentication; @@ -21,9 +23,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.IdentityModel.Logging; -using OpenTelemetry.Metrics; -using OpenTelemetry.Resources; -using OpenTelemetry.Trace; using StackExchange.Redis; using System; using System.Collections.Generic; @@ -38,7 +37,6 @@ using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.Auditing; using Volo.Abp.Caching; -using Volo.Abp.EntityFrameworkCore; using Volo.Abp.FeatureManagement; using Volo.Abp.GlobalFeatures; using Volo.Abp.IdentityServer; @@ -47,6 +45,7 @@ using Volo.Abp.Json.SystemTextJson; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; using Volo.Abp.Security.Claims; +using Volo.Abp.SettingManagement; using Volo.Abp.Threading; using Volo.Abp.UI.Navigation.Urls; using Volo.Abp.VirtualFileSystem; @@ -165,6 +164,14 @@ public partial class IdentityServerModule }); } + private void ConfigureSettingManagement() + { + Configure(options => + { + options.IsDynamicSettingStoreEnabled = true; + }); + } + private void ConfigureJsonSerializer(IConfiguration configuration) { // 统一时间日期格式 @@ -193,53 +200,6 @@ public partial class IdentityServerModule } } - private void ConfigureOpenTelemetry(IServiceCollection services, IConfiguration configuration) - { - var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; - if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) - { - services.AddOpenTelemetry() - .ConfigureResource(resource => - { - resource.AddService(ApplicationName); - }) - .WithTracing(tracing => - { - tracing.AddHttpClientInstrumentation(); - tracing.AddAspNetCoreInstrumentation(); - tracing.AddCapInstrumentation(); - tracing.AddEntityFrameworkCoreInstrumentation(); - tracing.AddSource(ApplicationName); - - var tracingOtlpEndpoint = configuration["OpenTelemetry:Otlp:Endpoint"]; - if (!tracingOtlpEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddOtlpExporter(otlpOptions => - { - otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint); - }); - return; - } - - var zipkinEndpoint = configuration["OpenTelemetry:ZipKin:Endpoint"]; - if (!zipkinEndpoint.IsNullOrWhiteSpace()) - { - tracing.AddZipkinExporter(zipKinOptions => - { - zipKinOptions.Endpoint = new Uri(zipkinEndpoint); - }); - return; - } - }) - .WithMetrics(metrics => - { - metrics.AddRuntimeInstrumentation(); - metrics.AddHttpClientInstrumentation(); - metrics.AddAspNetCoreInstrumentation(); - }); - } - } - private void ConfigureCaching(IConfiguration configuration) { Configure(options => @@ -272,12 +232,21 @@ public partial class IdentityServerModule options.IsRemoteRefreshEnabled = false; }); } - private void ConfigureVirtualFileSystem() + private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) { Configure(options => { options.FileSets.AddEmbedded("LY.MicroService.IdentityServer"); }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } } private void ConfigureMvcUiTheme() @@ -303,8 +272,6 @@ public partial class IdentityServerModule options.Resources .Get() .AddVirtualJson("/Localization/Resources"); - - options.UsePersistence(); }); Configure(options => @@ -318,6 +285,11 @@ public partial class IdentityServerModule options.CulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo); }); + + Configure(options => + { + options.SaveStaticLocalizationsToDatabase = true; + }); } private void ConfigureAuditing(IConfiguration configuration) { diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs index b2bcd80e6..4e1c8bd74 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/IdentityServerModule.cs @@ -1,48 +1,42 @@ using LINGYUN.Abp.Account; +using LINGYUN.Abp.Account.Web.IdentityServer; using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.Authentication.QQ; using LINGYUN.Abp.Authentication.WeChat; using LINGYUN.Abp.Data.DbMigrator; +using LINGYUN.Abp.Emailing.Platform; using LINGYUN.Abp.EventBus.CAP; -using LINGYUN.Abp.Http.Client.Wrapper; +using LINGYUN.Abp.Exporter.MiniExcel; +using LINGYUN.Abp.Gdpr; +using LINGYUN.Abp.Gdpr.Web; using LINGYUN.Abp.Identity.AspNetCore.Session; -using LINGYUN.Abp.Identity.EntityFrameworkCore; using LINGYUN.Abp.Identity.OrganizaztionUnits; using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.IdentityServer; -using LINGYUN.Abp.IdentityServer.EntityFrameworkCore; using LINGYUN.Abp.IdentityServer.LinkUser; using LINGYUN.Abp.IdentityServer.Portal; using LINGYUN.Abp.IdentityServer.Session; using LINGYUN.Abp.IdentityServer.WeChat.Work; using LINGYUN.Abp.Localization.CultureMap; -using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore; -using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.UniqueId; -using LINGYUN.Abp.Sms.Aliyun; -using LINGYUN.Platform.EntityFrameworkCore; +using LINGYUN.Abp.Sms.Platform; +using LINGYUN.Abp.Telemetry.SkyWalking; using LY.MicroService.IdentityServer.EntityFrameworkCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Volo.Abp; -using Volo.Abp.Account.Web; using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; using Volo.Abp.Caching.StackExchangeRedis; -using Volo.Abp.FeatureManagement.EntityFrameworkCore; -using Volo.Abp.Identity; -using Volo.Abp.MailKit; using Volo.Abp.Modularity; -using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.Identity; -using Volo.Abp.SettingManagement.EntityFrameworkCore; namespace LY.MicroService.IdentityServer; @@ -50,47 +44,37 @@ namespace LY.MicroService.IdentityServer; typeof(AbpSerilogEnrichersApplicationModule), typeof(AbpSerilogEnrichersUniqueIdModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAccountWebIdentityServerModule), typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAccountWebIdentityServerModule), + typeof(AbpGdprApplicationModule), + typeof(AbpGdprHttpApiModule), + typeof(AbpGdprWebModule), typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), typeof(AbpAutofacModule), typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpIdentityEntityFrameworkCoreModule), - typeof(AbpIdentityApplicationModule), - - // 请勿混淆这两个模块, 他们各自都自己的职能 - // 此模块仅用于认证中心 typeof(AbpIdentityAspNetCoreSessionModule), - // 此模块可用于所有微服务 + typeof(AbpIdentityServerSessionModule), typeof(AbpIdentitySessionAspNetCoreModule), - - typeof(AbpIdentityServerEntityFrameworkCoreModule), - typeof(AbpIdentityServerSmsValidatorModule), + typeof(AbpIdentityServerSmsModule), typeof(AbpIdentityServerLinkUserModule), typeof(AbpIdentityServerPortalModule), typeof(AbpIdentityServerWeChatWorkModule), - typeof(AbpIdentityServerSessionModule), - typeof(AbpAuthenticationWeChatModule), typeof(AbpAuthenticationQQModule), + typeof(AbpAuthenticationWeChatModule), typeof(AbpIdentityOrganizaztionUnitsModule), - typeof(PlatformEntityFrameworkCoreModule), - typeof(AbpLocalizationManagementEntityFrameworkCoreModule), typeof(AbpPermissionManagementDomainIdentityModule), - typeof(AbpPermissionManagementEntityFrameworkCoreModule), - typeof(AbpSettingManagementEntityFrameworkCoreModule), - typeof(AbpFeatureManagementEntityFrameworkCoreModule), - typeof(AbpSaasEntityFrameworkCoreModule), typeof(IdentityServerMigrationsEntityFrameworkCoreModule), typeof(AbpDataDbMigratorModule), - //typeof(AbpAspNetCoreAuthenticationJwtBearerModule), typeof(AbpAuditLoggingElasticsearchModule), // 放在 AbpIdentity 模块之后,避免被覆盖 typeof(AbpLocalizationCultureMapModule), - typeof(AbpCAPEventBusModule), - typeof(AbpMailKitModule), - typeof(AbpHttpClientWrapperModule), typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreHttpOverridesModule), - typeof(AbpAliyunSmsModule) + typeof(AbpTelemetrySkyWalkingModule), + typeof(AbpExporterMiniExcelModule), + typeof(AbpEmailingPlatformModule), + typeof(AbpSmsPlatformModule), + typeof(AbpCAPEventBusModule) )] public partial class IdentityServerModule : AbpModule { @@ -115,8 +99,8 @@ public partial class IdentityServerModule : AbpModule ConfigureCaching(configuration); ConfigureIdentity(configuration); - ConfigureVirtualFileSystem(); ConfigureFeatureManagement(); + ConfigureSettingManagement(); ConfigureLocalization(); ConfigureAuditing(configuration); ConfigureDataSeeder(); @@ -126,7 +110,6 @@ public partial class IdentityServerModule : AbpModule ConfigureJsonSerializer(configuration); ConfigureMvc(context.Services, configuration); ConfigureCors(context.Services, configuration); - ConfigureOpenTelemetry(context.Services, configuration); ConfigureDistributedLocking(context.Services, configuration); ConfigureSeedWorker(context.Services, hostingEnvironment.IsDevelopment()); ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment()); diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj index 80d242109..4076974cd 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj +++ b/aspnet-core/services/LY.MicroService.IdentityServer/LY.MicroService.IdentityServer.csproj @@ -1,4 +1,4 @@ - + @@ -18,7 +18,6 @@ - @@ -33,28 +32,14 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive --> - - - - - - - - - - - - - - @@ -65,29 +50,32 @@ - + + + - - + + + + + - - - - + + diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml deleted file mode 100644 index 7172ddd34..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.cshtml +++ /dev/null @@ -1,103 +0,0 @@ -@using Volo.Abp.Account.Localization -@using Volo.Abp.Users -@using Microsoft.AspNetCore.Mvc.Localization -@using Microsoft.Extensions.Localization -@using Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo -@using Volo.Abp.AspNetCore.Mvc.UI.Theming -@using Volo.Abp.Data -@using Volo.Abp.Identity.Settings -@using Volo.Abp.Localization -@using Volo.Abp.Settings -@using Volo.Abp.ObjectExtending -@inject IHtmlLocalizer L -@inject ICurrentUser CurrentUser -@inject ISettingProvider SettingManager -@inject IThemeManager ThemeManager -@inject IStringLocalizerFactory StringLocalizerFactory -@model Volo.Abp.Account.Web.Pages.Account.Components.ProfileManagementGroup.PersonalInfo.AccountProfilePersonalInfoManagementGroupViewComponent.PersonalInfoModel -@{ - var isUserNameUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); - - var isEmailUpdateEnabled = string.Equals(await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled), "true", - StringComparison.OrdinalIgnoreCase); -} - -

                @L["PersonalSettings"]


                - - - - - - - - - - - - - - - - - - - - - - @if (CurrentUser.EmailVerified) - { - - } - else - { - @L["Validation"].Value - } - - - - - - @foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) - { - var isAllowed = propertyInfo.Configuration.GetOrDefault(IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit); - - if (isAllowed == null || !isAllowed.Equals(true)) - { - continue; - } - - if (!propertyInfo.Name.EndsWith("_Text")) - { - if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty()) - { - if (propertyInfo.Type.IsEnum) - { - Model.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type); - } - - - } - else - { - - } - } - } - - - diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js deleted file mode 100644 index 55a88e52e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/Components/ProfileManagementGroup/PersonalInfo/Default.js +++ /dev/null @@ -1,28 +0,0 @@ -(function ($) { - $(function () { - var l = abp.localization.getResource("AbpAccount"); - - $('#PersonalSettingsForm').submit(function (e) { - e.preventDefault(); - - if (!$('#PersonalSettingsForm').valid()) { - return false; - } - - var input = $('#PersonalSettingsForm').serializeFormToObject(); - - volo.abp.account.profile.update(input).then(function (result) { - abp.notify.success(l('PersonalSettingsSaved')); - updateConcurrencyStamp(); - }); - }); - }); - - abp.event.on('passwordChanged', updateConcurrencyStamp); - - function updateConcurrencyStamp(){ - volo.abp.account.profile.get().then(function(profile){ - $("#ConcurrencyStamp").val(profile.concurrencyStamp); - }); - } -})(jQuery); diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml deleted file mode 100644 index 783ab7bb1..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml +++ /dev/null @@ -1,17 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.EmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
                -
                -

                @L["EmailConfirm"]

                -
                - - - @L["Cancel"] - @L["Submit"] - -
                -
                diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs deleted file mode 100644 index a971f0df8..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirm.cshtml.cs +++ /dev/null @@ -1,74 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class EmailConfirmModel : AccountPageModel - { - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public Guid UserId { get; set; } - - [Required] - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ConfirmToken { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public EmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.ConfirmEmailAsync( - new ConfirmEmailInput - { - ConfirmToken = ConfirmToken, - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("EmailConfirmConfirmation", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml deleted file mode 100644 index 39b14ef6b..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml +++ /dev/null @@ -1,13 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.Pages.Account.EmailConfirmConfirmationModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@inject IHtmlLocalizer L -
                -
                -

                @L["EmailConfirm"]

                -

                @L["YourEmailIsSuccessfullyConfirm"]

                - @L["GoToTheApplication"] -
                -
                diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs deleted file mode 100644 index 57084736e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/EmailConfirmConfirmation.cshtml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using System; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account; - -[AllowAnonymous] -public class EmailConfirmConfirmationModel : AccountPageModel -{ - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml deleted file mode 100644 index 96de45e7a..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.SendCodeModel -@inject IHtmlLocalizer L - -
                -
                -

                @L["TwoFactor"]

                -
                - - - -
                - -
                -
                - @L["SendVerifyCode"] -
                - - @L["Login"] - - -
                -
                - diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs deleted file mode 100644 index ed8c6efc4..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendCode.cshtml.cs +++ /dev/null @@ -1,128 +0,0 @@ -using LINGYUN.Abp.Account.Emailing; -using LINGYUN.Abp.Identity.Settings; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Rendering; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Sms; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class SendCodeModel : AccountPageModel - { - [BindProperty] - public SendCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public IEnumerable Providers { get; set; } - - protected ISmsSender SmsSender { get; } - - protected IAccountEmailVerifySender AccountEmailVerifySender { get; } - - public SendCodeModel( - ISmsSender smsSender, - IAccountEmailVerifySender accountEmailVerifySender) - { - SmsSender = smsSender; - AccountEmailVerifySender = accountEmailVerifySender; - - LocalizationResourceType = typeof(AccountResource); - } - - public async virtual Task OnGetAsync() - { - Input = new SendCodeInputModel(); - - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - // ˫Ϣ֤ʧ,һ㶼dzʱ˻ûϢ - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(user); - Providers = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - - if (Input.SelectedProvider == "Authenticator") - { - // ûͨʼ/ӽȨҳ - return RedirectToPage("VerifyAuthenticatorCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - // ֤ - var code = await UserManager.GenerateTwoFactorTokenAsync(user, Input.SelectedProvider); - if (string.IsNullOrWhiteSpace(code)) - { - Alerts.Warning(L["InvaidGenerateTwoFactorToken"]); - return Page(); - } - - if (Input.SelectedProvider == "Email") - { - await AccountEmailVerifySender - .SendMailLoginVerifyCodeAsync( - code, - user.UserName, - user.Email); - } - else if (Input.SelectedProvider == "Phone") - { - var phoneNumber = await UserManager.GetPhoneNumberAsync(user); - var templateCode = await SettingProvider.GetOrNullAsync(IdentitySettingNames.User.SmsUserSignin); - Check.NotNullOrWhiteSpace(templateCode, nameof(IdentitySettingNames.User.SmsUserSignin)); - - // TODO: Ժչģ巢 - var smsMessage = new SmsMessage(phoneNumber, code); - smsMessage.Properties.Add("code", code); - smsMessage.Properties.Add("TemplateCode", templateCode); - - await SmsSender.SendAsync(smsMessage); - } - - return RedirectToPage("VerifyCode", new - { - provider = Input.SelectedProvider, - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = RememberMe - }); - } - } - - public class SendCodeInputModel - { - public string SelectedProvider { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml deleted file mode 100644 index 7c4e9e79e..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml +++ /dev/null @@ -1,16 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.SendEmailConfirmModel -@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout -
                -
                -

                @L["EmailConfirm"]

                -
                - - @L["Cancel"] - - -
                -
                diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs deleted file mode 100644 index 8db8a73e9..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/SendEmailConfirm.cshtml.cs +++ /dev/null @@ -1,75 +0,0 @@ -using LINGYUN.Abp.Account; -using Microsoft.AspNetCore.Mvc; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.Identity; -using Volo.Abp.Validation; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class SendEmailConfirmModel : AccountPageModel - { - [BindProperty(SupportsGet = true)] - public string Email { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - public IMyProfileAppService MyProfileAppService { get; set; } - - public SendEmailConfirmModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual Task OnGetAsync() - { - Email = CurrentUser.Email; - - return Task.FromResult(Page()); - } - - public async virtual Task OnPostAsync() - { - try - { - ValidateModel(); - - await MyProfileAppService.SendEmailConfirmLinkAsync( - new SendEmailConfirmCodeDto - { - Email = Email, - AppName = "MVC", - ReturnUrl = ReturnUrl, - ReturnUrlHash = ReturnUrlHash - }); - } - catch (AbpIdentityResultException e) - { - if (!string.IsNullOrWhiteSpace(e.Message)) - { - Alerts.Warning(GetLocalizeExceptionMessage(e)); - return Page(); - } - - throw; - } - catch (AbpValidationException) - { - return Page(); - } - - return RedirectToPage("~/Account/Manage", new - { - returnUrl = ReturnUrl - }); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs deleted file mode 100644 index 006ebd069..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/TwoFactorSupportedLoginModel.cs +++ /dev/null @@ -1,68 +0,0 @@ -using IdentityServer4.Services; -using IdentityServer4.Stores; -using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using System.Collections.Generic; -using System.Threading.Tasks; -using Volo.Abp.Account.Web; -using Volo.Abp.Account.Web.Pages.Account; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Identity; -using IdentityOptions = Microsoft.AspNetCore.Identity.IdentityOptions; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - /// - /// 重写登录模型,实现双因素登录 - /// - [Dependency(ReplaceServices = true)] - [ExposeServices(typeof(LoginModel), typeof(IdentityServerSupportedLoginModel))] - public class TwoFactorSupportedLoginModel : IdentityServerSupportedLoginModel - { - public TwoFactorSupportedLoginModel( - IAuthenticationSchemeProvider schemeProvider, - IOptions accountOptions, - IOptions identityOptions, - IIdentityServerInteractionService interaction, - IdentityDynamicClaimsPrincipalContributorCache identityDynamicClaimsPrincipalContributorCache, - IClientStore clientStore, - IEventService identityServerEvents) - : base(schemeProvider, accountOptions, identityOptions, identityDynamicClaimsPrincipalContributorCache, interaction, clientStore, identityServerEvents) - { - - } - - protected async override Task> GetExternalProviders() - { - var providers = await base.GetExternalProviders(); - - foreach (var provider in providers) - { - var localizedDisplayName = L[provider.DisplayName]; - if (localizedDisplayName.ResourceNotFound) - { - localizedDisplayName = L["AuthenticationScheme:" + provider.DisplayName]; - } - - if (!localizedDisplayName.ResourceNotFound) - { - provider.DisplayName = localizedDisplayName.Value; - } - } - - return providers; - } - - protected override Task TwoFactorLoginResultAsync() - { - // 重定向双因素认证页面 - return Task.FromResult(RedirectToPage("SendCode", new - { - returnUrl = ReturnUrl, - returnUrlHash = ReturnUrlHash, - rememberMe = LoginInput.RememberMe - })); - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml deleted file mode 100644 index 479fd4aa2..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@page -@model LY.MicroService.IdentityServer.Pages.Account.UseRecoveryCodeModel -@{ -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs deleted file mode 100644 index 14ab35f03..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/UseRecoveryCode.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class UseRecoveryCodeModel : PageModel - { - public void OnGet() - { - } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml deleted file mode 100644 index 9a9b65122..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml +++ /dev/null @@ -1,26 +0,0 @@ -@page -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.VerifyAuthenticatorCodeModel -@inject IHtmlLocalizer L -
                -
                -
                - - -
                - - - -
                -
                - - -
                - @L["VerifyAuthenticatorCode"] - - @L["Login"] - - -
                -
                \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs deleted file mode 100644 index 659d676fd..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyAuthenticatorCode.cshtml.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class VerifyAuthenticatorCodeModel : AccountPageModel - { - [BindProperty] - public VerifyAuthenticatorCodeInputModel Input { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - - [BindProperty(SupportsGet = true)] - public bool RememberBrowser { get; set; } - - [HiddenInput] - public bool RememberMe { get; set; } - - public virtual IActionResult OnGet() - { - Input = new VerifyAuthenticatorCodeInputModel(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - var result = await SignInManager.TwoFactorAuthenticatorSignInAsync(Input.VerifyCode, RememberMe, RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyAuthenticatorCodeInputModel - { - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml deleted file mode 100644 index 3f3d1f91d..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml +++ /dev/null @@ -1,29 +0,0 @@ -@page -@inject IHtmlLocalizer L -@using Microsoft.AspNetCore.Mvc.Localization -@using Volo.Abp.Account.Localization -@model LY.MicroService.IdentityServer.Pages.Account.VerifyCodeModel -
                -
                -
                - - - - -
                - -
                - - - - - -
                - @L["VerifyAuthenticatorCode"] -
                - - @L["ReSendVerifyCode"] - - -
                -
                diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs deleted file mode 100644 index f11728bbf..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Account/VerifyCode.cshtml.cs +++ /dev/null @@ -1,92 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using System.ComponentModel.DataAnnotations; -using System.Threading.Tasks; -using Volo.Abp.Account.Localization; -using Volo.Abp.Account.Web.Pages.Account; - -namespace LY.MicroService.IdentityServer.Pages.Account -{ - public class VerifyCodeModel : AccountPageModel - { - [BindProperty] - public VerifyCodeInputModel Input { get; set; } - /// - /// ˫֤ṩ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string Provider { get; set; } - /// - /// ضUrl - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrl { get; set; } - /// - /// - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ReturnUrlHash { get; set; } - /// - /// Ƿס¼״̬ - /// - [HiddenInput] - [BindProperty(SupportsGet = true)] - public bool RememberMe { get; set; } - - public VerifyCodeModel() - { - LocalizationResourceType = typeof(AccountResource); - } - - public virtual IActionResult OnGet() - { - Input = new VerifyCodeInputModel(); - - return Page(); - } - - public async virtual Task OnPostAsync() - { - // ֤û¼״̬ - var user = await SignInManager.GetTwoFactorAuthenticationUserAsync(); - if (user == null) - { - Alerts.Warning(L["TwoFactorAuthenticationInvaidUser"]); - return Page(); - } - // ˫ص¼ - var result = await SignInManager.TwoFactorSignInAsync(Provider, Input.VerifyCode, RememberMe, Input.RememberBrowser); - if (result.Succeeded) - { - return await RedirectSafelyAsync(ReturnUrl, ReturnUrlHash); - } - if (result.IsLockedOut) - { - Logger.LogWarning(7, "User account locked out."); - Alerts.Warning(L["UserLockedOutMessage"]); - return Page(); - } - else - { - Alerts.Danger(L["TwoFactorAuthenticationInvaidUser"]);// TODO: ״̬Ľ - return Page(); - } - } - } - - public class VerifyCodeInputModel - { - /// - /// Ƿмס¼״̬ - /// - public bool RememberBrowser { get; set; } - /// - /// ͵֤ - /// - [Required] - public string VerifyCode { get; set; } - } -} diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs index 63dfb2273..111c7c4c9 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/Index.cshtml.cs @@ -1,11 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; -namespace LY.MicroService.IdentityServer.Pages +namespace LY.MicroService.IdentityServer.Pages; + +public class IndexModel : AbpPageModel { - public class IndexModel : AbpPageModel + public void OnGet() { - public void OnGet() - { - } } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml index 33a021db4..c1da1f5f1 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml +++ b/aspnet-core/services/LY.MicroService.IdentityServer/Pages/_ViewImports.cshtml @@ -1,5 +1,4 @@ -@using Microsoft.Extensions.Configuration -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap @addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json index 4e7fbafda..3233664d0 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.Development.json @@ -6,7 +6,8 @@ "secret": "1q2w3E*", "nodes": "http://127.0.0.1:5000", "name": "AuthServer", - "tag": "AuthServer" + "tag": "AuthServer", + "configCacheEncrypt": true }, "App": { "CorsOrigins": "http://127.0.0.1:3100", @@ -44,16 +45,10 @@ } }, "ConnectionStrings": { - "Default": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentity": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpIdentityServer": "Server=127.0.0.1;Database=IdentityServer-v70;User Id=root;Password=123456;SslMode=None", - "AbpSaas": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpSettingManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpPermissionManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpFeatureManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpLocalizationManagement": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AbpTextTemplating": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", - "AppPlatform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None" + "Default": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Platform": "Server=127.0.0.1;Database=Platform-v70;User Id=root;Password=123456;SslMode=None", + "Identity": "Server=127.0.0.1;Database=IdentityServer-V70;User Id=root;Password=123456;SslMode=None", + "Realtime": "Server=127.0.0.1;Database=Messages-V70;User Id=root;Password=123456;SslMode=None" }, "CAP": { "EventBus": { @@ -86,6 +81,12 @@ "Configuration": "127.0.0.1,defaultDatabase=10", "InstanceName": "LINGYUN.Abp.Application" }, + "RemoteServices": { + "Platform": { + "BaseUrl": "http://127.0.0.1:30025", + "UseCurrentAccessToken": false + } + }, "AuthServer": { "Authority": "http://127.0.0.1:44385/", "Audience": "lingyun-abp-application", @@ -132,11 +133,11 @@ }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { - "System": "Debug", - "Microsoft": "Debug", - "DotNetCore": "Debug" + "System": "Warning", + "Microsoft": "Warning", + "DotNetCore": "Information" } }, "WriteTo": [ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json index 4c8758024..3714aa99a 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/appsettings.json @@ -11,15 +11,17 @@ "DefaultSalt": "sf&5)s3#" }, "Json": { - "OutputDateTimeFormat": "yyyy-MM-dd HH:mm:ss", "InputDateTimeFormats": [ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-ddTHH:mm:ss" ] }, + "SkyWalking": { + "Enable": false + }, "Serilog": { "MinimumLevel": { - "Default": "Debug", + "Default": "Information", "Override": { "System": "Warning", "Microsoft": "Warning", diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js b/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js deleted file mode 100644 index 8ff19f245..000000000 --- a/aspnet-core/services/LY.MicroService.IdentityServer/gulpfile.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; - -var gulp = require("gulp"), - path = require('path'), - copyResources = require('./node_modules/@abp/aspnetcore.mvc.ui/gulp/copy-resources.js'); - -exports.default = function(done){ - copyResources(path.resolve('./')) - done(); -}; \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/package.json b/aspnet-core/services/LY.MicroService.IdentityServer/package.json index b5eab08c6..0703f2037 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/package.json +++ b/aspnet-core/services/LY.MicroService.IdentityServer/package.json @@ -3,6 +3,7 @@ "name": "my-app-identityserver", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4" + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.0.4", + "@abp/qrcode": "~9.0.4" } } \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css index 7e4dfe1e8..ffdf0f023 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/all.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ @@ -7,15 +7,13 @@ font-family: var(--fa-style-family, "Font Awesome 6 Free"); font-weight: var(--fa-style, 900); } -.fa, -.fa-classic, -.fa-sharp, .fas, -.fa-solid, .far, -.fa-regular, .fab, -.fa-brands { +.fa-solid, +.fa-regular, +.fa-brands, +.fa { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: var(--fa-display, inline-block); @@ -24,15 +22,24 @@ line-height: 1; text-rendering: auto; } -.fas, +.fas::before, +.far::before, +.fab::before, +.fa-solid::before, +.fa-regular::before, +.fa-brands::before, +.fa::before { + content: var(--fa); } + .fa-classic, +.fas, .fa-solid, .far, .fa-regular { font-family: 'Font Awesome 6 Free'; } -.fab, -.fa-brands { +.fa-brands, +.fab { font-family: 'Font Awesome 6 Brands'; } .fa-1x { @@ -107,7 +114,7 @@ position: relative; } .fa-li { - left: calc(var(--fa-li-width, 2em) * -1); + left: calc(-1 * var(--fa-li-width, 2em)); position: absolute; text-align: center; width: var(--fa-li-width, 2em); @@ -129,118 +136,71 @@ margin-left: var(--fa-pull-margin, 0.3em); } .fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } .fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin-reverse { --fa-animation-direction: reverse; } .fa-pulse, .fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); } + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); } @media (prefers-reduced-motion: reduce) { .fa-beat, @@ -252,219 +212,97 @@ .fa-shake, .fa-spin, .fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; } } - -@-webkit-keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } @keyframes fa-beat { 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } + transform: scale(var(--fa-beat-scale, 1.25)); } } @keyframes fa-bounce { 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } - -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } + transform: scale(1, 1) translateY(0); } } @keyframes fa-fade { 50% { opacity: var(--fa-fade-opacity, 0.4); } } -@-webkit-keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - @keyframes fa-beat-fade { 0%, 100% { opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 50% { opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } @keyframes fa-flip { 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } @keyframes fa-shake { 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } + transform: rotate(-15deg); } 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } + transform: rotate(15deg); } 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } + transform: rotate(-18deg); } 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } + transform: rotate(18deg); } 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } + transform: rotate(-22deg); } 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } + transform: rotate(22deg); } 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } + transform: rotate(-12deg); } 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } + transform: rotate(12deg); } 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(0deg); } } @keyframes fa-spin { 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); } 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(360deg); } } .fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } + transform: rotate(90deg); } .fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } + transform: rotate(180deg); } .fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); } + transform: rotate(270deg); } .fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); } + transform: scale(-1, 1); } .fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); } + transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); } + transform: scale(-1, -1); } .fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, 0)); - transform: rotate(var(--fa-rotate-angle, 0)); } + transform: rotate(var(--fa-rotate-angle, 0)); } .fa-stack { display: inline-block; @@ -494,5861 +332,5891 @@ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ -.fa-0::before { - content: "\30"; } +.fa-0 { + --fa: "\30"; } -.fa-1::before { - content: "\31"; } +.fa-1 { + --fa: "\31"; } -.fa-2::before { - content: "\32"; } +.fa-2 { + --fa: "\32"; } -.fa-3::before { - content: "\33"; } +.fa-3 { + --fa: "\33"; } -.fa-4::before { - content: "\34"; } +.fa-4 { + --fa: "\34"; } -.fa-5::before { - content: "\35"; } +.fa-5 { + --fa: "\35"; } -.fa-6::before { - content: "\36"; } +.fa-6 { + --fa: "\36"; } -.fa-7::before { - content: "\37"; } +.fa-7 { + --fa: "\37"; } -.fa-8::before { - content: "\38"; } +.fa-8 { + --fa: "\38"; } -.fa-9::before { - content: "\39"; } +.fa-9 { + --fa: "\39"; } -.fa-fill-drip::before { - content: "\f576"; } +.fa-fill-drip { + --fa: "\f576"; } -.fa-arrows-to-circle::before { - content: "\e4bd"; } +.fa-arrows-to-circle { + --fa: "\e4bd"; } -.fa-circle-chevron-right::before { - content: "\f138"; } +.fa-circle-chevron-right { + --fa: "\f138"; } -.fa-chevron-circle-right::before { - content: "\f138"; } +.fa-chevron-circle-right { + --fa: "\f138"; } -.fa-at::before { - content: "\40"; } +.fa-at { + --fa: "\40"; } -.fa-trash-can::before { - content: "\f2ed"; } +.fa-trash-can { + --fa: "\f2ed"; } -.fa-trash-alt::before { - content: "\f2ed"; } +.fa-trash-alt { + --fa: "\f2ed"; } -.fa-text-height::before { - content: "\f034"; } +.fa-text-height { + --fa: "\f034"; } -.fa-user-xmark::before { - content: "\f235"; } +.fa-user-xmark { + --fa: "\f235"; } -.fa-user-times::before { - content: "\f235"; } +.fa-user-times { + --fa: "\f235"; } -.fa-stethoscope::before { - content: "\f0f1"; } +.fa-stethoscope { + --fa: "\f0f1"; } -.fa-message::before { - content: "\f27a"; } +.fa-message { + --fa: "\f27a"; } -.fa-comment-alt::before { - content: "\f27a"; } +.fa-comment-alt { + --fa: "\f27a"; } -.fa-info::before { - content: "\f129"; } +.fa-info { + --fa: "\f129"; } -.fa-down-left-and-up-right-to-center::before { - content: "\f422"; } +.fa-down-left-and-up-right-to-center { + --fa: "\f422"; } -.fa-compress-alt::before { - content: "\f422"; } +.fa-compress-alt { + --fa: "\f422"; } -.fa-explosion::before { - content: "\e4e9"; } +.fa-explosion { + --fa: "\e4e9"; } -.fa-file-lines::before { - content: "\f15c"; } +.fa-file-lines { + --fa: "\f15c"; } -.fa-file-alt::before { - content: "\f15c"; } +.fa-file-alt { + --fa: "\f15c"; } -.fa-file-text::before { - content: "\f15c"; } +.fa-file-text { + --fa: "\f15c"; } -.fa-wave-square::before { - content: "\f83e"; } +.fa-wave-square { + --fa: "\f83e"; } -.fa-ring::before { - content: "\f70b"; } +.fa-ring { + --fa: "\f70b"; } -.fa-building-un::before { - content: "\e4d9"; } +.fa-building-un { + --fa: "\e4d9"; } -.fa-dice-three::before { - content: "\f527"; } +.fa-dice-three { + --fa: "\f527"; } -.fa-calendar-days::before { - content: "\f073"; } +.fa-calendar-days { + --fa: "\f073"; } -.fa-calendar-alt::before { - content: "\f073"; } +.fa-calendar-alt { + --fa: "\f073"; } -.fa-anchor-circle-check::before { - content: "\e4aa"; } +.fa-anchor-circle-check { + --fa: "\e4aa"; } -.fa-building-circle-arrow-right::before { - content: "\e4d1"; } +.fa-building-circle-arrow-right { + --fa: "\e4d1"; } -.fa-volleyball::before { - content: "\f45f"; } +.fa-volleyball { + --fa: "\f45f"; } -.fa-volleyball-ball::before { - content: "\f45f"; } +.fa-volleyball-ball { + --fa: "\f45f"; } -.fa-arrows-up-to-line::before { - content: "\e4c2"; } +.fa-arrows-up-to-line { + --fa: "\e4c2"; } -.fa-sort-down::before { - content: "\f0dd"; } +.fa-sort-down { + --fa: "\f0dd"; } -.fa-sort-desc::before { - content: "\f0dd"; } +.fa-sort-desc { + --fa: "\f0dd"; } -.fa-circle-minus::before { - content: "\f056"; } +.fa-circle-minus { + --fa: "\f056"; } -.fa-minus-circle::before { - content: "\f056"; } +.fa-minus-circle { + --fa: "\f056"; } -.fa-door-open::before { - content: "\f52b"; } +.fa-door-open { + --fa: "\f52b"; } -.fa-right-from-bracket::before { - content: "\f2f5"; } +.fa-right-from-bracket { + --fa: "\f2f5"; } -.fa-sign-out-alt::before { - content: "\f2f5"; } +.fa-sign-out-alt { + --fa: "\f2f5"; } -.fa-atom::before { - content: "\f5d2"; } +.fa-atom { + --fa: "\f5d2"; } -.fa-soap::before { - content: "\e06e"; } +.fa-soap { + --fa: "\e06e"; } -.fa-icons::before { - content: "\f86d"; } +.fa-icons { + --fa: "\f86d"; } -.fa-heart-music-camera-bolt::before { - content: "\f86d"; } +.fa-heart-music-camera-bolt { + --fa: "\f86d"; } -.fa-microphone-lines-slash::before { - content: "\f539"; } +.fa-microphone-lines-slash { + --fa: "\f539"; } -.fa-microphone-alt-slash::before { - content: "\f539"; } +.fa-microphone-alt-slash { + --fa: "\f539"; } -.fa-bridge-circle-check::before { - content: "\e4c9"; } +.fa-bridge-circle-check { + --fa: "\e4c9"; } -.fa-pump-medical::before { - content: "\e06a"; } +.fa-pump-medical { + --fa: "\e06a"; } -.fa-fingerprint::before { - content: "\f577"; } +.fa-fingerprint { + --fa: "\f577"; } -.fa-hand-point-right::before { - content: "\f0a4"; } +.fa-hand-point-right { + --fa: "\f0a4"; } -.fa-magnifying-glass-location::before { - content: "\f689"; } +.fa-magnifying-glass-location { + --fa: "\f689"; } -.fa-search-location::before { - content: "\f689"; } +.fa-search-location { + --fa: "\f689"; } -.fa-forward-step::before { - content: "\f051"; } +.fa-forward-step { + --fa: "\f051"; } -.fa-step-forward::before { - content: "\f051"; } +.fa-step-forward { + --fa: "\f051"; } -.fa-face-smile-beam::before { - content: "\f5b8"; } +.fa-face-smile-beam { + --fa: "\f5b8"; } -.fa-smile-beam::before { - content: "\f5b8"; } +.fa-smile-beam { + --fa: "\f5b8"; } -.fa-flag-checkered::before { - content: "\f11e"; } +.fa-flag-checkered { + --fa: "\f11e"; } -.fa-football::before { - content: "\f44e"; } +.fa-football { + --fa: "\f44e"; } -.fa-football-ball::before { - content: "\f44e"; } +.fa-football-ball { + --fa: "\f44e"; } -.fa-school-circle-exclamation::before { - content: "\e56c"; } +.fa-school-circle-exclamation { + --fa: "\e56c"; } -.fa-crop::before { - content: "\f125"; } +.fa-crop { + --fa: "\f125"; } -.fa-angles-down::before { - content: "\f103"; } +.fa-angles-down { + --fa: "\f103"; } -.fa-angle-double-down::before { - content: "\f103"; } +.fa-angle-double-down { + --fa: "\f103"; } -.fa-users-rectangle::before { - content: "\e594"; } +.fa-users-rectangle { + --fa: "\e594"; } -.fa-people-roof::before { - content: "\e537"; } +.fa-people-roof { + --fa: "\e537"; } -.fa-people-line::before { - content: "\e534"; } +.fa-people-line { + --fa: "\e534"; } -.fa-beer-mug-empty::before { - content: "\f0fc"; } +.fa-beer-mug-empty { + --fa: "\f0fc"; } -.fa-beer::before { - content: "\f0fc"; } +.fa-beer { + --fa: "\f0fc"; } -.fa-diagram-predecessor::before { - content: "\e477"; } +.fa-diagram-predecessor { + --fa: "\e477"; } -.fa-arrow-up-long::before { - content: "\f176"; } +.fa-arrow-up-long { + --fa: "\f176"; } -.fa-long-arrow-up::before { - content: "\f176"; } +.fa-long-arrow-up { + --fa: "\f176"; } -.fa-fire-flame-simple::before { - content: "\f46a"; } +.fa-fire-flame-simple { + --fa: "\f46a"; } -.fa-burn::before { - content: "\f46a"; } +.fa-burn { + --fa: "\f46a"; } -.fa-person::before { - content: "\f183"; } +.fa-person { + --fa: "\f183"; } -.fa-male::before { - content: "\f183"; } +.fa-male { + --fa: "\f183"; } -.fa-laptop::before { - content: "\f109"; } +.fa-laptop { + --fa: "\f109"; } -.fa-file-csv::before { - content: "\f6dd"; } +.fa-file-csv { + --fa: "\f6dd"; } -.fa-menorah::before { - content: "\f676"; } +.fa-menorah { + --fa: "\f676"; } -.fa-truck-plane::before { - content: "\e58f"; } +.fa-truck-plane { + --fa: "\e58f"; } -.fa-record-vinyl::before { - content: "\f8d9"; } +.fa-record-vinyl { + --fa: "\f8d9"; } -.fa-face-grin-stars::before { - content: "\f587"; } +.fa-face-grin-stars { + --fa: "\f587"; } -.fa-grin-stars::before { - content: "\f587"; } +.fa-grin-stars { + --fa: "\f587"; } -.fa-bong::before { - content: "\f55c"; } +.fa-bong { + --fa: "\f55c"; } -.fa-spaghetti-monster-flying::before { - content: "\f67b"; } +.fa-spaghetti-monster-flying { + --fa: "\f67b"; } -.fa-pastafarianism::before { - content: "\f67b"; } +.fa-pastafarianism { + --fa: "\f67b"; } -.fa-arrow-down-up-across-line::before { - content: "\e4af"; } +.fa-arrow-down-up-across-line { + --fa: "\e4af"; } -.fa-spoon::before { - content: "\f2e5"; } +.fa-spoon { + --fa: "\f2e5"; } -.fa-utensil-spoon::before { - content: "\f2e5"; } +.fa-utensil-spoon { + --fa: "\f2e5"; } -.fa-jar-wheat::before { - content: "\e517"; } +.fa-jar-wheat { + --fa: "\e517"; } -.fa-envelopes-bulk::before { - content: "\f674"; } +.fa-envelopes-bulk { + --fa: "\f674"; } -.fa-mail-bulk::before { - content: "\f674"; } +.fa-mail-bulk { + --fa: "\f674"; } -.fa-file-circle-exclamation::before { - content: "\e4eb"; } +.fa-file-circle-exclamation { + --fa: "\e4eb"; } -.fa-circle-h::before { - content: "\f47e"; } +.fa-circle-h { + --fa: "\f47e"; } -.fa-hospital-symbol::before { - content: "\f47e"; } +.fa-hospital-symbol { + --fa: "\f47e"; } -.fa-pager::before { - content: "\f815"; } +.fa-pager { + --fa: "\f815"; } -.fa-address-book::before { - content: "\f2b9"; } +.fa-address-book { + --fa: "\f2b9"; } -.fa-contact-book::before { - content: "\f2b9"; } +.fa-contact-book { + --fa: "\f2b9"; } -.fa-strikethrough::before { - content: "\f0cc"; } +.fa-strikethrough { + --fa: "\f0cc"; } -.fa-k::before { - content: "\4b"; } +.fa-k { + --fa: "\4b"; } -.fa-landmark-flag::before { - content: "\e51c"; } +.fa-landmark-flag { + --fa: "\e51c"; } -.fa-pencil::before { - content: "\f303"; } +.fa-pencil { + --fa: "\f303"; } -.fa-pencil-alt::before { - content: "\f303"; } +.fa-pencil-alt { + --fa: "\f303"; } -.fa-backward::before { - content: "\f04a"; } +.fa-backward { + --fa: "\f04a"; } -.fa-caret-right::before { - content: "\f0da"; } +.fa-caret-right { + --fa: "\f0da"; } -.fa-comments::before { - content: "\f086"; } +.fa-comments { + --fa: "\f086"; } -.fa-paste::before { - content: "\f0ea"; } +.fa-paste { + --fa: "\f0ea"; } -.fa-file-clipboard::before { - content: "\f0ea"; } +.fa-file-clipboard { + --fa: "\f0ea"; } -.fa-code-pull-request::before { - content: "\e13c"; } +.fa-code-pull-request { + --fa: "\e13c"; } -.fa-clipboard-list::before { - content: "\f46d"; } +.fa-clipboard-list { + --fa: "\f46d"; } -.fa-truck-ramp-box::before { - content: "\f4de"; } +.fa-truck-ramp-box { + --fa: "\f4de"; } -.fa-truck-loading::before { - content: "\f4de"; } +.fa-truck-loading { + --fa: "\f4de"; } -.fa-user-check::before { - content: "\f4fc"; } +.fa-user-check { + --fa: "\f4fc"; } -.fa-vial-virus::before { - content: "\e597"; } +.fa-vial-virus { + --fa: "\e597"; } -.fa-sheet-plastic::before { - content: "\e571"; } +.fa-sheet-plastic { + --fa: "\e571"; } -.fa-blog::before { - content: "\f781"; } +.fa-blog { + --fa: "\f781"; } -.fa-user-ninja::before { - content: "\f504"; } +.fa-user-ninja { + --fa: "\f504"; } -.fa-person-arrow-up-from-line::before { - content: "\e539"; } +.fa-person-arrow-up-from-line { + --fa: "\e539"; } -.fa-scroll-torah::before { - content: "\f6a0"; } +.fa-scroll-torah { + --fa: "\f6a0"; } -.fa-torah::before { - content: "\f6a0"; } +.fa-torah { + --fa: "\f6a0"; } -.fa-broom-ball::before { - content: "\f458"; } +.fa-broom-ball { + --fa: "\f458"; } -.fa-quidditch::before { - content: "\f458"; } +.fa-quidditch { + --fa: "\f458"; } -.fa-quidditch-broom-ball::before { - content: "\f458"; } +.fa-quidditch-broom-ball { + --fa: "\f458"; } -.fa-toggle-off::before { - content: "\f204"; } +.fa-toggle-off { + --fa: "\f204"; } -.fa-box-archive::before { - content: "\f187"; } +.fa-box-archive { + --fa: "\f187"; } -.fa-archive::before { - content: "\f187"; } +.fa-archive { + --fa: "\f187"; } -.fa-person-drowning::before { - content: "\e545"; } +.fa-person-drowning { + --fa: "\e545"; } -.fa-arrow-down-9-1::before { - content: "\f886"; } +.fa-arrow-down-9-1 { + --fa: "\f886"; } -.fa-sort-numeric-desc::before { - content: "\f886"; } +.fa-sort-numeric-desc { + --fa: "\f886"; } -.fa-sort-numeric-down-alt::before { - content: "\f886"; } +.fa-sort-numeric-down-alt { + --fa: "\f886"; } -.fa-face-grin-tongue-squint::before { - content: "\f58a"; } +.fa-face-grin-tongue-squint { + --fa: "\f58a"; } -.fa-grin-tongue-squint::before { - content: "\f58a"; } +.fa-grin-tongue-squint { + --fa: "\f58a"; } -.fa-spray-can::before { - content: "\f5bd"; } +.fa-spray-can { + --fa: "\f5bd"; } -.fa-truck-monster::before { - content: "\f63b"; } +.fa-truck-monster { + --fa: "\f63b"; } -.fa-w::before { - content: "\57"; } +.fa-w { + --fa: "\57"; } -.fa-earth-africa::before { - content: "\f57c"; } +.fa-earth-africa { + --fa: "\f57c"; } -.fa-globe-africa::before { - content: "\f57c"; } +.fa-globe-africa { + --fa: "\f57c"; } -.fa-rainbow::before { - content: "\f75b"; } +.fa-rainbow { + --fa: "\f75b"; } -.fa-circle-notch::before { - content: "\f1ce"; } +.fa-circle-notch { + --fa: "\f1ce"; } -.fa-tablet-screen-button::before { - content: "\f3fa"; } +.fa-tablet-screen-button { + --fa: "\f3fa"; } -.fa-tablet-alt::before { - content: "\f3fa"; } +.fa-tablet-alt { + --fa: "\f3fa"; } -.fa-paw::before { - content: "\f1b0"; } +.fa-paw { + --fa: "\f1b0"; } -.fa-cloud::before { - content: "\f0c2"; } +.fa-cloud { + --fa: "\f0c2"; } -.fa-trowel-bricks::before { - content: "\e58a"; } +.fa-trowel-bricks { + --fa: "\e58a"; } -.fa-face-flushed::before { - content: "\f579"; } +.fa-face-flushed { + --fa: "\f579"; } -.fa-flushed::before { - content: "\f579"; } +.fa-flushed { + --fa: "\f579"; } -.fa-hospital-user::before { - content: "\f80d"; } +.fa-hospital-user { + --fa: "\f80d"; } -.fa-tent-arrow-left-right::before { - content: "\e57f"; } +.fa-tent-arrow-left-right { + --fa: "\e57f"; } -.fa-gavel::before { - content: "\f0e3"; } +.fa-gavel { + --fa: "\f0e3"; } -.fa-legal::before { - content: "\f0e3"; } +.fa-legal { + --fa: "\f0e3"; } -.fa-binoculars::before { - content: "\f1e5"; } +.fa-binoculars { + --fa: "\f1e5"; } -.fa-microphone-slash::before { - content: "\f131"; } +.fa-microphone-slash { + --fa: "\f131"; } -.fa-box-tissue::before { - content: "\e05b"; } +.fa-box-tissue { + --fa: "\e05b"; } -.fa-motorcycle::before { - content: "\f21c"; } +.fa-motorcycle { + --fa: "\f21c"; } -.fa-bell-concierge::before { - content: "\f562"; } +.fa-bell-concierge { + --fa: "\f562"; } -.fa-concierge-bell::before { - content: "\f562"; } +.fa-concierge-bell { + --fa: "\f562"; } -.fa-pen-ruler::before { - content: "\f5ae"; } +.fa-pen-ruler { + --fa: "\f5ae"; } -.fa-pencil-ruler::before { - content: "\f5ae"; } +.fa-pencil-ruler { + --fa: "\f5ae"; } -.fa-people-arrows::before { - content: "\e068"; } +.fa-people-arrows { + --fa: "\e068"; } -.fa-people-arrows-left-right::before { - content: "\e068"; } +.fa-people-arrows-left-right { + --fa: "\e068"; } -.fa-mars-and-venus-burst::before { - content: "\e523"; } +.fa-mars-and-venus-burst { + --fa: "\e523"; } -.fa-square-caret-right::before { - content: "\f152"; } +.fa-square-caret-right { + --fa: "\f152"; } -.fa-caret-square-right::before { - content: "\f152"; } +.fa-caret-square-right { + --fa: "\f152"; } -.fa-scissors::before { - content: "\f0c4"; } +.fa-scissors { + --fa: "\f0c4"; } -.fa-cut::before { - content: "\f0c4"; } +.fa-cut { + --fa: "\f0c4"; } -.fa-sun-plant-wilt::before { - content: "\e57a"; } +.fa-sun-plant-wilt { + --fa: "\e57a"; } -.fa-toilets-portable::before { - content: "\e584"; } +.fa-toilets-portable { + --fa: "\e584"; } -.fa-hockey-puck::before { - content: "\f453"; } +.fa-hockey-puck { + --fa: "\f453"; } -.fa-table::before { - content: "\f0ce"; } +.fa-table { + --fa: "\f0ce"; } -.fa-magnifying-glass-arrow-right::before { - content: "\e521"; } +.fa-magnifying-glass-arrow-right { + --fa: "\e521"; } -.fa-tachograph-digital::before { - content: "\f566"; } +.fa-tachograph-digital { + --fa: "\f566"; } -.fa-digital-tachograph::before { - content: "\f566"; } +.fa-digital-tachograph { + --fa: "\f566"; } -.fa-users-slash::before { - content: "\e073"; } +.fa-users-slash { + --fa: "\e073"; } -.fa-clover::before { - content: "\e139"; } +.fa-clover { + --fa: "\e139"; } -.fa-reply::before { - content: "\f3e5"; } +.fa-reply { + --fa: "\f3e5"; } -.fa-mail-reply::before { - content: "\f3e5"; } +.fa-mail-reply { + --fa: "\f3e5"; } -.fa-star-and-crescent::before { - content: "\f699"; } +.fa-star-and-crescent { + --fa: "\f699"; } -.fa-house-fire::before { - content: "\e50c"; } +.fa-house-fire { + --fa: "\e50c"; } -.fa-square-minus::before { - content: "\f146"; } +.fa-square-minus { + --fa: "\f146"; } -.fa-minus-square::before { - content: "\f146"; } +.fa-minus-square { + --fa: "\f146"; } -.fa-helicopter::before { - content: "\f533"; } +.fa-helicopter { + --fa: "\f533"; } -.fa-compass::before { - content: "\f14e"; } +.fa-compass { + --fa: "\f14e"; } -.fa-square-caret-down::before { - content: "\f150"; } +.fa-square-caret-down { + --fa: "\f150"; } -.fa-caret-square-down::before { - content: "\f150"; } +.fa-caret-square-down { + --fa: "\f150"; } -.fa-file-circle-question::before { - content: "\e4ef"; } +.fa-file-circle-question { + --fa: "\e4ef"; } -.fa-laptop-code::before { - content: "\f5fc"; } +.fa-laptop-code { + --fa: "\f5fc"; } -.fa-swatchbook::before { - content: "\f5c3"; } +.fa-swatchbook { + --fa: "\f5c3"; } -.fa-prescription-bottle::before { - content: "\f485"; } +.fa-prescription-bottle { + --fa: "\f485"; } -.fa-bars::before { - content: "\f0c9"; } +.fa-bars { + --fa: "\f0c9"; } -.fa-navicon::before { - content: "\f0c9"; } +.fa-navicon { + --fa: "\f0c9"; } -.fa-people-group::before { - content: "\e533"; } +.fa-people-group { + --fa: "\e533"; } -.fa-hourglass-end::before { - content: "\f253"; } +.fa-hourglass-end { + --fa: "\f253"; } -.fa-hourglass-3::before { - content: "\f253"; } +.fa-hourglass-3 { + --fa: "\f253"; } -.fa-heart-crack::before { - content: "\f7a9"; } +.fa-heart-crack { + --fa: "\f7a9"; } -.fa-heart-broken::before { - content: "\f7a9"; } +.fa-heart-broken { + --fa: "\f7a9"; } -.fa-square-up-right::before { - content: "\f360"; } +.fa-square-up-right { + --fa: "\f360"; } -.fa-external-link-square-alt::before { - content: "\f360"; } +.fa-external-link-square-alt { + --fa: "\f360"; } -.fa-face-kiss-beam::before { - content: "\f597"; } +.fa-face-kiss-beam { + --fa: "\f597"; } -.fa-kiss-beam::before { - content: "\f597"; } +.fa-kiss-beam { + --fa: "\f597"; } -.fa-film::before { - content: "\f008"; } +.fa-film { + --fa: "\f008"; } -.fa-ruler-horizontal::before { - content: "\f547"; } +.fa-ruler-horizontal { + --fa: "\f547"; } -.fa-people-robbery::before { - content: "\e536"; } +.fa-people-robbery { + --fa: "\e536"; } -.fa-lightbulb::before { - content: "\f0eb"; } +.fa-lightbulb { + --fa: "\f0eb"; } -.fa-caret-left::before { - content: "\f0d9"; } +.fa-caret-left { + --fa: "\f0d9"; } -.fa-circle-exclamation::before { - content: "\f06a"; } +.fa-circle-exclamation { + --fa: "\f06a"; } -.fa-exclamation-circle::before { - content: "\f06a"; } +.fa-exclamation-circle { + --fa: "\f06a"; } -.fa-school-circle-xmark::before { - content: "\e56d"; } +.fa-school-circle-xmark { + --fa: "\e56d"; } -.fa-arrow-right-from-bracket::before { - content: "\f08b"; } +.fa-arrow-right-from-bracket { + --fa: "\f08b"; } -.fa-sign-out::before { - content: "\f08b"; } +.fa-sign-out { + --fa: "\f08b"; } -.fa-circle-chevron-down::before { - content: "\f13a"; } +.fa-circle-chevron-down { + --fa: "\f13a"; } -.fa-chevron-circle-down::before { - content: "\f13a"; } +.fa-chevron-circle-down { + --fa: "\f13a"; } -.fa-unlock-keyhole::before { - content: "\f13e"; } +.fa-unlock-keyhole { + --fa: "\f13e"; } -.fa-unlock-alt::before { - content: "\f13e"; } +.fa-unlock-alt { + --fa: "\f13e"; } -.fa-cloud-showers-heavy::before { - content: "\f740"; } +.fa-cloud-showers-heavy { + --fa: "\f740"; } -.fa-headphones-simple::before { - content: "\f58f"; } +.fa-headphones-simple { + --fa: "\f58f"; } -.fa-headphones-alt::before { - content: "\f58f"; } +.fa-headphones-alt { + --fa: "\f58f"; } -.fa-sitemap::before { - content: "\f0e8"; } +.fa-sitemap { + --fa: "\f0e8"; } -.fa-circle-dollar-to-slot::before { - content: "\f4b9"; } +.fa-circle-dollar-to-slot { + --fa: "\f4b9"; } -.fa-donate::before { - content: "\f4b9"; } +.fa-donate { + --fa: "\f4b9"; } -.fa-memory::before { - content: "\f538"; } +.fa-memory { + --fa: "\f538"; } -.fa-road-spikes::before { - content: "\e568"; } +.fa-road-spikes { + --fa: "\e568"; } -.fa-fire-burner::before { - content: "\e4f1"; } +.fa-fire-burner { + --fa: "\e4f1"; } -.fa-flag::before { - content: "\f024"; } +.fa-flag { + --fa: "\f024"; } -.fa-hanukiah::before { - content: "\f6e6"; } +.fa-hanukiah { + --fa: "\f6e6"; } -.fa-feather::before { - content: "\f52d"; } +.fa-feather { + --fa: "\f52d"; } -.fa-volume-low::before { - content: "\f027"; } +.fa-volume-low { + --fa: "\f027"; } -.fa-volume-down::before { - content: "\f027"; } +.fa-volume-down { + --fa: "\f027"; } -.fa-comment-slash::before { - content: "\f4b3"; } +.fa-comment-slash { + --fa: "\f4b3"; } -.fa-cloud-sun-rain::before { - content: "\f743"; } +.fa-cloud-sun-rain { + --fa: "\f743"; } -.fa-compress::before { - content: "\f066"; } +.fa-compress { + --fa: "\f066"; } -.fa-wheat-awn::before { - content: "\e2cd"; } +.fa-wheat-awn { + --fa: "\e2cd"; } -.fa-wheat-alt::before { - content: "\e2cd"; } +.fa-wheat-alt { + --fa: "\e2cd"; } -.fa-ankh::before { - content: "\f644"; } +.fa-ankh { + --fa: "\f644"; } -.fa-hands-holding-child::before { - content: "\e4fa"; } +.fa-hands-holding-child { + --fa: "\e4fa"; } -.fa-asterisk::before { - content: "\2a"; } +.fa-asterisk { + --fa: "\2a"; } -.fa-square-check::before { - content: "\f14a"; } +.fa-square-check { + --fa: "\f14a"; } -.fa-check-square::before { - content: "\f14a"; } +.fa-check-square { + --fa: "\f14a"; } -.fa-peseta-sign::before { - content: "\e221"; } +.fa-peseta-sign { + --fa: "\e221"; } -.fa-heading::before { - content: "\f1dc"; } +.fa-heading { + --fa: "\f1dc"; } -.fa-header::before { - content: "\f1dc"; } +.fa-header { + --fa: "\f1dc"; } -.fa-ghost::before { - content: "\f6e2"; } +.fa-ghost { + --fa: "\f6e2"; } -.fa-list::before { - content: "\f03a"; } +.fa-list { + --fa: "\f03a"; } -.fa-list-squares::before { - content: "\f03a"; } +.fa-list-squares { + --fa: "\f03a"; } -.fa-square-phone-flip::before { - content: "\f87b"; } +.fa-square-phone-flip { + --fa: "\f87b"; } -.fa-phone-square-alt::before { - content: "\f87b"; } +.fa-phone-square-alt { + --fa: "\f87b"; } -.fa-cart-plus::before { - content: "\f217"; } +.fa-cart-plus { + --fa: "\f217"; } -.fa-gamepad::before { - content: "\f11b"; } +.fa-gamepad { + --fa: "\f11b"; } -.fa-circle-dot::before { - content: "\f192"; } +.fa-circle-dot { + --fa: "\f192"; } -.fa-dot-circle::before { - content: "\f192"; } +.fa-dot-circle { + --fa: "\f192"; } -.fa-face-dizzy::before { - content: "\f567"; } +.fa-face-dizzy { + --fa: "\f567"; } -.fa-dizzy::before { - content: "\f567"; } +.fa-dizzy { + --fa: "\f567"; } -.fa-egg::before { - content: "\f7fb"; } +.fa-egg { + --fa: "\f7fb"; } -.fa-house-medical-circle-xmark::before { - content: "\e513"; } +.fa-house-medical-circle-xmark { + --fa: "\e513"; } -.fa-campground::before { - content: "\f6bb"; } +.fa-campground { + --fa: "\f6bb"; } -.fa-folder-plus::before { - content: "\f65e"; } +.fa-folder-plus { + --fa: "\f65e"; } -.fa-futbol::before { - content: "\f1e3"; } +.fa-futbol { + --fa: "\f1e3"; } -.fa-futbol-ball::before { - content: "\f1e3"; } +.fa-futbol-ball { + --fa: "\f1e3"; } -.fa-soccer-ball::before { - content: "\f1e3"; } +.fa-soccer-ball { + --fa: "\f1e3"; } -.fa-paintbrush::before { - content: "\f1fc"; } +.fa-paintbrush { + --fa: "\f1fc"; } -.fa-paint-brush::before { - content: "\f1fc"; } +.fa-paint-brush { + --fa: "\f1fc"; } -.fa-lock::before { - content: "\f023"; } +.fa-lock { + --fa: "\f023"; } -.fa-gas-pump::before { - content: "\f52f"; } +.fa-gas-pump { + --fa: "\f52f"; } -.fa-hot-tub-person::before { - content: "\f593"; } +.fa-hot-tub-person { + --fa: "\f593"; } -.fa-hot-tub::before { - content: "\f593"; } +.fa-hot-tub { + --fa: "\f593"; } -.fa-map-location::before { - content: "\f59f"; } +.fa-map-location { + --fa: "\f59f"; } -.fa-map-marked::before { - content: "\f59f"; } +.fa-map-marked { + --fa: "\f59f"; } -.fa-house-flood-water::before { - content: "\e50e"; } +.fa-house-flood-water { + --fa: "\e50e"; } -.fa-tree::before { - content: "\f1bb"; } +.fa-tree { + --fa: "\f1bb"; } -.fa-bridge-lock::before { - content: "\e4cc"; } +.fa-bridge-lock { + --fa: "\e4cc"; } -.fa-sack-dollar::before { - content: "\f81d"; } +.fa-sack-dollar { + --fa: "\f81d"; } -.fa-pen-to-square::before { - content: "\f044"; } +.fa-pen-to-square { + --fa: "\f044"; } -.fa-edit::before { - content: "\f044"; } +.fa-edit { + --fa: "\f044"; } -.fa-car-side::before { - content: "\f5e4"; } +.fa-car-side { + --fa: "\f5e4"; } -.fa-share-nodes::before { - content: "\f1e0"; } +.fa-share-nodes { + --fa: "\f1e0"; } -.fa-share-alt::before { - content: "\f1e0"; } +.fa-share-alt { + --fa: "\f1e0"; } -.fa-heart-circle-minus::before { - content: "\e4ff"; } +.fa-heart-circle-minus { + --fa: "\e4ff"; } -.fa-hourglass-half::before { - content: "\f252"; } +.fa-hourglass-half { + --fa: "\f252"; } -.fa-hourglass-2::before { - content: "\f252"; } +.fa-hourglass-2 { + --fa: "\f252"; } -.fa-microscope::before { - content: "\f610"; } +.fa-microscope { + --fa: "\f610"; } -.fa-sink::before { - content: "\e06d"; } +.fa-sink { + --fa: "\e06d"; } -.fa-bag-shopping::before { - content: "\f290"; } +.fa-bag-shopping { + --fa: "\f290"; } -.fa-shopping-bag::before { - content: "\f290"; } +.fa-shopping-bag { + --fa: "\f290"; } -.fa-arrow-down-z-a::before { - content: "\f881"; } +.fa-arrow-down-z-a { + --fa: "\f881"; } -.fa-sort-alpha-desc::before { - content: "\f881"; } +.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa-sort-alpha-down-alt::before { - content: "\f881"; } +.fa-sort-alpha-down-alt { + --fa: "\f881"; } -.fa-mitten::before { - content: "\f7b5"; } +.fa-mitten { + --fa: "\f7b5"; } -.fa-person-rays::before { - content: "\e54d"; } +.fa-person-rays { + --fa: "\e54d"; } -.fa-users::before { - content: "\f0c0"; } +.fa-users { + --fa: "\f0c0"; } -.fa-eye-slash::before { - content: "\f070"; } +.fa-eye-slash { + --fa: "\f070"; } -.fa-flask-vial::before { - content: "\e4f3"; } +.fa-flask-vial { + --fa: "\e4f3"; } -.fa-hand::before { - content: "\f256"; } +.fa-hand { + --fa: "\f256"; } -.fa-hand-paper::before { - content: "\f256"; } +.fa-hand-paper { + --fa: "\f256"; } -.fa-om::before { - content: "\f679"; } +.fa-om { + --fa: "\f679"; } -.fa-worm::before { - content: "\e599"; } +.fa-worm { + --fa: "\e599"; } -.fa-house-circle-xmark::before { - content: "\e50b"; } +.fa-house-circle-xmark { + --fa: "\e50b"; } -.fa-plug::before { - content: "\f1e6"; } +.fa-plug { + --fa: "\f1e6"; } -.fa-chevron-up::before { - content: "\f077"; } +.fa-chevron-up { + --fa: "\f077"; } -.fa-hand-spock::before { - content: "\f259"; } +.fa-hand-spock { + --fa: "\f259"; } -.fa-stopwatch::before { - content: "\f2f2"; } +.fa-stopwatch { + --fa: "\f2f2"; } -.fa-face-kiss::before { - content: "\f596"; } +.fa-face-kiss { + --fa: "\f596"; } -.fa-kiss::before { - content: "\f596"; } +.fa-kiss { + --fa: "\f596"; } -.fa-bridge-circle-xmark::before { - content: "\e4cb"; } +.fa-bridge-circle-xmark { + --fa: "\e4cb"; } -.fa-face-grin-tongue::before { - content: "\f589"; } +.fa-face-grin-tongue { + --fa: "\f589"; } -.fa-grin-tongue::before { - content: "\f589"; } +.fa-grin-tongue { + --fa: "\f589"; } -.fa-chess-bishop::before { - content: "\f43a"; } +.fa-chess-bishop { + --fa: "\f43a"; } -.fa-face-grin-wink::before { - content: "\f58c"; } +.fa-face-grin-wink { + --fa: "\f58c"; } -.fa-grin-wink::before { - content: "\f58c"; } +.fa-grin-wink { + --fa: "\f58c"; } -.fa-ear-deaf::before { - content: "\f2a4"; } +.fa-ear-deaf { + --fa: "\f2a4"; } -.fa-deaf::before { - content: "\f2a4"; } +.fa-deaf { + --fa: "\f2a4"; } -.fa-deafness::before { - content: "\f2a4"; } +.fa-deafness { + --fa: "\f2a4"; } -.fa-hard-of-hearing::before { - content: "\f2a4"; } +.fa-hard-of-hearing { + --fa: "\f2a4"; } -.fa-road-circle-check::before { - content: "\e564"; } +.fa-road-circle-check { + --fa: "\e564"; } -.fa-dice-five::before { - content: "\f523"; } +.fa-dice-five { + --fa: "\f523"; } -.fa-square-rss::before { - content: "\f143"; } +.fa-square-rss { + --fa: "\f143"; } -.fa-rss-square::before { - content: "\f143"; } +.fa-rss-square { + --fa: "\f143"; } -.fa-land-mine-on::before { - content: "\e51b"; } +.fa-land-mine-on { + --fa: "\e51b"; } -.fa-i-cursor::before { - content: "\f246"; } +.fa-i-cursor { + --fa: "\f246"; } -.fa-stamp::before { - content: "\f5bf"; } +.fa-stamp { + --fa: "\f5bf"; } -.fa-stairs::before { - content: "\e289"; } +.fa-stairs { + --fa: "\e289"; } -.fa-i::before { - content: "\49"; } +.fa-i { + --fa: "\49"; } -.fa-hryvnia-sign::before { - content: "\f6f2"; } +.fa-hryvnia-sign { + --fa: "\f6f2"; } -.fa-hryvnia::before { - content: "\f6f2"; } +.fa-hryvnia { + --fa: "\f6f2"; } -.fa-pills::before { - content: "\f484"; } +.fa-pills { + --fa: "\f484"; } -.fa-face-grin-wide::before { - content: "\f581"; } +.fa-face-grin-wide { + --fa: "\f581"; } -.fa-grin-alt::before { - content: "\f581"; } +.fa-grin-alt { + --fa: "\f581"; } -.fa-tooth::before { - content: "\f5c9"; } +.fa-tooth { + --fa: "\f5c9"; } -.fa-v::before { - content: "\56"; } +.fa-v { + --fa: "\56"; } -.fa-bangladeshi-taka-sign::before { - content: "\e2e6"; } +.fa-bangladeshi-taka-sign { + --fa: "\e2e6"; } -.fa-bicycle::before { - content: "\f206"; } +.fa-bicycle { + --fa: "\f206"; } -.fa-staff-snake::before { - content: "\e579"; } +.fa-staff-snake { + --fa: "\e579"; } -.fa-rod-asclepius::before { - content: "\e579"; } +.fa-rod-asclepius { + --fa: "\e579"; } -.fa-rod-snake::before { - content: "\e579"; } +.fa-rod-snake { + --fa: "\e579"; } -.fa-staff-aesculapius::before { - content: "\e579"; } +.fa-staff-aesculapius { + --fa: "\e579"; } -.fa-head-side-cough-slash::before { - content: "\e062"; } +.fa-head-side-cough-slash { + --fa: "\e062"; } -.fa-truck-medical::before { - content: "\f0f9"; } +.fa-truck-medical { + --fa: "\f0f9"; } -.fa-ambulance::before { - content: "\f0f9"; } +.fa-ambulance { + --fa: "\f0f9"; } -.fa-wheat-awn-circle-exclamation::before { - content: "\e598"; } +.fa-wheat-awn-circle-exclamation { + --fa: "\e598"; } -.fa-snowman::before { - content: "\f7d0"; } +.fa-snowman { + --fa: "\f7d0"; } -.fa-mortar-pestle::before { - content: "\f5a7"; } +.fa-mortar-pestle { + --fa: "\f5a7"; } -.fa-road-barrier::before { - content: "\e562"; } +.fa-road-barrier { + --fa: "\e562"; } -.fa-school::before { - content: "\f549"; } +.fa-school { + --fa: "\f549"; } -.fa-igloo::before { - content: "\f7ae"; } +.fa-igloo { + --fa: "\f7ae"; } -.fa-joint::before { - content: "\f595"; } +.fa-joint { + --fa: "\f595"; } -.fa-angle-right::before { - content: "\f105"; } +.fa-angle-right { + --fa: "\f105"; } -.fa-horse::before { - content: "\f6f0"; } +.fa-horse { + --fa: "\f6f0"; } -.fa-q::before { - content: "\51"; } +.fa-q { + --fa: "\51"; } -.fa-g::before { - content: "\47"; } +.fa-g { + --fa: "\47"; } -.fa-notes-medical::before { - content: "\f481"; } +.fa-notes-medical { + --fa: "\f481"; } -.fa-temperature-half::before { - content: "\f2c9"; } +.fa-temperature-half { + --fa: "\f2c9"; } -.fa-temperature-2::before { - content: "\f2c9"; } +.fa-temperature-2 { + --fa: "\f2c9"; } -.fa-thermometer-2::before { - content: "\f2c9"; } +.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa-thermometer-half::before { - content: "\f2c9"; } +.fa-thermometer-half { + --fa: "\f2c9"; } -.fa-dong-sign::before { - content: "\e169"; } +.fa-dong-sign { + --fa: "\e169"; } -.fa-capsules::before { - content: "\f46b"; } +.fa-capsules { + --fa: "\f46b"; } -.fa-poo-storm::before { - content: "\f75a"; } +.fa-poo-storm { + --fa: "\f75a"; } -.fa-poo-bolt::before { - content: "\f75a"; } +.fa-poo-bolt { + --fa: "\f75a"; } -.fa-face-frown-open::before { - content: "\f57a"; } +.fa-face-frown-open { + --fa: "\f57a"; } -.fa-frown-open::before { - content: "\f57a"; } +.fa-frown-open { + --fa: "\f57a"; } -.fa-hand-point-up::before { - content: "\f0a6"; } +.fa-hand-point-up { + --fa: "\f0a6"; } -.fa-money-bill::before { - content: "\f0d6"; } +.fa-money-bill { + --fa: "\f0d6"; } -.fa-bookmark::before { - content: "\f02e"; } +.fa-bookmark { + --fa: "\f02e"; } -.fa-align-justify::before { - content: "\f039"; } +.fa-align-justify { + --fa: "\f039"; } -.fa-umbrella-beach::before { - content: "\f5ca"; } +.fa-umbrella-beach { + --fa: "\f5ca"; } -.fa-helmet-un::before { - content: "\e503"; } +.fa-helmet-un { + --fa: "\e503"; } -.fa-bullseye::before { - content: "\f140"; } +.fa-bullseye { + --fa: "\f140"; } -.fa-bacon::before { - content: "\f7e5"; } +.fa-bacon { + --fa: "\f7e5"; } -.fa-hand-point-down::before { - content: "\f0a7"; } +.fa-hand-point-down { + --fa: "\f0a7"; } -.fa-arrow-up-from-bracket::before { - content: "\e09a"; } +.fa-arrow-up-from-bracket { + --fa: "\e09a"; } -.fa-folder::before { - content: "\f07b"; } +.fa-folder { + --fa: "\f07b"; } -.fa-folder-blank::before { - content: "\f07b"; } +.fa-folder-blank { + --fa: "\f07b"; } -.fa-file-waveform::before { - content: "\f478"; } +.fa-file-waveform { + --fa: "\f478"; } -.fa-file-medical-alt::before { - content: "\f478"; } +.fa-file-medical-alt { + --fa: "\f478"; } -.fa-radiation::before { - content: "\f7b9"; } +.fa-radiation { + --fa: "\f7b9"; } -.fa-chart-simple::before { - content: "\e473"; } +.fa-chart-simple { + --fa: "\e473"; } -.fa-mars-stroke::before { - content: "\f229"; } +.fa-mars-stroke { + --fa: "\f229"; } -.fa-vial::before { - content: "\f492"; } +.fa-vial { + --fa: "\f492"; } -.fa-gauge::before { - content: "\f624"; } +.fa-gauge { + --fa: "\f624"; } -.fa-dashboard::before { - content: "\f624"; } +.fa-dashboard { + --fa: "\f624"; } -.fa-gauge-med::before { - content: "\f624"; } +.fa-gauge-med { + --fa: "\f624"; } -.fa-tachometer-alt-average::before { - content: "\f624"; } +.fa-tachometer-alt-average { + --fa: "\f624"; } -.fa-wand-magic-sparkles::before { - content: "\e2ca"; } +.fa-wand-magic-sparkles { + --fa: "\e2ca"; } -.fa-magic-wand-sparkles::before { - content: "\e2ca"; } +.fa-magic-wand-sparkles { + --fa: "\e2ca"; } -.fa-e::before { - content: "\45"; } +.fa-e { + --fa: "\45"; } -.fa-pen-clip::before { - content: "\f305"; } +.fa-pen-clip { + --fa: "\f305"; } -.fa-pen-alt::before { - content: "\f305"; } +.fa-pen-alt { + --fa: "\f305"; } -.fa-bridge-circle-exclamation::before { - content: "\e4ca"; } +.fa-bridge-circle-exclamation { + --fa: "\e4ca"; } -.fa-user::before { - content: "\f007"; } +.fa-user { + --fa: "\f007"; } -.fa-school-circle-check::before { - content: "\e56b"; } +.fa-school-circle-check { + --fa: "\e56b"; } -.fa-dumpster::before { - content: "\f793"; } +.fa-dumpster { + --fa: "\f793"; } -.fa-van-shuttle::before { - content: "\f5b6"; } +.fa-van-shuttle { + --fa: "\f5b6"; } -.fa-shuttle-van::before { - content: "\f5b6"; } +.fa-shuttle-van { + --fa: "\f5b6"; } -.fa-building-user::before { - content: "\e4da"; } +.fa-building-user { + --fa: "\e4da"; } -.fa-square-caret-left::before { - content: "\f191"; } +.fa-square-caret-left { + --fa: "\f191"; } -.fa-caret-square-left::before { - content: "\f191"; } +.fa-caret-square-left { + --fa: "\f191"; } -.fa-highlighter::before { - content: "\f591"; } +.fa-highlighter { + --fa: "\f591"; } -.fa-key::before { - content: "\f084"; } +.fa-key { + --fa: "\f084"; } -.fa-bullhorn::before { - content: "\f0a1"; } +.fa-bullhorn { + --fa: "\f0a1"; } -.fa-globe::before { - content: "\f0ac"; } +.fa-globe { + --fa: "\f0ac"; } -.fa-synagogue::before { - content: "\f69b"; } +.fa-synagogue { + --fa: "\f69b"; } -.fa-person-half-dress::before { - content: "\e548"; } +.fa-person-half-dress { + --fa: "\e548"; } -.fa-road-bridge::before { - content: "\e563"; } +.fa-road-bridge { + --fa: "\e563"; } -.fa-location-arrow::before { - content: "\f124"; } +.fa-location-arrow { + --fa: "\f124"; } -.fa-c::before { - content: "\43"; } +.fa-c { + --fa: "\43"; } -.fa-tablet-button::before { - content: "\f10a"; } +.fa-tablet-button { + --fa: "\f10a"; } -.fa-building-lock::before { - content: "\e4d6"; } +.fa-building-lock { + --fa: "\e4d6"; } -.fa-pizza-slice::before { - content: "\f818"; } +.fa-pizza-slice { + --fa: "\f818"; } -.fa-money-bill-wave::before { - content: "\f53a"; } +.fa-money-bill-wave { + --fa: "\f53a"; } -.fa-chart-area::before { - content: "\f1fe"; } +.fa-chart-area { + --fa: "\f1fe"; } -.fa-area-chart::before { - content: "\f1fe"; } +.fa-area-chart { + --fa: "\f1fe"; } -.fa-house-flag::before { - content: "\e50d"; } +.fa-house-flag { + --fa: "\e50d"; } -.fa-person-circle-minus::before { - content: "\e540"; } +.fa-person-circle-minus { + --fa: "\e540"; } -.fa-ban::before { - content: "\f05e"; } +.fa-ban { + --fa: "\f05e"; } -.fa-cancel::before { - content: "\f05e"; } +.fa-cancel { + --fa: "\f05e"; } -.fa-camera-rotate::before { - content: "\e0d8"; } +.fa-camera-rotate { + --fa: "\e0d8"; } -.fa-spray-can-sparkles::before { - content: "\f5d0"; } +.fa-spray-can-sparkles { + --fa: "\f5d0"; } -.fa-air-freshener::before { - content: "\f5d0"; } +.fa-air-freshener { + --fa: "\f5d0"; } -.fa-star::before { - content: "\f005"; } +.fa-star { + --fa: "\f005"; } -.fa-repeat::before { - content: "\f363"; } +.fa-repeat { + --fa: "\f363"; } -.fa-cross::before { - content: "\f654"; } +.fa-cross { + --fa: "\f654"; } -.fa-box::before { - content: "\f466"; } +.fa-box { + --fa: "\f466"; } -.fa-venus-mars::before { - content: "\f228"; } +.fa-venus-mars { + --fa: "\f228"; } -.fa-arrow-pointer::before { - content: "\f245"; } +.fa-arrow-pointer { + --fa: "\f245"; } -.fa-mouse-pointer::before { - content: "\f245"; } +.fa-mouse-pointer { + --fa: "\f245"; } -.fa-maximize::before { - content: "\f31e"; } +.fa-maximize { + --fa: "\f31e"; } -.fa-expand-arrows-alt::before { - content: "\f31e"; } +.fa-expand-arrows-alt { + --fa: "\f31e"; } -.fa-charging-station::before { - content: "\f5e7"; } +.fa-charging-station { + --fa: "\f5e7"; } -.fa-shapes::before { - content: "\f61f"; } +.fa-shapes { + --fa: "\f61f"; } -.fa-triangle-circle-square::before { - content: "\f61f"; } +.fa-triangle-circle-square { + --fa: "\f61f"; } -.fa-shuffle::before { - content: "\f074"; } +.fa-shuffle { + --fa: "\f074"; } -.fa-random::before { - content: "\f074"; } +.fa-random { + --fa: "\f074"; } -.fa-person-running::before { - content: "\f70c"; } +.fa-person-running { + --fa: "\f70c"; } -.fa-running::before { - content: "\f70c"; } +.fa-running { + --fa: "\f70c"; } -.fa-mobile-retro::before { - content: "\e527"; } +.fa-mobile-retro { + --fa: "\e527"; } -.fa-grip-lines-vertical::before { - content: "\f7a5"; } +.fa-grip-lines-vertical { + --fa: "\f7a5"; } -.fa-spider::before { - content: "\f717"; } +.fa-spider { + --fa: "\f717"; } -.fa-hands-bound::before { - content: "\e4f9"; } +.fa-hands-bound { + --fa: "\e4f9"; } -.fa-file-invoice-dollar::before { - content: "\f571"; } +.fa-file-invoice-dollar { + --fa: "\f571"; } -.fa-plane-circle-exclamation::before { - content: "\e556"; } +.fa-plane-circle-exclamation { + --fa: "\e556"; } -.fa-x-ray::before { - content: "\f497"; } +.fa-x-ray { + --fa: "\f497"; } -.fa-spell-check::before { - content: "\f891"; } +.fa-spell-check { + --fa: "\f891"; } -.fa-slash::before { - content: "\f715"; } +.fa-slash { + --fa: "\f715"; } -.fa-computer-mouse::before { - content: "\f8cc"; } +.fa-computer-mouse { + --fa: "\f8cc"; } -.fa-mouse::before { - content: "\f8cc"; } +.fa-mouse { + --fa: "\f8cc"; } -.fa-arrow-right-to-bracket::before { - content: "\f090"; } +.fa-arrow-right-to-bracket { + --fa: "\f090"; } -.fa-sign-in::before { - content: "\f090"; } +.fa-sign-in { + --fa: "\f090"; } -.fa-shop-slash::before { - content: "\e070"; } +.fa-shop-slash { + --fa: "\e070"; } -.fa-store-alt-slash::before { - content: "\e070"; } +.fa-store-alt-slash { + --fa: "\e070"; } -.fa-server::before { - content: "\f233"; } +.fa-server { + --fa: "\f233"; } -.fa-virus-covid-slash::before { - content: "\e4a9"; } +.fa-virus-covid-slash { + --fa: "\e4a9"; } -.fa-shop-lock::before { - content: "\e4a5"; } +.fa-shop-lock { + --fa: "\e4a5"; } -.fa-hourglass-start::before { - content: "\f251"; } +.fa-hourglass-start { + --fa: "\f251"; } -.fa-hourglass-1::before { - content: "\f251"; } +.fa-hourglass-1 { + --fa: "\f251"; } -.fa-blender-phone::before { - content: "\f6b6"; } +.fa-blender-phone { + --fa: "\f6b6"; } -.fa-building-wheat::before { - content: "\e4db"; } +.fa-building-wheat { + --fa: "\e4db"; } -.fa-person-breastfeeding::before { - content: "\e53a"; } +.fa-person-breastfeeding { + --fa: "\e53a"; } -.fa-right-to-bracket::before { - content: "\f2f6"; } +.fa-right-to-bracket { + --fa: "\f2f6"; } -.fa-sign-in-alt::before { - content: "\f2f6"; } +.fa-sign-in-alt { + --fa: "\f2f6"; } -.fa-venus::before { - content: "\f221"; } +.fa-venus { + --fa: "\f221"; } -.fa-passport::before { - content: "\f5ab"; } +.fa-passport { + --fa: "\f5ab"; } -.fa-heart-pulse::before { - content: "\f21e"; } +.fa-thumbtack-slash { + --fa: "\e68f"; } -.fa-heartbeat::before { - content: "\f21e"; } +.fa-thumb-tack-slash { + --fa: "\e68f"; } -.fa-people-carry-box::before { - content: "\f4ce"; } +.fa-heart-pulse { + --fa: "\f21e"; } -.fa-people-carry::before { - content: "\f4ce"; } +.fa-heartbeat { + --fa: "\f21e"; } -.fa-temperature-high::before { - content: "\f769"; } +.fa-people-carry-box { + --fa: "\f4ce"; } -.fa-microchip::before { - content: "\f2db"; } +.fa-people-carry { + --fa: "\f4ce"; } -.fa-crown::before { - content: "\f521"; } +.fa-temperature-high { + --fa: "\f769"; } -.fa-weight-hanging::before { - content: "\f5cd"; } +.fa-microchip { + --fa: "\f2db"; } -.fa-xmarks-lines::before { - content: "\e59a"; } +.fa-crown { + --fa: "\f521"; } -.fa-file-prescription::before { - content: "\f572"; } +.fa-weight-hanging { + --fa: "\f5cd"; } -.fa-weight-scale::before { - content: "\f496"; } +.fa-xmarks-lines { + --fa: "\e59a"; } -.fa-weight::before { - content: "\f496"; } +.fa-file-prescription { + --fa: "\f572"; } -.fa-user-group::before { - content: "\f500"; } +.fa-weight-scale { + --fa: "\f496"; } -.fa-user-friends::before { - content: "\f500"; } +.fa-weight { + --fa: "\f496"; } -.fa-arrow-up-a-z::before { - content: "\f15e"; } +.fa-user-group { + --fa: "\f500"; } -.fa-sort-alpha-up::before { - content: "\f15e"; } +.fa-user-friends { + --fa: "\f500"; } -.fa-chess-knight::before { - content: "\f441"; } +.fa-arrow-up-a-z { + --fa: "\f15e"; } -.fa-face-laugh-squint::before { - content: "\f59b"; } +.fa-sort-alpha-up { + --fa: "\f15e"; } -.fa-laugh-squint::before { - content: "\f59b"; } +.fa-chess-knight { + --fa: "\f441"; } -.fa-wheelchair::before { - content: "\f193"; } +.fa-face-laugh-squint { + --fa: "\f59b"; } -.fa-circle-arrow-up::before { - content: "\f0aa"; } +.fa-laugh-squint { + --fa: "\f59b"; } -.fa-arrow-circle-up::before { - content: "\f0aa"; } +.fa-wheelchair { + --fa: "\f193"; } -.fa-toggle-on::before { - content: "\f205"; } +.fa-circle-arrow-up { + --fa: "\f0aa"; } -.fa-person-walking::before { - content: "\f554"; } +.fa-arrow-circle-up { + --fa: "\f0aa"; } -.fa-walking::before { - content: "\f554"; } +.fa-toggle-on { + --fa: "\f205"; } -.fa-l::before { - content: "\4c"; } +.fa-person-walking { + --fa: "\f554"; } -.fa-fire::before { - content: "\f06d"; } +.fa-walking { + --fa: "\f554"; } -.fa-bed-pulse::before { - content: "\f487"; } +.fa-l { + --fa: "\4c"; } -.fa-procedures::before { - content: "\f487"; } +.fa-fire { + --fa: "\f06d"; } -.fa-shuttle-space::before { - content: "\f197"; } +.fa-bed-pulse { + --fa: "\f487"; } -.fa-space-shuttle::before { - content: "\f197"; } +.fa-procedures { + --fa: "\f487"; } -.fa-face-laugh::before { - content: "\f599"; } +.fa-shuttle-space { + --fa: "\f197"; } -.fa-laugh::before { - content: "\f599"; } +.fa-space-shuttle { + --fa: "\f197"; } -.fa-folder-open::before { - content: "\f07c"; } +.fa-face-laugh { + --fa: "\f599"; } -.fa-heart-circle-plus::before { - content: "\e500"; } +.fa-laugh { + --fa: "\f599"; } -.fa-code-fork::before { - content: "\e13b"; } +.fa-folder-open { + --fa: "\f07c"; } -.fa-city::before { - content: "\f64f"; } +.fa-heart-circle-plus { + --fa: "\e500"; } -.fa-microphone-lines::before { - content: "\f3c9"; } +.fa-code-fork { + --fa: "\e13b"; } -.fa-microphone-alt::before { - content: "\f3c9"; } +.fa-city { + --fa: "\f64f"; } -.fa-pepper-hot::before { - content: "\f816"; } +.fa-microphone-lines { + --fa: "\f3c9"; } -.fa-unlock::before { - content: "\f09c"; } +.fa-microphone-alt { + --fa: "\f3c9"; } -.fa-colon-sign::before { - content: "\e140"; } +.fa-pepper-hot { + --fa: "\f816"; } -.fa-headset::before { - content: "\f590"; } +.fa-unlock { + --fa: "\f09c"; } -.fa-store-slash::before { - content: "\e071"; } +.fa-colon-sign { + --fa: "\e140"; } -.fa-road-circle-xmark::before { - content: "\e566"; } +.fa-headset { + --fa: "\f590"; } -.fa-user-minus::before { - content: "\f503"; } +.fa-store-slash { + --fa: "\e071"; } -.fa-mars-stroke-up::before { - content: "\f22a"; } +.fa-road-circle-xmark { + --fa: "\e566"; } -.fa-mars-stroke-v::before { - content: "\f22a"; } +.fa-user-minus { + --fa: "\f503"; } -.fa-champagne-glasses::before { - content: "\f79f"; } +.fa-mars-stroke-up { + --fa: "\f22a"; } -.fa-glass-cheers::before { - content: "\f79f"; } +.fa-mars-stroke-v { + --fa: "\f22a"; } -.fa-clipboard::before { - content: "\f328"; } +.fa-champagne-glasses { + --fa: "\f79f"; } -.fa-house-circle-exclamation::before { - content: "\e50a"; } +.fa-glass-cheers { + --fa: "\f79f"; } -.fa-file-arrow-up::before { - content: "\f574"; } +.fa-clipboard { + --fa: "\f328"; } -.fa-file-upload::before { - content: "\f574"; } +.fa-house-circle-exclamation { + --fa: "\e50a"; } -.fa-wifi::before { - content: "\f1eb"; } +.fa-file-arrow-up { + --fa: "\f574"; } -.fa-wifi-3::before { - content: "\f1eb"; } +.fa-file-upload { + --fa: "\f574"; } -.fa-wifi-strong::before { - content: "\f1eb"; } +.fa-wifi { + --fa: "\f1eb"; } -.fa-bath::before { - content: "\f2cd"; } +.fa-wifi-3 { + --fa: "\f1eb"; } -.fa-bathtub::before { - content: "\f2cd"; } +.fa-wifi-strong { + --fa: "\f1eb"; } -.fa-underline::before { - content: "\f0cd"; } +.fa-bath { + --fa: "\f2cd"; } -.fa-user-pen::before { - content: "\f4ff"; } +.fa-bathtub { + --fa: "\f2cd"; } -.fa-user-edit::before { - content: "\f4ff"; } +.fa-underline { + --fa: "\f0cd"; } -.fa-signature::before { - content: "\f5b7"; } +.fa-user-pen { + --fa: "\f4ff"; } -.fa-stroopwafel::before { - content: "\f551"; } +.fa-user-edit { + --fa: "\f4ff"; } -.fa-bold::before { - content: "\f032"; } +.fa-signature { + --fa: "\f5b7"; } -.fa-anchor-lock::before { - content: "\e4ad"; } +.fa-stroopwafel { + --fa: "\f551"; } -.fa-building-ngo::before { - content: "\e4d7"; } +.fa-bold { + --fa: "\f032"; } -.fa-manat-sign::before { - content: "\e1d5"; } +.fa-anchor-lock { + --fa: "\e4ad"; } -.fa-not-equal::before { - content: "\f53e"; } +.fa-building-ngo { + --fa: "\e4d7"; } -.fa-border-top-left::before { - content: "\f853"; } +.fa-manat-sign { + --fa: "\e1d5"; } -.fa-border-style::before { - content: "\f853"; } +.fa-not-equal { + --fa: "\f53e"; } -.fa-map-location-dot::before { - content: "\f5a0"; } +.fa-border-top-left { + --fa: "\f853"; } -.fa-map-marked-alt::before { - content: "\f5a0"; } +.fa-border-style { + --fa: "\f853"; } -.fa-jedi::before { - content: "\f669"; } +.fa-map-location-dot { + --fa: "\f5a0"; } -.fa-square-poll-vertical::before { - content: "\f681"; } +.fa-map-marked-alt { + --fa: "\f5a0"; } -.fa-poll::before { - content: "\f681"; } +.fa-jedi { + --fa: "\f669"; } -.fa-mug-hot::before { - content: "\f7b6"; } +.fa-square-poll-vertical { + --fa: "\f681"; } -.fa-car-battery::before { - content: "\f5df"; } +.fa-poll { + --fa: "\f681"; } -.fa-battery-car::before { - content: "\f5df"; } +.fa-mug-hot { + --fa: "\f7b6"; } -.fa-gift::before { - content: "\f06b"; } +.fa-car-battery { + --fa: "\f5df"; } -.fa-dice-two::before { - content: "\f528"; } +.fa-battery-car { + --fa: "\f5df"; } -.fa-chess-queen::before { - content: "\f445"; } +.fa-gift { + --fa: "\f06b"; } -.fa-glasses::before { - content: "\f530"; } +.fa-dice-two { + --fa: "\f528"; } -.fa-chess-board::before { - content: "\f43c"; } +.fa-chess-queen { + --fa: "\f445"; } -.fa-building-circle-check::before { - content: "\e4d2"; } +.fa-glasses { + --fa: "\f530"; } -.fa-person-chalkboard::before { - content: "\e53d"; } +.fa-chess-board { + --fa: "\f43c"; } -.fa-mars-stroke-right::before { - content: "\f22b"; } +.fa-building-circle-check { + --fa: "\e4d2"; } -.fa-mars-stroke-h::before { - content: "\f22b"; } +.fa-person-chalkboard { + --fa: "\e53d"; } -.fa-hand-back-fist::before { - content: "\f255"; } +.fa-mars-stroke-right { + --fa: "\f22b"; } -.fa-hand-rock::before { - content: "\f255"; } +.fa-mars-stroke-h { + --fa: "\f22b"; } -.fa-square-caret-up::before { - content: "\f151"; } +.fa-hand-back-fist { + --fa: "\f255"; } -.fa-caret-square-up::before { - content: "\f151"; } +.fa-hand-rock { + --fa: "\f255"; } -.fa-cloud-showers-water::before { - content: "\e4e4"; } +.fa-square-caret-up { + --fa: "\f151"; } -.fa-chart-bar::before { - content: "\f080"; } +.fa-caret-square-up { + --fa: "\f151"; } -.fa-bar-chart::before { - content: "\f080"; } +.fa-cloud-showers-water { + --fa: "\e4e4"; } -.fa-hands-bubbles::before { - content: "\e05e"; } +.fa-chart-bar { + --fa: "\f080"; } -.fa-hands-wash::before { - content: "\e05e"; } +.fa-bar-chart { + --fa: "\f080"; } -.fa-less-than-equal::before { - content: "\f537"; } +.fa-hands-bubbles { + --fa: "\e05e"; } -.fa-train::before { - content: "\f238"; } +.fa-hands-wash { + --fa: "\e05e"; } -.fa-eye-low-vision::before { - content: "\f2a8"; } +.fa-less-than-equal { + --fa: "\f537"; } -.fa-low-vision::before { - content: "\f2a8"; } +.fa-train { + --fa: "\f238"; } -.fa-crow::before { - content: "\f520"; } +.fa-eye-low-vision { + --fa: "\f2a8"; } -.fa-sailboat::before { - content: "\e445"; } +.fa-low-vision { + --fa: "\f2a8"; } -.fa-window-restore::before { - content: "\f2d2"; } +.fa-crow { + --fa: "\f520"; } -.fa-square-plus::before { - content: "\f0fe"; } +.fa-sailboat { + --fa: "\e445"; } -.fa-plus-square::before { - content: "\f0fe"; } +.fa-window-restore { + --fa: "\f2d2"; } -.fa-torii-gate::before { - content: "\f6a1"; } +.fa-square-plus { + --fa: "\f0fe"; } -.fa-frog::before { - content: "\f52e"; } +.fa-plus-square { + --fa: "\f0fe"; } -.fa-bucket::before { - content: "\e4cf"; } +.fa-torii-gate { + --fa: "\f6a1"; } -.fa-image::before { - content: "\f03e"; } +.fa-frog { + --fa: "\f52e"; } -.fa-microphone::before { - content: "\f130"; } +.fa-bucket { + --fa: "\e4cf"; } -.fa-cow::before { - content: "\f6c8"; } +.fa-image { + --fa: "\f03e"; } -.fa-caret-up::before { - content: "\f0d8"; } +.fa-microphone { + --fa: "\f130"; } -.fa-screwdriver::before { - content: "\f54a"; } +.fa-cow { + --fa: "\f6c8"; } -.fa-folder-closed::before { - content: "\e185"; } +.fa-caret-up { + --fa: "\f0d8"; } -.fa-house-tsunami::before { - content: "\e515"; } +.fa-screwdriver { + --fa: "\f54a"; } -.fa-square-nfi::before { - content: "\e576"; } +.fa-folder-closed { + --fa: "\e185"; } -.fa-arrow-up-from-ground-water::before { - content: "\e4b5"; } +.fa-house-tsunami { + --fa: "\e515"; } -.fa-martini-glass::before { - content: "\f57b"; } +.fa-square-nfi { + --fa: "\e576"; } -.fa-glass-martini-alt::before { - content: "\f57b"; } +.fa-arrow-up-from-ground-water { + --fa: "\e4b5"; } -.fa-rotate-left::before { - content: "\f2ea"; } +.fa-martini-glass { + --fa: "\f57b"; } -.fa-rotate-back::before { - content: "\f2ea"; } +.fa-glass-martini-alt { + --fa: "\f57b"; } -.fa-rotate-backward::before { - content: "\f2ea"; } +.fa-square-binary { + --fa: "\e69b"; } -.fa-undo-alt::before { - content: "\f2ea"; } +.fa-rotate-left { + --fa: "\f2ea"; } -.fa-table-columns::before { - content: "\f0db"; } +.fa-rotate-back { + --fa: "\f2ea"; } -.fa-columns::before { - content: "\f0db"; } +.fa-rotate-backward { + --fa: "\f2ea"; } -.fa-lemon::before { - content: "\f094"; } +.fa-undo-alt { + --fa: "\f2ea"; } -.fa-head-side-mask::before { - content: "\e063"; } +.fa-table-columns { + --fa: "\f0db"; } -.fa-handshake::before { - content: "\f2b5"; } +.fa-columns { + --fa: "\f0db"; } -.fa-gem::before { - content: "\f3a5"; } +.fa-lemon { + --fa: "\f094"; } -.fa-dolly::before { - content: "\f472"; } +.fa-head-side-mask { + --fa: "\e063"; } -.fa-dolly-box::before { - content: "\f472"; } +.fa-handshake { + --fa: "\f2b5"; } -.fa-smoking::before { - content: "\f48d"; } +.fa-gem { + --fa: "\f3a5"; } -.fa-minimize::before { - content: "\f78c"; } +.fa-dolly { + --fa: "\f472"; } -.fa-compress-arrows-alt::before { - content: "\f78c"; } +.fa-dolly-box { + --fa: "\f472"; } -.fa-monument::before { - content: "\f5a6"; } +.fa-smoking { + --fa: "\f48d"; } -.fa-snowplow::before { - content: "\f7d2"; } +.fa-minimize { + --fa: "\f78c"; } -.fa-angles-right::before { - content: "\f101"; } +.fa-compress-arrows-alt { + --fa: "\f78c"; } -.fa-angle-double-right::before { - content: "\f101"; } +.fa-monument { + --fa: "\f5a6"; } -.fa-cannabis::before { - content: "\f55f"; } +.fa-snowplow { + --fa: "\f7d2"; } -.fa-circle-play::before { - content: "\f144"; } +.fa-angles-right { + --fa: "\f101"; } -.fa-play-circle::before { - content: "\f144"; } +.fa-angle-double-right { + --fa: "\f101"; } -.fa-tablets::before { - content: "\f490"; } +.fa-cannabis { + --fa: "\f55f"; } -.fa-ethernet::before { - content: "\f796"; } +.fa-circle-play { + --fa: "\f144"; } -.fa-euro-sign::before { - content: "\f153"; } +.fa-play-circle { + --fa: "\f144"; } -.fa-eur::before { - content: "\f153"; } +.fa-tablets { + --fa: "\f490"; } -.fa-euro::before { - content: "\f153"; } +.fa-ethernet { + --fa: "\f796"; } -.fa-chair::before { - content: "\f6c0"; } +.fa-euro-sign { + --fa: "\f153"; } -.fa-circle-check::before { - content: "\f058"; } +.fa-eur { + --fa: "\f153"; } -.fa-check-circle::before { - content: "\f058"; } +.fa-euro { + --fa: "\f153"; } -.fa-circle-stop::before { - content: "\f28d"; } +.fa-chair { + --fa: "\f6c0"; } -.fa-stop-circle::before { - content: "\f28d"; } +.fa-circle-check { + --fa: "\f058"; } -.fa-compass-drafting::before { - content: "\f568"; } +.fa-check-circle { + --fa: "\f058"; } -.fa-drafting-compass::before { - content: "\f568"; } +.fa-circle-stop { + --fa: "\f28d"; } -.fa-plate-wheat::before { - content: "\e55a"; } +.fa-stop-circle { + --fa: "\f28d"; } -.fa-icicles::before { - content: "\f7ad"; } +.fa-compass-drafting { + --fa: "\f568"; } -.fa-person-shelter::before { - content: "\e54f"; } +.fa-drafting-compass { + --fa: "\f568"; } -.fa-neuter::before { - content: "\f22c"; } +.fa-plate-wheat { + --fa: "\e55a"; } -.fa-id-badge::before { - content: "\f2c1"; } +.fa-icicles { + --fa: "\f7ad"; } -.fa-marker::before { - content: "\f5a1"; } +.fa-person-shelter { + --fa: "\e54f"; } -.fa-face-laugh-beam::before { - content: "\f59a"; } +.fa-neuter { + --fa: "\f22c"; } -.fa-laugh-beam::before { - content: "\f59a"; } +.fa-id-badge { + --fa: "\f2c1"; } -.fa-helicopter-symbol::before { - content: "\e502"; } +.fa-marker { + --fa: "\f5a1"; } -.fa-universal-access::before { - content: "\f29a"; } +.fa-face-laugh-beam { + --fa: "\f59a"; } -.fa-circle-chevron-up::before { - content: "\f139"; } +.fa-laugh-beam { + --fa: "\f59a"; } -.fa-chevron-circle-up::before { - content: "\f139"; } +.fa-helicopter-symbol { + --fa: "\e502"; } -.fa-lari-sign::before { - content: "\e1c8"; } +.fa-universal-access { + --fa: "\f29a"; } -.fa-volcano::before { - content: "\f770"; } +.fa-circle-chevron-up { + --fa: "\f139"; } -.fa-person-walking-dashed-line-arrow-right::before { - content: "\e553"; } +.fa-chevron-circle-up { + --fa: "\f139"; } -.fa-sterling-sign::before { - content: "\f154"; } +.fa-lari-sign { + --fa: "\e1c8"; } -.fa-gbp::before { - content: "\f154"; } +.fa-volcano { + --fa: "\f770"; } -.fa-pound-sign::before { - content: "\f154"; } +.fa-person-walking-dashed-line-arrow-right { + --fa: "\e553"; } -.fa-viruses::before { - content: "\e076"; } +.fa-sterling-sign { + --fa: "\f154"; } -.fa-square-person-confined::before { - content: "\e577"; } +.fa-gbp { + --fa: "\f154"; } -.fa-user-tie::before { - content: "\f508"; } +.fa-pound-sign { + --fa: "\f154"; } -.fa-arrow-down-long::before { - content: "\f175"; } +.fa-viruses { + --fa: "\e076"; } -.fa-long-arrow-down::before { - content: "\f175"; } +.fa-square-person-confined { + --fa: "\e577"; } -.fa-tent-arrow-down-to-line::before { - content: "\e57e"; } +.fa-user-tie { + --fa: "\f508"; } -.fa-certificate::before { - content: "\f0a3"; } +.fa-arrow-down-long { + --fa: "\f175"; } -.fa-reply-all::before { - content: "\f122"; } +.fa-long-arrow-down { + --fa: "\f175"; } -.fa-mail-reply-all::before { - content: "\f122"; } +.fa-tent-arrow-down-to-line { + --fa: "\e57e"; } -.fa-suitcase::before { - content: "\f0f2"; } +.fa-certificate { + --fa: "\f0a3"; } -.fa-person-skating::before { - content: "\f7c5"; } +.fa-reply-all { + --fa: "\f122"; } -.fa-skating::before { - content: "\f7c5"; } +.fa-mail-reply-all { + --fa: "\f122"; } -.fa-filter-circle-dollar::before { - content: "\f662"; } +.fa-suitcase { + --fa: "\f0f2"; } -.fa-funnel-dollar::before { - content: "\f662"; } +.fa-person-skating { + --fa: "\f7c5"; } -.fa-camera-retro::before { - content: "\f083"; } +.fa-skating { + --fa: "\f7c5"; } -.fa-circle-arrow-down::before { - content: "\f0ab"; } +.fa-filter-circle-dollar { + --fa: "\f662"; } -.fa-arrow-circle-down::before { - content: "\f0ab"; } +.fa-funnel-dollar { + --fa: "\f662"; } -.fa-file-import::before { - content: "\f56f"; } +.fa-camera-retro { + --fa: "\f083"; } -.fa-arrow-right-to-file::before { - content: "\f56f"; } +.fa-circle-arrow-down { + --fa: "\f0ab"; } -.fa-square-arrow-up-right::before { - content: "\f14c"; } +.fa-arrow-circle-down { + --fa: "\f0ab"; } -.fa-external-link-square::before { - content: "\f14c"; } +.fa-file-import { + --fa: "\f56f"; } -.fa-box-open::before { - content: "\f49e"; } +.fa-arrow-right-to-file { + --fa: "\f56f"; } -.fa-scroll::before { - content: "\f70e"; } +.fa-square-arrow-up-right { + --fa: "\f14c"; } -.fa-spa::before { - content: "\f5bb"; } +.fa-external-link-square { + --fa: "\f14c"; } -.fa-location-pin-lock::before { - content: "\e51f"; } +.fa-box-open { + --fa: "\f49e"; } -.fa-pause::before { - content: "\f04c"; } +.fa-scroll { + --fa: "\f70e"; } -.fa-hill-avalanche::before { - content: "\e507"; } +.fa-spa { + --fa: "\f5bb"; } -.fa-temperature-empty::before { - content: "\f2cb"; } +.fa-location-pin-lock { + --fa: "\e51f"; } -.fa-temperature-0::before { - content: "\f2cb"; } +.fa-pause { + --fa: "\f04c"; } -.fa-thermometer-0::before { - content: "\f2cb"; } +.fa-hill-avalanche { + --fa: "\e507"; } -.fa-thermometer-empty::before { - content: "\f2cb"; } +.fa-temperature-empty { + --fa: "\f2cb"; } -.fa-bomb::before { - content: "\f1e2"; } +.fa-temperature-0 { + --fa: "\f2cb"; } -.fa-registered::before { - content: "\f25d"; } +.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa-address-card::before { - content: "\f2bb"; } +.fa-thermometer-empty { + --fa: "\f2cb"; } -.fa-contact-card::before { - content: "\f2bb"; } +.fa-bomb { + --fa: "\f1e2"; } -.fa-vcard::before { - content: "\f2bb"; } +.fa-registered { + --fa: "\f25d"; } -.fa-scale-unbalanced-flip::before { - content: "\f516"; } +.fa-address-card { + --fa: "\f2bb"; } -.fa-balance-scale-right::before { - content: "\f516"; } +.fa-contact-card { + --fa: "\f2bb"; } -.fa-subscript::before { - content: "\f12c"; } +.fa-vcard { + --fa: "\f2bb"; } -.fa-diamond-turn-right::before { - content: "\f5eb"; } +.fa-scale-unbalanced-flip { + --fa: "\f516"; } -.fa-directions::before { - content: "\f5eb"; } +.fa-balance-scale-right { + --fa: "\f516"; } -.fa-burst::before { - content: "\e4dc"; } +.fa-subscript { + --fa: "\f12c"; } -.fa-house-laptop::before { - content: "\e066"; } +.fa-diamond-turn-right { + --fa: "\f5eb"; } -.fa-laptop-house::before { - content: "\e066"; } +.fa-directions { + --fa: "\f5eb"; } -.fa-face-tired::before { - content: "\f5c8"; } +.fa-burst { + --fa: "\e4dc"; } -.fa-tired::before { - content: "\f5c8"; } +.fa-house-laptop { + --fa: "\e066"; } -.fa-money-bills::before { - content: "\e1f3"; } +.fa-laptop-house { + --fa: "\e066"; } -.fa-smog::before { - content: "\f75f"; } +.fa-face-tired { + --fa: "\f5c8"; } -.fa-crutch::before { - content: "\f7f7"; } +.fa-tired { + --fa: "\f5c8"; } -.fa-cloud-arrow-up::before { - content: "\f0ee"; } +.fa-money-bills { + --fa: "\e1f3"; } -.fa-cloud-upload::before { - content: "\f0ee"; } +.fa-smog { + --fa: "\f75f"; } -.fa-cloud-upload-alt::before { - content: "\f0ee"; } +.fa-crutch { + --fa: "\f7f7"; } -.fa-palette::before { - content: "\f53f"; } +.fa-cloud-arrow-up { + --fa: "\f0ee"; } -.fa-arrows-turn-right::before { - content: "\e4c0"; } +.fa-cloud-upload { + --fa: "\f0ee"; } -.fa-vest::before { - content: "\e085"; } +.fa-cloud-upload-alt { + --fa: "\f0ee"; } -.fa-ferry::before { - content: "\e4ea"; } +.fa-palette { + --fa: "\f53f"; } -.fa-arrows-down-to-people::before { - content: "\e4b9"; } +.fa-arrows-turn-right { + --fa: "\e4c0"; } -.fa-seedling::before { - content: "\f4d8"; } +.fa-vest { + --fa: "\e085"; } -.fa-sprout::before { - content: "\f4d8"; } +.fa-ferry { + --fa: "\e4ea"; } -.fa-left-right::before { - content: "\f337"; } +.fa-arrows-down-to-people { + --fa: "\e4b9"; } -.fa-arrows-alt-h::before { - content: "\f337"; } +.fa-seedling { + --fa: "\f4d8"; } -.fa-boxes-packing::before { - content: "\e4c7"; } +.fa-sprout { + --fa: "\f4d8"; } -.fa-circle-arrow-left::before { - content: "\f0a8"; } +.fa-left-right { + --fa: "\f337"; } -.fa-arrow-circle-left::before { - content: "\f0a8"; } +.fa-arrows-alt-h { + --fa: "\f337"; } -.fa-group-arrows-rotate::before { - content: "\e4f6"; } +.fa-boxes-packing { + --fa: "\e4c7"; } -.fa-bowl-food::before { - content: "\e4c6"; } +.fa-circle-arrow-left { + --fa: "\f0a8"; } -.fa-candy-cane::before { - content: "\f786"; } +.fa-arrow-circle-left { + --fa: "\f0a8"; } -.fa-arrow-down-wide-short::before { - content: "\f160"; } +.fa-group-arrows-rotate { + --fa: "\e4f6"; } -.fa-sort-amount-asc::before { - content: "\f160"; } +.fa-bowl-food { + --fa: "\e4c6"; } -.fa-sort-amount-down::before { - content: "\f160"; } +.fa-candy-cane { + --fa: "\f786"; } -.fa-cloud-bolt::before { - content: "\f76c"; } +.fa-arrow-down-wide-short { + --fa: "\f160"; } -.fa-thunderstorm::before { - content: "\f76c"; } +.fa-sort-amount-asc { + --fa: "\f160"; } -.fa-text-slash::before { - content: "\f87d"; } +.fa-sort-amount-down { + --fa: "\f160"; } -.fa-remove-format::before { - content: "\f87d"; } +.fa-cloud-bolt { + --fa: "\f76c"; } -.fa-face-smile-wink::before { - content: "\f4da"; } +.fa-thunderstorm { + --fa: "\f76c"; } -.fa-smile-wink::before { - content: "\f4da"; } +.fa-text-slash { + --fa: "\f87d"; } -.fa-file-word::before { - content: "\f1c2"; } +.fa-remove-format { + --fa: "\f87d"; } -.fa-file-powerpoint::before { - content: "\f1c4"; } +.fa-face-smile-wink { + --fa: "\f4da"; } -.fa-arrows-left-right::before { - content: "\f07e"; } +.fa-smile-wink { + --fa: "\f4da"; } -.fa-arrows-h::before { - content: "\f07e"; } +.fa-file-word { + --fa: "\f1c2"; } -.fa-house-lock::before { - content: "\e510"; } +.fa-file-powerpoint { + --fa: "\f1c4"; } -.fa-cloud-arrow-down::before { - content: "\f0ed"; } +.fa-arrows-left-right { + --fa: "\f07e"; } -.fa-cloud-download::before { - content: "\f0ed"; } +.fa-arrows-h { + --fa: "\f07e"; } -.fa-cloud-download-alt::before { - content: "\f0ed"; } +.fa-house-lock { + --fa: "\e510"; } -.fa-children::before { - content: "\e4e1"; } +.fa-cloud-arrow-down { + --fa: "\f0ed"; } -.fa-chalkboard::before { - content: "\f51b"; } +.fa-cloud-download { + --fa: "\f0ed"; } -.fa-blackboard::before { - content: "\f51b"; } +.fa-cloud-download-alt { + --fa: "\f0ed"; } -.fa-user-large-slash::before { - content: "\f4fa"; } +.fa-children { + --fa: "\e4e1"; } -.fa-user-alt-slash::before { - content: "\f4fa"; } +.fa-chalkboard { + --fa: "\f51b"; } -.fa-envelope-open::before { - content: "\f2b6"; } +.fa-blackboard { + --fa: "\f51b"; } -.fa-handshake-simple-slash::before { - content: "\e05f"; } +.fa-user-large-slash { + --fa: "\f4fa"; } -.fa-handshake-alt-slash::before { - content: "\e05f"; } +.fa-user-alt-slash { + --fa: "\f4fa"; } -.fa-mattress-pillow::before { - content: "\e525"; } +.fa-envelope-open { + --fa: "\f2b6"; } -.fa-guarani-sign::before { - content: "\e19a"; } +.fa-handshake-simple-slash { + --fa: "\e05f"; } -.fa-arrows-rotate::before { - content: "\f021"; } +.fa-handshake-alt-slash { + --fa: "\e05f"; } -.fa-refresh::before { - content: "\f021"; } +.fa-mattress-pillow { + --fa: "\e525"; } -.fa-sync::before { - content: "\f021"; } +.fa-guarani-sign { + --fa: "\e19a"; } -.fa-fire-extinguisher::before { - content: "\f134"; } +.fa-arrows-rotate { + --fa: "\f021"; } -.fa-cruzeiro-sign::before { - content: "\e152"; } +.fa-refresh { + --fa: "\f021"; } -.fa-greater-than-equal::before { - content: "\f532"; } +.fa-sync { + --fa: "\f021"; } -.fa-shield-halved::before { - content: "\f3ed"; } +.fa-fire-extinguisher { + --fa: "\f134"; } -.fa-shield-alt::before { - content: "\f3ed"; } +.fa-cruzeiro-sign { + --fa: "\e152"; } -.fa-book-atlas::before { - content: "\f558"; } +.fa-greater-than-equal { + --fa: "\f532"; } -.fa-atlas::before { - content: "\f558"; } +.fa-shield-halved { + --fa: "\f3ed"; } -.fa-virus::before { - content: "\e074"; } +.fa-shield-alt { + --fa: "\f3ed"; } -.fa-envelope-circle-check::before { - content: "\e4e8"; } +.fa-book-atlas { + --fa: "\f558"; } -.fa-layer-group::before { - content: "\f5fd"; } +.fa-atlas { + --fa: "\f558"; } -.fa-arrows-to-dot::before { - content: "\e4be"; } +.fa-virus { + --fa: "\e074"; } -.fa-archway::before { - content: "\f557"; } +.fa-envelope-circle-check { + --fa: "\e4e8"; } -.fa-heart-circle-check::before { - content: "\e4fd"; } +.fa-layer-group { + --fa: "\f5fd"; } -.fa-house-chimney-crack::before { - content: "\f6f1"; } +.fa-arrows-to-dot { + --fa: "\e4be"; } -.fa-house-damage::before { - content: "\f6f1"; } +.fa-archway { + --fa: "\f557"; } -.fa-file-zipper::before { - content: "\f1c6"; } +.fa-heart-circle-check { + --fa: "\e4fd"; } -.fa-file-archive::before { - content: "\f1c6"; } +.fa-house-chimney-crack { + --fa: "\f6f1"; } -.fa-square::before { - content: "\f0c8"; } +.fa-house-damage { + --fa: "\f6f1"; } -.fa-martini-glass-empty::before { - content: "\f000"; } +.fa-file-zipper { + --fa: "\f1c6"; } -.fa-glass-martini::before { - content: "\f000"; } +.fa-file-archive { + --fa: "\f1c6"; } -.fa-couch::before { - content: "\f4b8"; } +.fa-square { + --fa: "\f0c8"; } -.fa-cedi-sign::before { - content: "\e0df"; } +.fa-martini-glass-empty { + --fa: "\f000"; } -.fa-italic::before { - content: "\f033"; } +.fa-glass-martini { + --fa: "\f000"; } -.fa-table-cells-column-lock::before { - content: "\e678"; } +.fa-couch { + --fa: "\f4b8"; } -.fa-church::before { - content: "\f51d"; } +.fa-cedi-sign { + --fa: "\e0df"; } -.fa-comments-dollar::before { - content: "\f653"; } +.fa-italic { + --fa: "\f033"; } -.fa-democrat::before { - content: "\f747"; } +.fa-table-cells-column-lock { + --fa: "\e678"; } -.fa-z::before { - content: "\5a"; } +.fa-church { + --fa: "\f51d"; } -.fa-person-skiing::before { - content: "\f7c9"; } +.fa-comments-dollar { + --fa: "\f653"; } -.fa-skiing::before { - content: "\f7c9"; } +.fa-democrat { + --fa: "\f747"; } -.fa-road-lock::before { - content: "\e567"; } +.fa-z { + --fa: "\5a"; } -.fa-a::before { - content: "\41"; } +.fa-person-skiing { + --fa: "\f7c9"; } -.fa-temperature-arrow-down::before { - content: "\e03f"; } +.fa-skiing { + --fa: "\f7c9"; } -.fa-temperature-down::before { - content: "\e03f"; } +.fa-road-lock { + --fa: "\e567"; } -.fa-feather-pointed::before { - content: "\f56b"; } +.fa-a { + --fa: "\41"; } -.fa-feather-alt::before { - content: "\f56b"; } +.fa-temperature-arrow-down { + --fa: "\e03f"; } -.fa-p::before { - content: "\50"; } +.fa-temperature-down { + --fa: "\e03f"; } -.fa-snowflake::before { - content: "\f2dc"; } +.fa-feather-pointed { + --fa: "\f56b"; } -.fa-newspaper::before { - content: "\f1ea"; } +.fa-feather-alt { + --fa: "\f56b"; } -.fa-rectangle-ad::before { - content: "\f641"; } +.fa-p { + --fa: "\50"; } -.fa-ad::before { - content: "\f641"; } +.fa-snowflake { + --fa: "\f2dc"; } -.fa-circle-arrow-right::before { - content: "\f0a9"; } +.fa-newspaper { + --fa: "\f1ea"; } -.fa-arrow-circle-right::before { - content: "\f0a9"; } +.fa-rectangle-ad { + --fa: "\f641"; } -.fa-filter-circle-xmark::before { - content: "\e17b"; } +.fa-ad { + --fa: "\f641"; } -.fa-locust::before { - content: "\e520"; } +.fa-circle-arrow-right { + --fa: "\f0a9"; } -.fa-sort::before { - content: "\f0dc"; } +.fa-arrow-circle-right { + --fa: "\f0a9"; } -.fa-unsorted::before { - content: "\f0dc"; } +.fa-filter-circle-xmark { + --fa: "\e17b"; } -.fa-list-ol::before { - content: "\f0cb"; } +.fa-locust { + --fa: "\e520"; } -.fa-list-1-2::before { - content: "\f0cb"; } +.fa-sort { + --fa: "\f0dc"; } -.fa-list-numeric::before { - content: "\f0cb"; } +.fa-unsorted { + --fa: "\f0dc"; } -.fa-person-dress-burst::before { - content: "\e544"; } +.fa-list-ol { + --fa: "\f0cb"; } -.fa-money-check-dollar::before { - content: "\f53d"; } +.fa-list-1-2 { + --fa: "\f0cb"; } -.fa-money-check-alt::before { - content: "\f53d"; } +.fa-list-numeric { + --fa: "\f0cb"; } -.fa-vector-square::before { - content: "\f5cb"; } +.fa-person-dress-burst { + --fa: "\e544"; } -.fa-bread-slice::before { - content: "\f7ec"; } +.fa-money-check-dollar { + --fa: "\f53d"; } -.fa-language::before { - content: "\f1ab"; } +.fa-money-check-alt { + --fa: "\f53d"; } -.fa-face-kiss-wink-heart::before { - content: "\f598"; } +.fa-vector-square { + --fa: "\f5cb"; } -.fa-kiss-wink-heart::before { - content: "\f598"; } +.fa-bread-slice { + --fa: "\f7ec"; } -.fa-filter::before { - content: "\f0b0"; } +.fa-language { + --fa: "\f1ab"; } -.fa-question::before { - content: "\3f"; } +.fa-face-kiss-wink-heart { + --fa: "\f598"; } -.fa-file-signature::before { - content: "\f573"; } +.fa-kiss-wink-heart { + --fa: "\f598"; } -.fa-up-down-left-right::before { - content: "\f0b2"; } +.fa-filter { + --fa: "\f0b0"; } -.fa-arrows-alt::before { - content: "\f0b2"; } +.fa-question { + --fa: "\3f"; } -.fa-house-chimney-user::before { - content: "\e065"; } +.fa-file-signature { + --fa: "\f573"; } -.fa-hand-holding-heart::before { - content: "\f4be"; } +.fa-up-down-left-right { + --fa: "\f0b2"; } -.fa-puzzle-piece::before { - content: "\f12e"; } +.fa-arrows-alt { + --fa: "\f0b2"; } -.fa-money-check::before { - content: "\f53c"; } +.fa-house-chimney-user { + --fa: "\e065"; } -.fa-star-half-stroke::before { - content: "\f5c0"; } +.fa-hand-holding-heart { + --fa: "\f4be"; } -.fa-star-half-alt::before { - content: "\f5c0"; } +.fa-puzzle-piece { + --fa: "\f12e"; } -.fa-code::before { - content: "\f121"; } +.fa-money-check { + --fa: "\f53c"; } -.fa-whiskey-glass::before { - content: "\f7a0"; } +.fa-star-half-stroke { + --fa: "\f5c0"; } -.fa-glass-whiskey::before { - content: "\f7a0"; } +.fa-star-half-alt { + --fa: "\f5c0"; } -.fa-building-circle-exclamation::before { - content: "\e4d3"; } +.fa-code { + --fa: "\f121"; } -.fa-magnifying-glass-chart::before { - content: "\e522"; } +.fa-whiskey-glass { + --fa: "\f7a0"; } -.fa-arrow-up-right-from-square::before { - content: "\f08e"; } +.fa-glass-whiskey { + --fa: "\f7a0"; } -.fa-external-link::before { - content: "\f08e"; } +.fa-building-circle-exclamation { + --fa: "\e4d3"; } -.fa-cubes-stacked::before { - content: "\e4e6"; } +.fa-magnifying-glass-chart { + --fa: "\e522"; } -.fa-won-sign::before { - content: "\f159"; } +.fa-arrow-up-right-from-square { + --fa: "\f08e"; } -.fa-krw::before { - content: "\f159"; } +.fa-external-link { + --fa: "\f08e"; } -.fa-won::before { - content: "\f159"; } +.fa-cubes-stacked { + --fa: "\e4e6"; } -.fa-virus-covid::before { - content: "\e4a8"; } +.fa-won-sign { + --fa: "\f159"; } -.fa-austral-sign::before { - content: "\e0a9"; } +.fa-krw { + --fa: "\f159"; } -.fa-f::before { - content: "\46"; } +.fa-won { + --fa: "\f159"; } -.fa-leaf::before { - content: "\f06c"; } +.fa-virus-covid { + --fa: "\e4a8"; } -.fa-road::before { - content: "\f018"; } +.fa-austral-sign { + --fa: "\e0a9"; } -.fa-taxi::before { - content: "\f1ba"; } +.fa-f { + --fa: "\46"; } -.fa-cab::before { - content: "\f1ba"; } +.fa-leaf { + --fa: "\f06c"; } -.fa-person-circle-plus::before { - content: "\e541"; } +.fa-road { + --fa: "\f018"; } -.fa-chart-pie::before { - content: "\f200"; } +.fa-taxi { + --fa: "\f1ba"; } -.fa-pie-chart::before { - content: "\f200"; } +.fa-cab { + --fa: "\f1ba"; } -.fa-bolt-lightning::before { - content: "\e0b7"; } +.fa-person-circle-plus { + --fa: "\e541"; } -.fa-sack-xmark::before { - content: "\e56a"; } +.fa-chart-pie { + --fa: "\f200"; } -.fa-file-excel::before { - content: "\f1c3"; } +.fa-pie-chart { + --fa: "\f200"; } -.fa-file-contract::before { - content: "\f56c"; } +.fa-bolt-lightning { + --fa: "\e0b7"; } -.fa-fish-fins::before { - content: "\e4f2"; } +.fa-sack-xmark { + --fa: "\e56a"; } -.fa-building-flag::before { - content: "\e4d5"; } +.fa-file-excel { + --fa: "\f1c3"; } -.fa-face-grin-beam::before { - content: "\f582"; } +.fa-file-contract { + --fa: "\f56c"; } -.fa-grin-beam::before { - content: "\f582"; } +.fa-fish-fins { + --fa: "\e4f2"; } -.fa-object-ungroup::before { - content: "\f248"; } +.fa-building-flag { + --fa: "\e4d5"; } -.fa-poop::before { - content: "\f619"; } +.fa-face-grin-beam { + --fa: "\f582"; } -.fa-location-pin::before { - content: "\f041"; } +.fa-grin-beam { + --fa: "\f582"; } -.fa-map-marker::before { - content: "\f041"; } +.fa-object-ungroup { + --fa: "\f248"; } -.fa-kaaba::before { - content: "\f66b"; } +.fa-poop { + --fa: "\f619"; } -.fa-toilet-paper::before { - content: "\f71e"; } +.fa-location-pin { + --fa: "\f041"; } -.fa-helmet-safety::before { - content: "\f807"; } +.fa-map-marker { + --fa: "\f041"; } -.fa-hard-hat::before { - content: "\f807"; } +.fa-kaaba { + --fa: "\f66b"; } -.fa-hat-hard::before { - content: "\f807"; } +.fa-toilet-paper { + --fa: "\f71e"; } -.fa-eject::before { - content: "\f052"; } +.fa-helmet-safety { + --fa: "\f807"; } -.fa-circle-right::before { - content: "\f35a"; } +.fa-hard-hat { + --fa: "\f807"; } -.fa-arrow-alt-circle-right::before { - content: "\f35a"; } +.fa-hat-hard { + --fa: "\f807"; } -.fa-plane-circle-check::before { - content: "\e555"; } +.fa-eject { + --fa: "\f052"; } -.fa-face-rolling-eyes::before { - content: "\f5a5"; } +.fa-circle-right { + --fa: "\f35a"; } -.fa-meh-rolling-eyes::before { - content: "\f5a5"; } +.fa-arrow-alt-circle-right { + --fa: "\f35a"; } -.fa-object-group::before { - content: "\f247"; } +.fa-plane-circle-check { + --fa: "\e555"; } -.fa-chart-line::before { - content: "\f201"; } +.fa-face-rolling-eyes { + --fa: "\f5a5"; } -.fa-line-chart::before { - content: "\f201"; } +.fa-meh-rolling-eyes { + --fa: "\f5a5"; } -.fa-mask-ventilator::before { - content: "\e524"; } +.fa-object-group { + --fa: "\f247"; } -.fa-arrow-right::before { - content: "\f061"; } +.fa-chart-line { + --fa: "\f201"; } -.fa-signs-post::before { - content: "\f277"; } +.fa-line-chart { + --fa: "\f201"; } -.fa-map-signs::before { - content: "\f277"; } +.fa-mask-ventilator { + --fa: "\e524"; } -.fa-cash-register::before { - content: "\f788"; } +.fa-arrow-right { + --fa: "\f061"; } -.fa-person-circle-question::before { - content: "\e542"; } +.fa-signs-post { + --fa: "\f277"; } -.fa-h::before { - content: "\48"; } +.fa-map-signs { + --fa: "\f277"; } -.fa-tarp::before { - content: "\e57b"; } +.fa-cash-register { + --fa: "\f788"; } -.fa-screwdriver-wrench::before { - content: "\f7d9"; } +.fa-person-circle-question { + --fa: "\e542"; } -.fa-tools::before { - content: "\f7d9"; } +.fa-h { + --fa: "\48"; } -.fa-arrows-to-eye::before { - content: "\e4bf"; } +.fa-tarp { + --fa: "\e57b"; } -.fa-plug-circle-bolt::before { - content: "\e55b"; } +.fa-screwdriver-wrench { + --fa: "\f7d9"; } -.fa-heart::before { - content: "\f004"; } +.fa-tools { + --fa: "\f7d9"; } -.fa-mars-and-venus::before { - content: "\f224"; } +.fa-arrows-to-eye { + --fa: "\e4bf"; } -.fa-house-user::before { - content: "\e1b0"; } +.fa-plug-circle-bolt { + --fa: "\e55b"; } -.fa-home-user::before { - content: "\e1b0"; } +.fa-heart { + --fa: "\f004"; } -.fa-dumpster-fire::before { - content: "\f794"; } +.fa-mars-and-venus { + --fa: "\f224"; } -.fa-house-crack::before { - content: "\e3b1"; } +.fa-house-user { + --fa: "\e1b0"; } -.fa-martini-glass-citrus::before { - content: "\f561"; } +.fa-home-user { + --fa: "\e1b0"; } -.fa-cocktail::before { - content: "\f561"; } +.fa-dumpster-fire { + --fa: "\f794"; } -.fa-face-surprise::before { - content: "\f5c2"; } +.fa-house-crack { + --fa: "\e3b1"; } -.fa-surprise::before { - content: "\f5c2"; } +.fa-martini-glass-citrus { + --fa: "\f561"; } -.fa-bottle-water::before { - content: "\e4c5"; } +.fa-cocktail { + --fa: "\f561"; } -.fa-circle-pause::before { - content: "\f28b"; } +.fa-face-surprise { + --fa: "\f5c2"; } -.fa-pause-circle::before { - content: "\f28b"; } +.fa-surprise { + --fa: "\f5c2"; } -.fa-toilet-paper-slash::before { - content: "\e072"; } +.fa-bottle-water { + --fa: "\e4c5"; } -.fa-apple-whole::before { - content: "\f5d1"; } +.fa-circle-pause { + --fa: "\f28b"; } -.fa-apple-alt::before { - content: "\f5d1"; } +.fa-pause-circle { + --fa: "\f28b"; } -.fa-kitchen-set::before { - content: "\e51a"; } +.fa-toilet-paper-slash { + --fa: "\e072"; } -.fa-r::before { - content: "\52"; } +.fa-apple-whole { + --fa: "\f5d1"; } -.fa-temperature-quarter::before { - content: "\f2ca"; } +.fa-apple-alt { + --fa: "\f5d1"; } -.fa-temperature-1::before { - content: "\f2ca"; } +.fa-kitchen-set { + --fa: "\e51a"; } -.fa-thermometer-1::before { - content: "\f2ca"; } +.fa-r { + --fa: "\52"; } -.fa-thermometer-quarter::before { - content: "\f2ca"; } +.fa-temperature-quarter { + --fa: "\f2ca"; } -.fa-cube::before { - content: "\f1b2"; } +.fa-temperature-1 { + --fa: "\f2ca"; } -.fa-bitcoin-sign::before { - content: "\e0b4"; } +.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa-shield-dog::before { - content: "\e573"; } +.fa-thermometer-quarter { + --fa: "\f2ca"; } -.fa-solar-panel::before { - content: "\f5ba"; } +.fa-cube { + --fa: "\f1b2"; } -.fa-lock-open::before { - content: "\f3c1"; } +.fa-bitcoin-sign { + --fa: "\e0b4"; } -.fa-elevator::before { - content: "\e16d"; } +.fa-shield-dog { + --fa: "\e573"; } -.fa-money-bill-transfer::before { - content: "\e528"; } +.fa-solar-panel { + --fa: "\f5ba"; } -.fa-money-bill-trend-up::before { - content: "\e529"; } +.fa-lock-open { + --fa: "\f3c1"; } -.fa-house-flood-water-circle-arrow-right::before { - content: "\e50f"; } +.fa-elevator { + --fa: "\e16d"; } -.fa-square-poll-horizontal::before { - content: "\f682"; } +.fa-money-bill-transfer { + --fa: "\e528"; } -.fa-poll-h::before { - content: "\f682"; } +.fa-money-bill-trend-up { + --fa: "\e529"; } -.fa-circle::before { - content: "\f111"; } +.fa-house-flood-water-circle-arrow-right { + --fa: "\e50f"; } -.fa-backward-fast::before { - content: "\f049"; } +.fa-square-poll-horizontal { + --fa: "\f682"; } -.fa-fast-backward::before { - content: "\f049"; } +.fa-poll-h { + --fa: "\f682"; } -.fa-recycle::before { - content: "\f1b8"; } +.fa-circle { + --fa: "\f111"; } -.fa-user-astronaut::before { - content: "\f4fb"; } +.fa-backward-fast { + --fa: "\f049"; } -.fa-plane-slash::before { - content: "\e069"; } +.fa-fast-backward { + --fa: "\f049"; } -.fa-trademark::before { - content: "\f25c"; } +.fa-recycle { + --fa: "\f1b8"; } -.fa-basketball::before { - content: "\f434"; } +.fa-user-astronaut { + --fa: "\f4fb"; } -.fa-basketball-ball::before { - content: "\f434"; } +.fa-plane-slash { + --fa: "\e069"; } -.fa-satellite-dish::before { - content: "\f7c0"; } +.fa-trademark { + --fa: "\f25c"; } -.fa-circle-up::before { - content: "\f35b"; } +.fa-basketball { + --fa: "\f434"; } -.fa-arrow-alt-circle-up::before { - content: "\f35b"; } +.fa-basketball-ball { + --fa: "\f434"; } -.fa-mobile-screen-button::before { - content: "\f3cd"; } +.fa-satellite-dish { + --fa: "\f7c0"; } -.fa-mobile-alt::before { - content: "\f3cd"; } +.fa-circle-up { + --fa: "\f35b"; } -.fa-volume-high::before { - content: "\f028"; } +.fa-arrow-alt-circle-up { + --fa: "\f35b"; } -.fa-volume-up::before { - content: "\f028"; } +.fa-mobile-screen-button { + --fa: "\f3cd"; } -.fa-users-rays::before { - content: "\e593"; } +.fa-mobile-alt { + --fa: "\f3cd"; } -.fa-wallet::before { - content: "\f555"; } +.fa-volume-high { + --fa: "\f028"; } -.fa-clipboard-check::before { - content: "\f46c"; } +.fa-volume-up { + --fa: "\f028"; } -.fa-file-audio::before { - content: "\f1c7"; } +.fa-users-rays { + --fa: "\e593"; } -.fa-burger::before { - content: "\f805"; } +.fa-wallet { + --fa: "\f555"; } -.fa-hamburger::before { - content: "\f805"; } +.fa-clipboard-check { + --fa: "\f46c"; } -.fa-wrench::before { - content: "\f0ad"; } +.fa-file-audio { + --fa: "\f1c7"; } -.fa-bugs::before { - content: "\e4d0"; } +.fa-burger { + --fa: "\f805"; } -.fa-rupee-sign::before { - content: "\f156"; } +.fa-hamburger { + --fa: "\f805"; } -.fa-rupee::before { - content: "\f156"; } +.fa-wrench { + --fa: "\f0ad"; } -.fa-file-image::before { - content: "\f1c5"; } +.fa-bugs { + --fa: "\e4d0"; } -.fa-circle-question::before { - content: "\f059"; } +.fa-rupee-sign { + --fa: "\f156"; } -.fa-question-circle::before { - content: "\f059"; } +.fa-rupee { + --fa: "\f156"; } -.fa-plane-departure::before { - content: "\f5b0"; } +.fa-file-image { + --fa: "\f1c5"; } -.fa-handshake-slash::before { - content: "\e060"; } +.fa-circle-question { + --fa: "\f059"; } -.fa-book-bookmark::before { - content: "\e0bb"; } +.fa-question-circle { + --fa: "\f059"; } -.fa-code-branch::before { - content: "\f126"; } +.fa-plane-departure { + --fa: "\f5b0"; } -.fa-hat-cowboy::before { - content: "\f8c0"; } +.fa-handshake-slash { + --fa: "\e060"; } -.fa-bridge::before { - content: "\e4c8"; } +.fa-book-bookmark { + --fa: "\e0bb"; } -.fa-phone-flip::before { - content: "\f879"; } +.fa-code-branch { + --fa: "\f126"; } -.fa-phone-alt::before { - content: "\f879"; } +.fa-hat-cowboy { + --fa: "\f8c0"; } -.fa-truck-front::before { - content: "\e2b7"; } +.fa-bridge { + --fa: "\e4c8"; } -.fa-cat::before { - content: "\f6be"; } +.fa-phone-flip { + --fa: "\f879"; } -.fa-anchor-circle-exclamation::before { - content: "\e4ab"; } +.fa-phone-alt { + --fa: "\f879"; } -.fa-truck-field::before { - content: "\e58d"; } +.fa-truck-front { + --fa: "\e2b7"; } -.fa-route::before { - content: "\f4d7"; } +.fa-cat { + --fa: "\f6be"; } -.fa-clipboard-question::before { - content: "\e4e3"; } +.fa-anchor-circle-exclamation { + --fa: "\e4ab"; } -.fa-panorama::before { - content: "\e209"; } +.fa-truck-field { + --fa: "\e58d"; } -.fa-comment-medical::before { - content: "\f7f5"; } +.fa-route { + --fa: "\f4d7"; } -.fa-teeth-open::before { - content: "\f62f"; } +.fa-clipboard-question { + --fa: "\e4e3"; } -.fa-file-circle-minus::before { - content: "\e4ed"; } +.fa-panorama { + --fa: "\e209"; } -.fa-tags::before { - content: "\f02c"; } +.fa-comment-medical { + --fa: "\f7f5"; } -.fa-wine-glass::before { - content: "\f4e3"; } +.fa-teeth-open { + --fa: "\f62f"; } -.fa-forward-fast::before { - content: "\f050"; } +.fa-file-circle-minus { + --fa: "\e4ed"; } -.fa-fast-forward::before { - content: "\f050"; } +.fa-tags { + --fa: "\f02c"; } -.fa-face-meh-blank::before { - content: "\f5a4"; } +.fa-wine-glass { + --fa: "\f4e3"; } -.fa-meh-blank::before { - content: "\f5a4"; } +.fa-forward-fast { + --fa: "\f050"; } -.fa-square-parking::before { - content: "\f540"; } +.fa-fast-forward { + --fa: "\f050"; } -.fa-parking::before { - content: "\f540"; } +.fa-face-meh-blank { + --fa: "\f5a4"; } -.fa-house-signal::before { - content: "\e012"; } +.fa-meh-blank { + --fa: "\f5a4"; } -.fa-bars-progress::before { - content: "\f828"; } +.fa-square-parking { + --fa: "\f540"; } -.fa-tasks-alt::before { - content: "\f828"; } +.fa-parking { + --fa: "\f540"; } -.fa-faucet-drip::before { - content: "\e006"; } +.fa-house-signal { + --fa: "\e012"; } -.fa-cart-flatbed::before { - content: "\f474"; } +.fa-bars-progress { + --fa: "\f828"; } -.fa-dolly-flatbed::before { - content: "\f474"; } +.fa-tasks-alt { + --fa: "\f828"; } -.fa-ban-smoking::before { - content: "\f54d"; } +.fa-faucet-drip { + --fa: "\e006"; } -.fa-smoking-ban::before { - content: "\f54d"; } +.fa-cart-flatbed { + --fa: "\f474"; } -.fa-terminal::before { - content: "\f120"; } +.fa-dolly-flatbed { + --fa: "\f474"; } -.fa-mobile-button::before { - content: "\f10b"; } +.fa-ban-smoking { + --fa: "\f54d"; } -.fa-house-medical-flag::before { - content: "\e514"; } +.fa-smoking-ban { + --fa: "\f54d"; } -.fa-basket-shopping::before { - content: "\f291"; } +.fa-terminal { + --fa: "\f120"; } -.fa-shopping-basket::before { - content: "\f291"; } +.fa-mobile-button { + --fa: "\f10b"; } -.fa-tape::before { - content: "\f4db"; } +.fa-house-medical-flag { + --fa: "\e514"; } -.fa-bus-simple::before { - content: "\f55e"; } +.fa-basket-shopping { + --fa: "\f291"; } -.fa-bus-alt::before { - content: "\f55e"; } +.fa-shopping-basket { + --fa: "\f291"; } -.fa-eye::before { - content: "\f06e"; } +.fa-tape { + --fa: "\f4db"; } -.fa-face-sad-cry::before { - content: "\f5b3"; } +.fa-bus-simple { + --fa: "\f55e"; } -.fa-sad-cry::before { - content: "\f5b3"; } +.fa-bus-alt { + --fa: "\f55e"; } -.fa-audio-description::before { - content: "\f29e"; } +.fa-eye { + --fa: "\f06e"; } -.fa-person-military-to-person::before { - content: "\e54c"; } +.fa-face-sad-cry { + --fa: "\f5b3"; } -.fa-file-shield::before { - content: "\e4f0"; } +.fa-sad-cry { + --fa: "\f5b3"; } -.fa-user-slash::before { - content: "\f506"; } +.fa-audio-description { + --fa: "\f29e"; } -.fa-pen::before { - content: "\f304"; } +.fa-person-military-to-person { + --fa: "\e54c"; } -.fa-tower-observation::before { - content: "\e586"; } +.fa-file-shield { + --fa: "\e4f0"; } -.fa-file-code::before { - content: "\f1c9"; } +.fa-user-slash { + --fa: "\f506"; } -.fa-signal::before { - content: "\f012"; } +.fa-pen { + --fa: "\f304"; } -.fa-signal-5::before { - content: "\f012"; } +.fa-tower-observation { + --fa: "\e586"; } -.fa-signal-perfect::before { - content: "\f012"; } +.fa-file-code { + --fa: "\f1c9"; } -.fa-bus::before { - content: "\f207"; } +.fa-signal { + --fa: "\f012"; } -.fa-heart-circle-xmark::before { - content: "\e501"; } +.fa-signal-5 { + --fa: "\f012"; } -.fa-house-chimney::before { - content: "\e3af"; } +.fa-signal-perfect { + --fa: "\f012"; } -.fa-home-lg::before { - content: "\e3af"; } +.fa-bus { + --fa: "\f207"; } -.fa-window-maximize::before { - content: "\f2d0"; } +.fa-heart-circle-xmark { + --fa: "\e501"; } -.fa-face-frown::before { - content: "\f119"; } +.fa-house-chimney { + --fa: "\e3af"; } -.fa-frown::before { - content: "\f119"; } +.fa-home-lg { + --fa: "\e3af"; } -.fa-prescription::before { - content: "\f5b1"; } +.fa-window-maximize { + --fa: "\f2d0"; } -.fa-shop::before { - content: "\f54f"; } +.fa-face-frown { + --fa: "\f119"; } -.fa-store-alt::before { - content: "\f54f"; } +.fa-frown { + --fa: "\f119"; } -.fa-floppy-disk::before { - content: "\f0c7"; } +.fa-prescription { + --fa: "\f5b1"; } -.fa-save::before { - content: "\f0c7"; } +.fa-shop { + --fa: "\f54f"; } -.fa-vihara::before { - content: "\f6a7"; } +.fa-store-alt { + --fa: "\f54f"; } -.fa-scale-unbalanced::before { - content: "\f515"; } +.fa-floppy-disk { + --fa: "\f0c7"; } -.fa-balance-scale-left::before { - content: "\f515"; } +.fa-save { + --fa: "\f0c7"; } -.fa-sort-up::before { - content: "\f0de"; } +.fa-vihara { + --fa: "\f6a7"; } -.fa-sort-asc::before { - content: "\f0de"; } +.fa-scale-unbalanced { + --fa: "\f515"; } -.fa-comment-dots::before { - content: "\f4ad"; } +.fa-balance-scale-left { + --fa: "\f515"; } -.fa-commenting::before { - content: "\f4ad"; } +.fa-sort-up { + --fa: "\f0de"; } -.fa-plant-wilt::before { - content: "\e5aa"; } +.fa-sort-asc { + --fa: "\f0de"; } -.fa-diamond::before { - content: "\f219"; } +.fa-comment-dots { + --fa: "\f4ad"; } -.fa-face-grin-squint::before { - content: "\f585"; } +.fa-commenting { + --fa: "\f4ad"; } -.fa-grin-squint::before { - content: "\f585"; } +.fa-plant-wilt { + --fa: "\e5aa"; } -.fa-hand-holding-dollar::before { - content: "\f4c0"; } +.fa-diamond { + --fa: "\f219"; } -.fa-hand-holding-usd::before { - content: "\f4c0"; } +.fa-face-grin-squint { + --fa: "\f585"; } -.fa-bacterium::before { - content: "\e05a"; } +.fa-grin-squint { + --fa: "\f585"; } -.fa-hand-pointer::before { - content: "\f25a"; } +.fa-hand-holding-dollar { + --fa: "\f4c0"; } -.fa-drum-steelpan::before { - content: "\f56a"; } +.fa-hand-holding-usd { + --fa: "\f4c0"; } -.fa-hand-scissors::before { - content: "\f257"; } +.fa-chart-diagram { + --fa: "\e695"; } -.fa-hands-praying::before { - content: "\f684"; } +.fa-bacterium { + --fa: "\e05a"; } -.fa-praying-hands::before { - content: "\f684"; } +.fa-hand-pointer { + --fa: "\f25a"; } -.fa-arrow-rotate-right::before { - content: "\f01e"; } +.fa-drum-steelpan { + --fa: "\f56a"; } -.fa-arrow-right-rotate::before { - content: "\f01e"; } +.fa-hand-scissors { + --fa: "\f257"; } -.fa-arrow-rotate-forward::before { - content: "\f01e"; } +.fa-hands-praying { + --fa: "\f684"; } -.fa-redo::before { - content: "\f01e"; } +.fa-praying-hands { + --fa: "\f684"; } -.fa-biohazard::before { - content: "\f780"; } +.fa-arrow-rotate-right { + --fa: "\f01e"; } -.fa-location-crosshairs::before { - content: "\f601"; } +.fa-arrow-right-rotate { + --fa: "\f01e"; } -.fa-location::before { - content: "\f601"; } +.fa-arrow-rotate-forward { + --fa: "\f01e"; } -.fa-mars-double::before { - content: "\f227"; } +.fa-redo { + --fa: "\f01e"; } -.fa-child-dress::before { - content: "\e59c"; } +.fa-biohazard { + --fa: "\f780"; } -.fa-users-between-lines::before { - content: "\e591"; } +.fa-location-crosshairs { + --fa: "\f601"; } -.fa-lungs-virus::before { - content: "\e067"; } +.fa-location { + --fa: "\f601"; } -.fa-face-grin-tears::before { - content: "\f588"; } +.fa-mars-double { + --fa: "\f227"; } -.fa-grin-tears::before { - content: "\f588"; } +.fa-child-dress { + --fa: "\e59c"; } -.fa-phone::before { - content: "\f095"; } +.fa-users-between-lines { + --fa: "\e591"; } -.fa-calendar-xmark::before { - content: "\f273"; } +.fa-lungs-virus { + --fa: "\e067"; } -.fa-calendar-times::before { - content: "\f273"; } +.fa-face-grin-tears { + --fa: "\f588"; } -.fa-child-reaching::before { - content: "\e59d"; } +.fa-grin-tears { + --fa: "\f588"; } -.fa-head-side-virus::before { - content: "\e064"; } +.fa-phone { + --fa: "\f095"; } -.fa-user-gear::before { - content: "\f4fe"; } +.fa-calendar-xmark { + --fa: "\f273"; } -.fa-user-cog::before { - content: "\f4fe"; } +.fa-calendar-times { + --fa: "\f273"; } -.fa-arrow-up-1-9::before { - content: "\f163"; } +.fa-child-reaching { + --fa: "\e59d"; } -.fa-sort-numeric-up::before { - content: "\f163"; } +.fa-head-side-virus { + --fa: "\e064"; } -.fa-door-closed::before { - content: "\f52a"; } +.fa-user-gear { + --fa: "\f4fe"; } -.fa-shield-virus::before { - content: "\e06c"; } +.fa-user-cog { + --fa: "\f4fe"; } -.fa-dice-six::before { - content: "\f526"; } +.fa-arrow-up-1-9 { + --fa: "\f163"; } -.fa-mosquito-net::before { - content: "\e52c"; } +.fa-sort-numeric-up { + --fa: "\f163"; } -.fa-bridge-water::before { - content: "\e4ce"; } +.fa-door-closed { + --fa: "\f52a"; } -.fa-person-booth::before { - content: "\f756"; } +.fa-shield-virus { + --fa: "\e06c"; } -.fa-text-width::before { - content: "\f035"; } +.fa-dice-six { + --fa: "\f526"; } -.fa-hat-wizard::before { - content: "\f6e8"; } +.fa-mosquito-net { + --fa: "\e52c"; } -.fa-pen-fancy::before { - content: "\f5ac"; } +.fa-file-fragment { + --fa: "\e697"; } -.fa-person-digging::before { - content: "\f85e"; } +.fa-bridge-water { + --fa: "\e4ce"; } -.fa-digging::before { - content: "\f85e"; } +.fa-person-booth { + --fa: "\f756"; } -.fa-trash::before { - content: "\f1f8"; } +.fa-text-width { + --fa: "\f035"; } -.fa-gauge-simple::before { - content: "\f629"; } +.fa-hat-wizard { + --fa: "\f6e8"; } -.fa-gauge-simple-med::before { - content: "\f629"; } +.fa-pen-fancy { + --fa: "\f5ac"; } -.fa-tachometer-average::before { - content: "\f629"; } +.fa-person-digging { + --fa: "\f85e"; } -.fa-book-medical::before { - content: "\f7e6"; } +.fa-digging { + --fa: "\f85e"; } -.fa-poo::before { - content: "\f2fe"; } +.fa-trash { + --fa: "\f1f8"; } -.fa-quote-right::before { - content: "\f10e"; } +.fa-gauge-simple { + --fa: "\f629"; } -.fa-quote-right-alt::before { - content: "\f10e"; } +.fa-gauge-simple-med { + --fa: "\f629"; } -.fa-shirt::before { - content: "\f553"; } +.fa-tachometer-average { + --fa: "\f629"; } -.fa-t-shirt::before { - content: "\f553"; } +.fa-book-medical { + --fa: "\f7e6"; } -.fa-tshirt::before { - content: "\f553"; } +.fa-poo { + --fa: "\f2fe"; } -.fa-cubes::before { - content: "\f1b3"; } +.fa-quote-right { + --fa: "\f10e"; } -.fa-divide::before { - content: "\f529"; } +.fa-quote-right-alt { + --fa: "\f10e"; } -.fa-tenge-sign::before { - content: "\f7d7"; } +.fa-shirt { + --fa: "\f553"; } -.fa-tenge::before { - content: "\f7d7"; } +.fa-t-shirt { + --fa: "\f553"; } -.fa-headphones::before { - content: "\f025"; } +.fa-tshirt { + --fa: "\f553"; } -.fa-hands-holding::before { - content: "\f4c2"; } +.fa-cubes { + --fa: "\f1b3"; } -.fa-hands-clapping::before { - content: "\e1a8"; } +.fa-divide { + --fa: "\f529"; } -.fa-republican::before { - content: "\f75e"; } +.fa-tenge-sign { + --fa: "\f7d7"; } -.fa-arrow-left::before { - content: "\f060"; } +.fa-tenge { + --fa: "\f7d7"; } -.fa-person-circle-xmark::before { - content: "\e543"; } +.fa-headphones { + --fa: "\f025"; } -.fa-ruler::before { - content: "\f545"; } +.fa-hands-holding { + --fa: "\f4c2"; } -.fa-align-left::before { - content: "\f036"; } +.fa-hands-clapping { + --fa: "\e1a8"; } -.fa-dice-d6::before { - content: "\f6d1"; } +.fa-republican { + --fa: "\f75e"; } -.fa-restroom::before { - content: "\f7bd"; } +.fa-arrow-left { + --fa: "\f060"; } -.fa-j::before { - content: "\4a"; } +.fa-person-circle-xmark { + --fa: "\e543"; } -.fa-users-viewfinder::before { - content: "\e595"; } +.fa-ruler { + --fa: "\f545"; } -.fa-file-video::before { - content: "\f1c8"; } +.fa-align-left { + --fa: "\f036"; } -.fa-up-right-from-square::before { - content: "\f35d"; } +.fa-dice-d6 { + --fa: "\f6d1"; } -.fa-external-link-alt::before { - content: "\f35d"; } +.fa-restroom { + --fa: "\f7bd"; } -.fa-table-cells::before { - content: "\f00a"; } +.fa-j { + --fa: "\4a"; } -.fa-th::before { - content: "\f00a"; } +.fa-users-viewfinder { + --fa: "\e595"; } -.fa-file-pdf::before { - content: "\f1c1"; } +.fa-file-video { + --fa: "\f1c8"; } -.fa-book-bible::before { - content: "\f647"; } +.fa-up-right-from-square { + --fa: "\f35d"; } -.fa-bible::before { - content: "\f647"; } +.fa-external-link-alt { + --fa: "\f35d"; } -.fa-o::before { - content: "\4f"; } +.fa-table-cells { + --fa: "\f00a"; } -.fa-suitcase-medical::before { - content: "\f0fa"; } +.fa-th { + --fa: "\f00a"; } -.fa-medkit::before { - content: "\f0fa"; } +.fa-file-pdf { + --fa: "\f1c1"; } -.fa-user-secret::before { - content: "\f21b"; } +.fa-book-bible { + --fa: "\f647"; } -.fa-otter::before { - content: "\f700"; } +.fa-bible { + --fa: "\f647"; } -.fa-person-dress::before { - content: "\f182"; } +.fa-o { + --fa: "\4f"; } -.fa-female::before { - content: "\f182"; } +.fa-suitcase-medical { + --fa: "\f0fa"; } -.fa-comment-dollar::before { - content: "\f651"; } +.fa-medkit { + --fa: "\f0fa"; } -.fa-business-time::before { - content: "\f64a"; } +.fa-user-secret { + --fa: "\f21b"; } -.fa-briefcase-clock::before { - content: "\f64a"; } +.fa-otter { + --fa: "\f700"; } -.fa-table-cells-large::before { - content: "\f009"; } +.fa-person-dress { + --fa: "\f182"; } -.fa-th-large::before { - content: "\f009"; } +.fa-female { + --fa: "\f182"; } -.fa-book-tanakh::before { - content: "\f827"; } +.fa-comment-dollar { + --fa: "\f651"; } -.fa-tanakh::before { - content: "\f827"; } +.fa-business-time { + --fa: "\f64a"; } -.fa-phone-volume::before { - content: "\f2a0"; } +.fa-briefcase-clock { + --fa: "\f64a"; } -.fa-volume-control-phone::before { - content: "\f2a0"; } +.fa-table-cells-large { + --fa: "\f009"; } -.fa-hat-cowboy-side::before { - content: "\f8c1"; } +.fa-th-large { + --fa: "\f009"; } -.fa-clipboard-user::before { - content: "\f7f3"; } +.fa-book-tanakh { + --fa: "\f827"; } -.fa-child::before { - content: "\f1ae"; } +.fa-tanakh { + --fa: "\f827"; } -.fa-lira-sign::before { - content: "\f195"; } +.fa-phone-volume { + --fa: "\f2a0"; } -.fa-satellite::before { - content: "\f7bf"; } +.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa-plane-lock::before { - content: "\e558"; } +.fa-hat-cowboy-side { + --fa: "\f8c1"; } -.fa-tag::before { - content: "\f02b"; } +.fa-clipboard-user { + --fa: "\f7f3"; } -.fa-comment::before { - content: "\f075"; } +.fa-child { + --fa: "\f1ae"; } -.fa-cake-candles::before { - content: "\f1fd"; } +.fa-lira-sign { + --fa: "\f195"; } -.fa-birthday-cake::before { - content: "\f1fd"; } +.fa-satellite { + --fa: "\f7bf"; } -.fa-cake::before { - content: "\f1fd"; } +.fa-plane-lock { + --fa: "\e558"; } -.fa-envelope::before { - content: "\f0e0"; } +.fa-tag { + --fa: "\f02b"; } -.fa-angles-up::before { - content: "\f102"; } +.fa-comment { + --fa: "\f075"; } -.fa-angle-double-up::before { - content: "\f102"; } +.fa-cake-candles { + --fa: "\f1fd"; } -.fa-paperclip::before { - content: "\f0c6"; } +.fa-birthday-cake { + --fa: "\f1fd"; } -.fa-arrow-right-to-city::before { - content: "\e4b3"; } +.fa-cake { + --fa: "\f1fd"; } -.fa-ribbon::before { - content: "\f4d6"; } +.fa-envelope { + --fa: "\f0e0"; } -.fa-lungs::before { - content: "\f604"; } +.fa-angles-up { + --fa: "\f102"; } -.fa-arrow-up-9-1::before { - content: "\f887"; } +.fa-angle-double-up { + --fa: "\f102"; } -.fa-sort-numeric-up-alt::before { - content: "\f887"; } +.fa-paperclip { + --fa: "\f0c6"; } -.fa-litecoin-sign::before { - content: "\e1d3"; } +.fa-arrow-right-to-city { + --fa: "\e4b3"; } -.fa-border-none::before { - content: "\f850"; } +.fa-ribbon { + --fa: "\f4d6"; } -.fa-circle-nodes::before { - content: "\e4e2"; } +.fa-lungs { + --fa: "\f604"; } -.fa-parachute-box::before { - content: "\f4cd"; } +.fa-arrow-up-9-1 { + --fa: "\f887"; } -.fa-indent::before { - content: "\f03c"; } +.fa-sort-numeric-up-alt { + --fa: "\f887"; } -.fa-truck-field-un::before { - content: "\e58e"; } +.fa-litecoin-sign { + --fa: "\e1d3"; } -.fa-hourglass::before { - content: "\f254"; } +.fa-border-none { + --fa: "\f850"; } -.fa-hourglass-empty::before { - content: "\f254"; } +.fa-circle-nodes { + --fa: "\e4e2"; } -.fa-mountain::before { - content: "\f6fc"; } +.fa-parachute-box { + --fa: "\f4cd"; } -.fa-user-doctor::before { - content: "\f0f0"; } +.fa-indent { + --fa: "\f03c"; } -.fa-user-md::before { - content: "\f0f0"; } +.fa-truck-field-un { + --fa: "\e58e"; } -.fa-circle-info::before { - content: "\f05a"; } +.fa-hourglass { + --fa: "\f254"; } -.fa-info-circle::before { - content: "\f05a"; } +.fa-hourglass-empty { + --fa: "\f254"; } -.fa-cloud-meatball::before { - content: "\f73b"; } +.fa-mountain { + --fa: "\f6fc"; } -.fa-camera::before { - content: "\f030"; } +.fa-user-doctor { + --fa: "\f0f0"; } -.fa-camera-alt::before { - content: "\f030"; } +.fa-user-md { + --fa: "\f0f0"; } -.fa-square-virus::before { - content: "\e578"; } +.fa-circle-info { + --fa: "\f05a"; } -.fa-meteor::before { - content: "\f753"; } +.fa-info-circle { + --fa: "\f05a"; } -.fa-car-on::before { - content: "\e4dd"; } +.fa-cloud-meatball { + --fa: "\f73b"; } -.fa-sleigh::before { - content: "\f7cc"; } +.fa-camera { + --fa: "\f030"; } -.fa-arrow-down-1-9::before { - content: "\f162"; } +.fa-camera-alt { + --fa: "\f030"; } -.fa-sort-numeric-asc::before { - content: "\f162"; } +.fa-square-virus { + --fa: "\e578"; } -.fa-sort-numeric-down::before { - content: "\f162"; } +.fa-meteor { + --fa: "\f753"; } -.fa-hand-holding-droplet::before { - content: "\f4c1"; } +.fa-car-on { + --fa: "\e4dd"; } -.fa-hand-holding-water::before { - content: "\f4c1"; } +.fa-sleigh { + --fa: "\f7cc"; } -.fa-water::before { - content: "\f773"; } +.fa-arrow-down-1-9 { + --fa: "\f162"; } -.fa-calendar-check::before { - content: "\f274"; } +.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa-braille::before { - content: "\f2a1"; } +.fa-sort-numeric-down { + --fa: "\f162"; } -.fa-prescription-bottle-medical::before { - content: "\f486"; } +.fa-hand-holding-droplet { + --fa: "\f4c1"; } -.fa-prescription-bottle-alt::before { - content: "\f486"; } +.fa-hand-holding-water { + --fa: "\f4c1"; } -.fa-landmark::before { - content: "\f66f"; } +.fa-water { + --fa: "\f773"; } -.fa-truck::before { - content: "\f0d1"; } +.fa-calendar-check { + --fa: "\f274"; } -.fa-crosshairs::before { - content: "\f05b"; } +.fa-braille { + --fa: "\f2a1"; } -.fa-person-cane::before { - content: "\e53c"; } +.fa-prescription-bottle-medical { + --fa: "\f486"; } -.fa-tent::before { - content: "\e57d"; } +.fa-prescription-bottle-alt { + --fa: "\f486"; } -.fa-vest-patches::before { - content: "\e086"; } +.fa-landmark { + --fa: "\f66f"; } -.fa-check-double::before { - content: "\f560"; } +.fa-truck { + --fa: "\f0d1"; } -.fa-arrow-down-a-z::before { - content: "\f15d"; } +.fa-crosshairs { + --fa: "\f05b"; } -.fa-sort-alpha-asc::before { - content: "\f15d"; } +.fa-person-cane { + --fa: "\e53c"; } -.fa-sort-alpha-down::before { - content: "\f15d"; } +.fa-tent { + --fa: "\e57d"; } -.fa-money-bill-wheat::before { - content: "\e52a"; } +.fa-vest-patches { + --fa: "\e086"; } -.fa-cookie::before { - content: "\f563"; } +.fa-check-double { + --fa: "\f560"; } -.fa-arrow-rotate-left::before { - content: "\f0e2"; } +.fa-arrow-down-a-z { + --fa: "\f15d"; } -.fa-arrow-left-rotate::before { - content: "\f0e2"; } +.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa-arrow-rotate-back::before { - content: "\f0e2"; } +.fa-sort-alpha-down { + --fa: "\f15d"; } -.fa-arrow-rotate-backward::before { - content: "\f0e2"; } +.fa-money-bill-wheat { + --fa: "\e52a"; } -.fa-undo::before { - content: "\f0e2"; } +.fa-cookie { + --fa: "\f563"; } -.fa-hard-drive::before { - content: "\f0a0"; } +.fa-arrow-rotate-left { + --fa: "\f0e2"; } -.fa-hdd::before { - content: "\f0a0"; } +.fa-arrow-left-rotate { + --fa: "\f0e2"; } -.fa-face-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-back { + --fa: "\f0e2"; } -.fa-grin-squint-tears::before { - content: "\f586"; } +.fa-arrow-rotate-backward { + --fa: "\f0e2"; } -.fa-dumbbell::before { - content: "\f44b"; } +.fa-undo { + --fa: "\f0e2"; } -.fa-rectangle-list::before { - content: "\f022"; } +.fa-hard-drive { + --fa: "\f0a0"; } -.fa-list-alt::before { - content: "\f022"; } +.fa-hdd { + --fa: "\f0a0"; } -.fa-tarp-droplet::before { - content: "\e57c"; } +.fa-face-grin-squint-tears { + --fa: "\f586"; } -.fa-house-medical-circle-check::before { - content: "\e511"; } +.fa-grin-squint-tears { + --fa: "\f586"; } -.fa-person-skiing-nordic::before { - content: "\f7ca"; } +.fa-dumbbell { + --fa: "\f44b"; } -.fa-skiing-nordic::before { - content: "\f7ca"; } +.fa-rectangle-list { + --fa: "\f022"; } -.fa-calendar-plus::before { - content: "\f271"; } +.fa-list-alt { + --fa: "\f022"; } -.fa-plane-arrival::before { - content: "\f5af"; } +.fa-tarp-droplet { + --fa: "\e57c"; } -.fa-circle-left::before { - content: "\f359"; } +.fa-house-medical-circle-check { + --fa: "\e511"; } -.fa-arrow-alt-circle-left::before { - content: "\f359"; } +.fa-person-skiing-nordic { + --fa: "\f7ca"; } -.fa-train-subway::before { - content: "\f239"; } +.fa-skiing-nordic { + --fa: "\f7ca"; } -.fa-subway::before { - content: "\f239"; } +.fa-calendar-plus { + --fa: "\f271"; } -.fa-chart-gantt::before { - content: "\e0e4"; } +.fa-plane-arrival { + --fa: "\f5af"; } -.fa-indian-rupee-sign::before { - content: "\e1bc"; } +.fa-circle-left { + --fa: "\f359"; } -.fa-indian-rupee::before { - content: "\e1bc"; } +.fa-arrow-alt-circle-left { + --fa: "\f359"; } -.fa-inr::before { - content: "\e1bc"; } +.fa-train-subway { + --fa: "\f239"; } -.fa-crop-simple::before { - content: "\f565"; } +.fa-subway { + --fa: "\f239"; } -.fa-crop-alt::before { - content: "\f565"; } +.fa-chart-gantt { + --fa: "\e0e4"; } -.fa-money-bill-1::before { - content: "\f3d1"; } +.fa-indian-rupee-sign { + --fa: "\e1bc"; } -.fa-money-bill-alt::before { - content: "\f3d1"; } +.fa-indian-rupee { + --fa: "\e1bc"; } -.fa-left-long::before { - content: "\f30a"; } +.fa-inr { + --fa: "\e1bc"; } -.fa-long-arrow-alt-left::before { - content: "\f30a"; } +.fa-crop-simple { + --fa: "\f565"; } -.fa-dna::before { - content: "\f471"; } +.fa-crop-alt { + --fa: "\f565"; } -.fa-virus-slash::before { - content: "\e075"; } +.fa-money-bill-1 { + --fa: "\f3d1"; } -.fa-minus::before { - content: "\f068"; } +.fa-money-bill-alt { + --fa: "\f3d1"; } -.fa-subtract::before { - content: "\f068"; } +.fa-left-long { + --fa: "\f30a"; } -.fa-chess::before { - content: "\f439"; } +.fa-long-arrow-alt-left { + --fa: "\f30a"; } -.fa-arrow-left-long::before { - content: "\f177"; } +.fa-dna { + --fa: "\f471"; } -.fa-long-arrow-left::before { - content: "\f177"; } +.fa-virus-slash { + --fa: "\e075"; } -.fa-plug-circle-check::before { - content: "\e55c"; } +.fa-minus { + --fa: "\f068"; } -.fa-street-view::before { - content: "\f21d"; } +.fa-subtract { + --fa: "\f068"; } -.fa-franc-sign::before { - content: "\e18f"; } +.fa-chess { + --fa: "\f439"; } -.fa-volume-off::before { - content: "\f026"; } +.fa-arrow-left-long { + --fa: "\f177"; } -.fa-hands-asl-interpreting::before { - content: "\f2a3"; } +.fa-long-arrow-left { + --fa: "\f177"; } -.fa-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-plug-circle-check { + --fa: "\e55c"; } -.fa-asl-interpreting::before { - content: "\f2a3"; } +.fa-street-view { + --fa: "\f21d"; } -.fa-hands-american-sign-language-interpreting::before { - content: "\f2a3"; } +.fa-franc-sign { + --fa: "\e18f"; } -.fa-gear::before { - content: "\f013"; } +.fa-volume-off { + --fa: "\f026"; } -.fa-cog::before { - content: "\f013"; } +.fa-hands-asl-interpreting { + --fa: "\f2a3"; } -.fa-droplet-slash::before { - content: "\f5c7"; } +.fa-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-tint-slash::before { - content: "\f5c7"; } +.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa-mosque::before { - content: "\f678"; } +.fa-hands-american-sign-language-interpreting { + --fa: "\f2a3"; } -.fa-mosquito::before { - content: "\e52b"; } +.fa-gear { + --fa: "\f013"; } -.fa-star-of-david::before { - content: "\f69a"; } +.fa-cog { + --fa: "\f013"; } -.fa-person-military-rifle::before { - content: "\e54b"; } +.fa-droplet-slash { + --fa: "\f5c7"; } -.fa-cart-shopping::before { - content: "\f07a"; } +.fa-tint-slash { + --fa: "\f5c7"; } -.fa-shopping-cart::before { - content: "\f07a"; } +.fa-mosque { + --fa: "\f678"; } -.fa-vials::before { - content: "\f493"; } +.fa-mosquito { + --fa: "\e52b"; } -.fa-plug-circle-plus::before { - content: "\e55f"; } +.fa-star-of-david { + --fa: "\f69a"; } -.fa-place-of-worship::before { - content: "\f67f"; } +.fa-person-military-rifle { + --fa: "\e54b"; } -.fa-grip-vertical::before { - content: "\f58e"; } +.fa-cart-shopping { + --fa: "\f07a"; } -.fa-arrow-turn-up::before { - content: "\f148"; } +.fa-shopping-cart { + --fa: "\f07a"; } -.fa-level-up::before { - content: "\f148"; } +.fa-vials { + --fa: "\f493"; } -.fa-u::before { - content: "\55"; } +.fa-plug-circle-plus { + --fa: "\e55f"; } -.fa-square-root-variable::before { - content: "\f698"; } +.fa-place-of-worship { + --fa: "\f67f"; } -.fa-square-root-alt::before { - content: "\f698"; } +.fa-grip-vertical { + --fa: "\f58e"; } -.fa-clock::before { - content: "\f017"; } +.fa-hexagon-nodes { + --fa: "\e699"; } -.fa-clock-four::before { - content: "\f017"; } +.fa-arrow-turn-up { + --fa: "\f148"; } -.fa-backward-step::before { - content: "\f048"; } +.fa-level-up { + --fa: "\f148"; } -.fa-step-backward::before { - content: "\f048"; } +.fa-u { + --fa: "\55"; } -.fa-pallet::before { - content: "\f482"; } +.fa-square-root-variable { + --fa: "\f698"; } -.fa-faucet::before { - content: "\e005"; } +.fa-square-root-alt { + --fa: "\f698"; } -.fa-baseball-bat-ball::before { - content: "\f432"; } +.fa-clock { + --fa: "\f017"; } -.fa-s::before { - content: "\53"; } +.fa-clock-four { + --fa: "\f017"; } -.fa-timeline::before { - content: "\e29c"; } +.fa-backward-step { + --fa: "\f048"; } -.fa-keyboard::before { - content: "\f11c"; } +.fa-step-backward { + --fa: "\f048"; } -.fa-caret-down::before { - content: "\f0d7"; } +.fa-pallet { + --fa: "\f482"; } -.fa-house-chimney-medical::before { - content: "\f7f2"; } +.fa-faucet { + --fa: "\e005"; } -.fa-clinic-medical::before { - content: "\f7f2"; } +.fa-baseball-bat-ball { + --fa: "\f432"; } -.fa-temperature-three-quarters::before { - content: "\f2c8"; } +.fa-s { + --fa: "\53"; } -.fa-temperature-3::before { - content: "\f2c8"; } +.fa-timeline { + --fa: "\e29c"; } -.fa-thermometer-3::before { - content: "\f2c8"; } +.fa-keyboard { + --fa: "\f11c"; } -.fa-thermometer-three-quarters::before { - content: "\f2c8"; } +.fa-caret-down { + --fa: "\f0d7"; } -.fa-mobile-screen::before { - content: "\f3cf"; } +.fa-house-chimney-medical { + --fa: "\f7f2"; } -.fa-mobile-android-alt::before { - content: "\f3cf"; } +.fa-clinic-medical { + --fa: "\f7f2"; } -.fa-plane-up::before { - content: "\e22d"; } +.fa-temperature-three-quarters { + --fa: "\f2c8"; } -.fa-piggy-bank::before { - content: "\f4d3"; } +.fa-temperature-3 { + --fa: "\f2c8"; } -.fa-battery-half::before { - content: "\f242"; } +.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa-battery-3::before { - content: "\f242"; } +.fa-thermometer-three-quarters { + --fa: "\f2c8"; } -.fa-mountain-city::before { - content: "\e52e"; } +.fa-mobile-screen { + --fa: "\f3cf"; } -.fa-coins::before { - content: "\f51e"; } +.fa-mobile-android-alt { + --fa: "\f3cf"; } -.fa-khanda::before { - content: "\f66d"; } +.fa-plane-up { + --fa: "\e22d"; } -.fa-sliders::before { - content: "\f1de"; } +.fa-piggy-bank { + --fa: "\f4d3"; } -.fa-sliders-h::before { - content: "\f1de"; } +.fa-battery-half { + --fa: "\f242"; } -.fa-folder-tree::before { - content: "\f802"; } +.fa-battery-3 { + --fa: "\f242"; } -.fa-network-wired::before { - content: "\f6ff"; } +.fa-mountain-city { + --fa: "\e52e"; } -.fa-map-pin::before { - content: "\f276"; } +.fa-coins { + --fa: "\f51e"; } -.fa-hamsa::before { - content: "\f665"; } +.fa-khanda { + --fa: "\f66d"; } -.fa-cent-sign::before { - content: "\e3f5"; } +.fa-sliders { + --fa: "\f1de"; } -.fa-flask::before { - content: "\f0c3"; } +.fa-sliders-h { + --fa: "\f1de"; } -.fa-person-pregnant::before { - content: "\e31e"; } +.fa-folder-tree { + --fa: "\f802"; } -.fa-wand-sparkles::before { - content: "\f72b"; } +.fa-network-wired { + --fa: "\f6ff"; } -.fa-ellipsis-vertical::before { - content: "\f142"; } +.fa-map-pin { + --fa: "\f276"; } -.fa-ellipsis-v::before { - content: "\f142"; } +.fa-hamsa { + --fa: "\f665"; } -.fa-ticket::before { - content: "\f145"; } +.fa-cent-sign { + --fa: "\e3f5"; } -.fa-power-off::before { - content: "\f011"; } +.fa-flask { + --fa: "\f0c3"; } -.fa-right-long::before { - content: "\f30b"; } +.fa-person-pregnant { + --fa: "\e31e"; } -.fa-long-arrow-alt-right::before { - content: "\f30b"; } +.fa-wand-sparkles { + --fa: "\f72b"; } -.fa-flag-usa::before { - content: "\f74d"; } +.fa-ellipsis-vertical { + --fa: "\f142"; } -.fa-laptop-file::before { - content: "\e51d"; } +.fa-ellipsis-v { + --fa: "\f142"; } -.fa-tty::before { - content: "\f1e4"; } +.fa-ticket { + --fa: "\f145"; } -.fa-teletype::before { - content: "\f1e4"; } +.fa-power-off { + --fa: "\f011"; } -.fa-diagram-next::before { - content: "\e476"; } +.fa-right-long { + --fa: "\f30b"; } -.fa-person-rifle::before { - content: "\e54e"; } +.fa-long-arrow-alt-right { + --fa: "\f30b"; } -.fa-house-medical-circle-exclamation::before { - content: "\e512"; } +.fa-flag-usa { + --fa: "\f74d"; } -.fa-closed-captioning::before { - content: "\f20a"; } +.fa-laptop-file { + --fa: "\e51d"; } -.fa-person-hiking::before { - content: "\f6ec"; } +.fa-tty { + --fa: "\f1e4"; } -.fa-hiking::before { - content: "\f6ec"; } +.fa-teletype { + --fa: "\f1e4"; } -.fa-venus-double::before { - content: "\f226"; } +.fa-diagram-next { + --fa: "\e476"; } -.fa-images::before { - content: "\f302"; } +.fa-person-rifle { + --fa: "\e54e"; } -.fa-calculator::before { - content: "\f1ec"; } +.fa-house-medical-circle-exclamation { + --fa: "\e512"; } -.fa-people-pulling::before { - content: "\e535"; } +.fa-closed-captioning { + --fa: "\f20a"; } -.fa-n::before { - content: "\4e"; } +.fa-person-hiking { + --fa: "\f6ec"; } -.fa-cable-car::before { - content: "\f7da"; } +.fa-hiking { + --fa: "\f6ec"; } -.fa-tram::before { - content: "\f7da"; } +.fa-venus-double { + --fa: "\f226"; } -.fa-cloud-rain::before { - content: "\f73d"; } +.fa-images { + --fa: "\f302"; } -.fa-building-circle-xmark::before { - content: "\e4d4"; } +.fa-calculator { + --fa: "\f1ec"; } -.fa-ship::before { - content: "\f21a"; } +.fa-people-pulling { + --fa: "\e535"; } -.fa-arrows-down-to-line::before { - content: "\e4b8"; } +.fa-n { + --fa: "\4e"; } -.fa-download::before { - content: "\f019"; } +.fa-cable-car { + --fa: "\f7da"; } -.fa-face-grin::before { - content: "\f580"; } +.fa-tram { + --fa: "\f7da"; } -.fa-grin::before { - content: "\f580"; } +.fa-cloud-rain { + --fa: "\f73d"; } -.fa-delete-left::before { - content: "\f55a"; } +.fa-building-circle-xmark { + --fa: "\e4d4"; } -.fa-backspace::before { - content: "\f55a"; } +.fa-ship { + --fa: "\f21a"; } -.fa-eye-dropper::before { - content: "\f1fb"; } +.fa-arrows-down-to-line { + --fa: "\e4b8"; } -.fa-eye-dropper-empty::before { - content: "\f1fb"; } +.fa-download { + --fa: "\f019"; } -.fa-eyedropper::before { - content: "\f1fb"; } +.fa-face-grin { + --fa: "\f580"; } -.fa-file-circle-check::before { - content: "\e5a0"; } +.fa-grin { + --fa: "\f580"; } -.fa-forward::before { - content: "\f04e"; } +.fa-delete-left { + --fa: "\f55a"; } -.fa-mobile::before { - content: "\f3ce"; } +.fa-backspace { + --fa: "\f55a"; } -.fa-mobile-android::before { - content: "\f3ce"; } +.fa-eye-dropper { + --fa: "\f1fb"; } -.fa-mobile-phone::before { - content: "\f3ce"; } +.fa-eye-dropper-empty { + --fa: "\f1fb"; } -.fa-face-meh::before { - content: "\f11a"; } +.fa-eyedropper { + --fa: "\f1fb"; } -.fa-meh::before { - content: "\f11a"; } +.fa-file-circle-check { + --fa: "\e5a0"; } -.fa-align-center::before { - content: "\f037"; } +.fa-forward { + --fa: "\f04e"; } -.fa-book-skull::before { - content: "\f6b7"; } +.fa-mobile { + --fa: "\f3ce"; } -.fa-book-dead::before { - content: "\f6b7"; } +.fa-mobile-android { + --fa: "\f3ce"; } -.fa-id-card::before { - content: "\f2c2"; } +.fa-mobile-phone { + --fa: "\f3ce"; } -.fa-drivers-license::before { - content: "\f2c2"; } +.fa-face-meh { + --fa: "\f11a"; } -.fa-outdent::before { - content: "\f03b"; } +.fa-meh { + --fa: "\f11a"; } -.fa-dedent::before { - content: "\f03b"; } +.fa-align-center { + --fa: "\f037"; } -.fa-heart-circle-exclamation::before { - content: "\e4fe"; } +.fa-book-skull { + --fa: "\f6b7"; } -.fa-house::before { - content: "\f015"; } +.fa-book-dead { + --fa: "\f6b7"; } -.fa-home::before { - content: "\f015"; } +.fa-id-card { + --fa: "\f2c2"; } -.fa-home-alt::before { - content: "\f015"; } +.fa-drivers-license { + --fa: "\f2c2"; } -.fa-home-lg-alt::before { - content: "\f015"; } +.fa-outdent { + --fa: "\f03b"; } -.fa-calendar-week::before { - content: "\f784"; } +.fa-dedent { + --fa: "\f03b"; } -.fa-laptop-medical::before { - content: "\f812"; } +.fa-heart-circle-exclamation { + --fa: "\e4fe"; } -.fa-b::before { - content: "\42"; } +.fa-house { + --fa: "\f015"; } -.fa-file-medical::before { - content: "\f477"; } +.fa-home { + --fa: "\f015"; } -.fa-dice-one::before { - content: "\f525"; } +.fa-home-alt { + --fa: "\f015"; } -.fa-kiwi-bird::before { - content: "\f535"; } +.fa-home-lg-alt { + --fa: "\f015"; } -.fa-arrow-right-arrow-left::before { - content: "\f0ec"; } +.fa-calendar-week { + --fa: "\f784"; } -.fa-exchange::before { - content: "\f0ec"; } +.fa-laptop-medical { + --fa: "\f812"; } -.fa-rotate-right::before { - content: "\f2f9"; } +.fa-b { + --fa: "\42"; } -.fa-redo-alt::before { - content: "\f2f9"; } +.fa-file-medical { + --fa: "\f477"; } -.fa-rotate-forward::before { - content: "\f2f9"; } +.fa-dice-one { + --fa: "\f525"; } -.fa-utensils::before { - content: "\f2e7"; } +.fa-kiwi-bird { + --fa: "\f535"; } -.fa-cutlery::before { - content: "\f2e7"; } +.fa-arrow-right-arrow-left { + --fa: "\f0ec"; } -.fa-arrow-up-wide-short::before { - content: "\f161"; } +.fa-exchange { + --fa: "\f0ec"; } -.fa-sort-amount-up::before { - content: "\f161"; } +.fa-rotate-right { + --fa: "\f2f9"; } -.fa-mill-sign::before { - content: "\e1ed"; } +.fa-redo-alt { + --fa: "\f2f9"; } -.fa-bowl-rice::before { - content: "\e2eb"; } +.fa-rotate-forward { + --fa: "\f2f9"; } -.fa-skull::before { - content: "\f54c"; } +.fa-utensils { + --fa: "\f2e7"; } -.fa-tower-broadcast::before { - content: "\f519"; } +.fa-cutlery { + --fa: "\f2e7"; } -.fa-broadcast-tower::before { - content: "\f519"; } +.fa-arrow-up-wide-short { + --fa: "\f161"; } -.fa-truck-pickup::before { - content: "\f63c"; } +.fa-sort-amount-up { + --fa: "\f161"; } -.fa-up-long::before { - content: "\f30c"; } +.fa-mill-sign { + --fa: "\e1ed"; } -.fa-long-arrow-alt-up::before { - content: "\f30c"; } +.fa-bowl-rice { + --fa: "\e2eb"; } -.fa-stop::before { - content: "\f04d"; } +.fa-skull { + --fa: "\f54c"; } -.fa-code-merge::before { - content: "\f387"; } +.fa-tower-broadcast { + --fa: "\f519"; } -.fa-upload::before { - content: "\f093"; } +.fa-broadcast-tower { + --fa: "\f519"; } -.fa-hurricane::before { - content: "\f751"; } +.fa-truck-pickup { + --fa: "\f63c"; } -.fa-mound::before { - content: "\e52d"; } +.fa-up-long { + --fa: "\f30c"; } -.fa-toilet-portable::before { - content: "\e583"; } +.fa-long-arrow-alt-up { + --fa: "\f30c"; } -.fa-compact-disc::before { - content: "\f51f"; } +.fa-stop { + --fa: "\f04d"; } -.fa-file-arrow-down::before { - content: "\f56d"; } +.fa-code-merge { + --fa: "\f387"; } -.fa-file-download::before { - content: "\f56d"; } +.fa-upload { + --fa: "\f093"; } -.fa-caravan::before { - content: "\f8ff"; } +.fa-hurricane { + --fa: "\f751"; } -.fa-shield-cat::before { - content: "\e572"; } +.fa-mound { + --fa: "\e52d"; } -.fa-bolt::before { - content: "\f0e7"; } +.fa-toilet-portable { + --fa: "\e583"; } -.fa-zap::before { - content: "\f0e7"; } +.fa-compact-disc { + --fa: "\f51f"; } -.fa-glass-water::before { - content: "\e4f4"; } +.fa-file-arrow-down { + --fa: "\f56d"; } -.fa-oil-well::before { - content: "\e532"; } +.fa-file-download { + --fa: "\f56d"; } -.fa-vault::before { - content: "\e2c5"; } +.fa-caravan { + --fa: "\f8ff"; } -.fa-mars::before { - content: "\f222"; } +.fa-shield-cat { + --fa: "\e572"; } -.fa-toilet::before { - content: "\f7d8"; } +.fa-bolt { + --fa: "\f0e7"; } -.fa-plane-circle-xmark::before { - content: "\e557"; } +.fa-zap { + --fa: "\f0e7"; } -.fa-yen-sign::before { - content: "\f157"; } +.fa-glass-water { + --fa: "\e4f4"; } -.fa-cny::before { - content: "\f157"; } +.fa-oil-well { + --fa: "\e532"; } -.fa-jpy::before { - content: "\f157"; } +.fa-vault { + --fa: "\e2c5"; } -.fa-rmb::before { - content: "\f157"; } +.fa-mars { + --fa: "\f222"; } -.fa-yen::before { - content: "\f157"; } +.fa-toilet { + --fa: "\f7d8"; } -.fa-ruble-sign::before { - content: "\f158"; } +.fa-plane-circle-xmark { + --fa: "\e557"; } -.fa-rouble::before { - content: "\f158"; } +.fa-yen-sign { + --fa: "\f157"; } -.fa-rub::before { - content: "\f158"; } +.fa-cny { + --fa: "\f157"; } -.fa-ruble::before { - content: "\f158"; } +.fa-jpy { + --fa: "\f157"; } -.fa-sun::before { - content: "\f185"; } +.fa-rmb { + --fa: "\f157"; } -.fa-guitar::before { - content: "\f7a6"; } +.fa-yen { + --fa: "\f157"; } -.fa-face-laugh-wink::before { - content: "\f59c"; } +.fa-ruble-sign { + --fa: "\f158"; } -.fa-laugh-wink::before { - content: "\f59c"; } +.fa-rouble { + --fa: "\f158"; } -.fa-horse-head::before { - content: "\f7ab"; } +.fa-rub { + --fa: "\f158"; } -.fa-bore-hole::before { - content: "\e4c3"; } +.fa-ruble { + --fa: "\f158"; } -.fa-industry::before { - content: "\f275"; } +.fa-sun { + --fa: "\f185"; } -.fa-circle-down::before { - content: "\f358"; } +.fa-guitar { + --fa: "\f7a6"; } -.fa-arrow-alt-circle-down::before { - content: "\f358"; } +.fa-face-laugh-wink { + --fa: "\f59c"; } -.fa-arrows-turn-to-dots::before { - content: "\e4c1"; } +.fa-laugh-wink { + --fa: "\f59c"; } -.fa-florin-sign::before { - content: "\e184"; } +.fa-horse-head { + --fa: "\f7ab"; } -.fa-arrow-down-short-wide::before { - content: "\f884"; } +.fa-bore-hole { + --fa: "\e4c3"; } -.fa-sort-amount-desc::before { - content: "\f884"; } +.fa-industry { + --fa: "\f275"; } -.fa-sort-amount-down-alt::before { - content: "\f884"; } +.fa-circle-down { + --fa: "\f358"; } -.fa-less-than::before { - content: "\3c"; } +.fa-arrow-alt-circle-down { + --fa: "\f358"; } -.fa-angle-down::before { - content: "\f107"; } +.fa-arrows-turn-to-dots { + --fa: "\e4c1"; } -.fa-car-tunnel::before { - content: "\e4de"; } +.fa-florin-sign { + --fa: "\e184"; } -.fa-head-side-cough::before { - content: "\e061"; } +.fa-arrow-down-short-wide { + --fa: "\f884"; } -.fa-grip-lines::before { - content: "\f7a4"; } +.fa-sort-amount-desc { + --fa: "\f884"; } -.fa-thumbs-down::before { - content: "\f165"; } +.fa-sort-amount-down-alt { + --fa: "\f884"; } -.fa-user-lock::before { - content: "\f502"; } +.fa-less-than { + --fa: "\3c"; } -.fa-arrow-right-long::before { - content: "\f178"; } +.fa-angle-down { + --fa: "\f107"; } -.fa-long-arrow-right::before { - content: "\f178"; } +.fa-car-tunnel { + --fa: "\e4de"; } -.fa-anchor-circle-xmark::before { - content: "\e4ac"; } +.fa-head-side-cough { + --fa: "\e061"; } -.fa-ellipsis::before { - content: "\f141"; } +.fa-grip-lines { + --fa: "\f7a4"; } -.fa-ellipsis-h::before { - content: "\f141"; } +.fa-thumbs-down { + --fa: "\f165"; } -.fa-chess-pawn::before { - content: "\f443"; } +.fa-user-lock { + --fa: "\f502"; } -.fa-kit-medical::before { - content: "\f479"; } +.fa-arrow-right-long { + --fa: "\f178"; } -.fa-first-aid::before { - content: "\f479"; } +.fa-long-arrow-right { + --fa: "\f178"; } -.fa-person-through-window::before { - content: "\e5a9"; } +.fa-anchor-circle-xmark { + --fa: "\e4ac"; } -.fa-toolbox::before { - content: "\f552"; } +.fa-ellipsis { + --fa: "\f141"; } -.fa-hands-holding-circle::before { - content: "\e4fb"; } +.fa-ellipsis-h { + --fa: "\f141"; } -.fa-bug::before { - content: "\f188"; } +.fa-chess-pawn { + --fa: "\f443"; } -.fa-credit-card::before { - content: "\f09d"; } +.fa-kit-medical { + --fa: "\f479"; } -.fa-credit-card-alt::before { - content: "\f09d"; } +.fa-first-aid { + --fa: "\f479"; } -.fa-car::before { - content: "\f1b9"; } +.fa-person-through-window { + --fa: "\e5a9"; } -.fa-automobile::before { - content: "\f1b9"; } +.fa-toolbox { + --fa: "\f552"; } -.fa-hand-holding-hand::before { - content: "\e4f7"; } +.fa-hands-holding-circle { + --fa: "\e4fb"; } -.fa-book-open-reader::before { - content: "\f5da"; } +.fa-bug { + --fa: "\f188"; } -.fa-book-reader::before { - content: "\f5da"; } +.fa-credit-card { + --fa: "\f09d"; } -.fa-mountain-sun::before { - content: "\e52f"; } +.fa-credit-card-alt { + --fa: "\f09d"; } -.fa-arrows-left-right-to-line::before { - content: "\e4ba"; } +.fa-car { + --fa: "\f1b9"; } -.fa-dice-d20::before { - content: "\f6cf"; } +.fa-automobile { + --fa: "\f1b9"; } -.fa-truck-droplet::before { - content: "\e58c"; } +.fa-hand-holding-hand { + --fa: "\e4f7"; } -.fa-file-circle-xmark::before { - content: "\e5a1"; } +.fa-book-open-reader { + --fa: "\f5da"; } -.fa-temperature-arrow-up::before { - content: "\e040"; } +.fa-book-reader { + --fa: "\f5da"; } -.fa-temperature-up::before { - content: "\e040"; } +.fa-mountain-sun { + --fa: "\e52f"; } -.fa-medal::before { - content: "\f5a2"; } +.fa-arrows-left-right-to-line { + --fa: "\e4ba"; } -.fa-bed::before { - content: "\f236"; } +.fa-dice-d20 { + --fa: "\f6cf"; } -.fa-square-h::before { - content: "\f0fd"; } +.fa-truck-droplet { + --fa: "\e58c"; } -.fa-h-square::before { - content: "\f0fd"; } +.fa-file-circle-xmark { + --fa: "\e5a1"; } -.fa-podcast::before { - content: "\f2ce"; } +.fa-temperature-arrow-up { + --fa: "\e040"; } -.fa-temperature-full::before { - content: "\f2c7"; } +.fa-temperature-up { + --fa: "\e040"; } -.fa-temperature-4::before { - content: "\f2c7"; } +.fa-medal { + --fa: "\f5a2"; } -.fa-thermometer-4::before { - content: "\f2c7"; } +.fa-bed { + --fa: "\f236"; } -.fa-thermometer-full::before { - content: "\f2c7"; } +.fa-square-h { + --fa: "\f0fd"; } -.fa-bell::before { - content: "\f0f3"; } +.fa-h-square { + --fa: "\f0fd"; } -.fa-superscript::before { - content: "\f12b"; } +.fa-podcast { + --fa: "\f2ce"; } -.fa-plug-circle-xmark::before { - content: "\e560"; } +.fa-temperature-full { + --fa: "\f2c7"; } -.fa-star-of-life::before { - content: "\f621"; } +.fa-temperature-4 { + --fa: "\f2c7"; } -.fa-phone-slash::before { - content: "\f3dd"; } +.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa-paint-roller::before { - content: "\f5aa"; } +.fa-thermometer-full { + --fa: "\f2c7"; } -.fa-handshake-angle::before { - content: "\f4c4"; } +.fa-bell { + --fa: "\f0f3"; } -.fa-hands-helping::before { - content: "\f4c4"; } +.fa-superscript { + --fa: "\f12b"; } -.fa-location-dot::before { - content: "\f3c5"; } +.fa-plug-circle-xmark { + --fa: "\e560"; } -.fa-map-marker-alt::before { - content: "\f3c5"; } +.fa-star-of-life { + --fa: "\f621"; } -.fa-file::before { - content: "\f15b"; } +.fa-phone-slash { + --fa: "\f3dd"; } -.fa-greater-than::before { - content: "\3e"; } +.fa-paint-roller { + --fa: "\f5aa"; } -.fa-person-swimming::before { - content: "\f5c4"; } +.fa-handshake-angle { + --fa: "\f4c4"; } -.fa-swimmer::before { - content: "\f5c4"; } +.fa-hands-helping { + --fa: "\f4c4"; } -.fa-arrow-down::before { - content: "\f063"; } +.fa-location-dot { + --fa: "\f3c5"; } -.fa-droplet::before { - content: "\f043"; } +.fa-map-marker-alt { + --fa: "\f3c5"; } -.fa-tint::before { - content: "\f043"; } +.fa-file { + --fa: "\f15b"; } -.fa-eraser::before { - content: "\f12d"; } +.fa-greater-than { + --fa: "\3e"; } -.fa-earth-americas::before { - content: "\f57d"; } +.fa-person-swimming { + --fa: "\f5c4"; } -.fa-earth::before { - content: "\f57d"; } +.fa-swimmer { + --fa: "\f5c4"; } -.fa-earth-america::before { - content: "\f57d"; } +.fa-arrow-down { + --fa: "\f063"; } -.fa-globe-americas::before { - content: "\f57d"; } +.fa-droplet { + --fa: "\f043"; } -.fa-person-burst::before { - content: "\e53b"; } +.fa-tint { + --fa: "\f043"; } -.fa-dove::before { - content: "\f4ba"; } +.fa-eraser { + --fa: "\f12d"; } -.fa-battery-empty::before { - content: "\f244"; } +.fa-earth-americas { + --fa: "\f57d"; } -.fa-battery-0::before { - content: "\f244"; } +.fa-earth { + --fa: "\f57d"; } -.fa-socks::before { - content: "\f696"; } +.fa-earth-america { + --fa: "\f57d"; } -.fa-inbox::before { - content: "\f01c"; } +.fa-globe-americas { + --fa: "\f57d"; } -.fa-section::before { - content: "\e447"; } +.fa-person-burst { + --fa: "\e53b"; } -.fa-gauge-high::before { - content: "\f625"; } +.fa-dove { + --fa: "\f4ba"; } -.fa-tachometer-alt::before { - content: "\f625"; } +.fa-battery-empty { + --fa: "\f244"; } -.fa-tachometer-alt-fast::before { - content: "\f625"; } +.fa-battery-0 { + --fa: "\f244"; } -.fa-envelope-open-text::before { - content: "\f658"; } +.fa-socks { + --fa: "\f696"; } -.fa-hospital::before { - content: "\f0f8"; } +.fa-inbox { + --fa: "\f01c"; } -.fa-hospital-alt::before { - content: "\f0f8"; } +.fa-section { + --fa: "\e447"; } -.fa-hospital-wide::before { - content: "\f0f8"; } +.fa-gauge-high { + --fa: "\f625"; } -.fa-wine-bottle::before { - content: "\f72f"; } +.fa-tachometer-alt { + --fa: "\f625"; } -.fa-chess-rook::before { - content: "\f447"; } +.fa-tachometer-alt-fast { + --fa: "\f625"; } -.fa-bars-staggered::before { - content: "\f550"; } +.fa-envelope-open-text { + --fa: "\f658"; } -.fa-reorder::before { - content: "\f550"; } +.fa-hospital { + --fa: "\f0f8"; } -.fa-stream::before { - content: "\f550"; } +.fa-hospital-alt { + --fa: "\f0f8"; } -.fa-dharmachakra::before { - content: "\f655"; } +.fa-hospital-wide { + --fa: "\f0f8"; } -.fa-hotdog::before { - content: "\f80f"; } +.fa-wine-bottle { + --fa: "\f72f"; } -.fa-person-walking-with-cane::before { - content: "\f29d"; } +.fa-chess-rook { + --fa: "\f447"; } -.fa-blind::before { - content: "\f29d"; } +.fa-bars-staggered { + --fa: "\f550"; } -.fa-drum::before { - content: "\f569"; } +.fa-reorder { + --fa: "\f550"; } -.fa-ice-cream::before { - content: "\f810"; } +.fa-stream { + --fa: "\f550"; } -.fa-heart-circle-bolt::before { - content: "\e4fc"; } +.fa-dharmachakra { + --fa: "\f655"; } -.fa-fax::before { - content: "\f1ac"; } +.fa-hotdog { + --fa: "\f80f"; } -.fa-paragraph::before { - content: "\f1dd"; } +.fa-person-walking-with-cane { + --fa: "\f29d"; } -.fa-check-to-slot::before { - content: "\f772"; } +.fa-blind { + --fa: "\f29d"; } -.fa-vote-yea::before { - content: "\f772"; } +.fa-drum { + --fa: "\f569"; } -.fa-star-half::before { - content: "\f089"; } +.fa-ice-cream { + --fa: "\f810"; } -.fa-boxes-stacked::before { - content: "\f468"; } +.fa-heart-circle-bolt { + --fa: "\e4fc"; } -.fa-boxes::before { - content: "\f468"; } +.fa-fax { + --fa: "\f1ac"; } -.fa-boxes-alt::before { - content: "\f468"; } +.fa-paragraph { + --fa: "\f1dd"; } -.fa-link::before { - content: "\f0c1"; } +.fa-check-to-slot { + --fa: "\f772"; } -.fa-chain::before { - content: "\f0c1"; } +.fa-vote-yea { + --fa: "\f772"; } -.fa-ear-listen::before { - content: "\f2a2"; } +.fa-star-half { + --fa: "\f089"; } -.fa-assistive-listening-systems::before { - content: "\f2a2"; } +.fa-boxes-stacked { + --fa: "\f468"; } -.fa-tree-city::before { - content: "\e587"; } +.fa-boxes { + --fa: "\f468"; } -.fa-play::before { - content: "\f04b"; } +.fa-boxes-alt { + --fa: "\f468"; } -.fa-font::before { - content: "\f031"; } +.fa-link { + --fa: "\f0c1"; } -.fa-table-cells-row-lock::before { - content: "\e67a"; } +.fa-chain { + --fa: "\f0c1"; } -.fa-rupiah-sign::before { - content: "\e23d"; } +.fa-ear-listen { + --fa: "\f2a2"; } -.fa-magnifying-glass::before { - content: "\f002"; } +.fa-assistive-listening-systems { + --fa: "\f2a2"; } -.fa-search::before { - content: "\f002"; } +.fa-tree-city { + --fa: "\e587"; } -.fa-table-tennis-paddle-ball::before { - content: "\f45d"; } +.fa-play { + --fa: "\f04b"; } -.fa-ping-pong-paddle-ball::before { - content: "\f45d"; } +.fa-font { + --fa: "\f031"; } -.fa-table-tennis::before { - content: "\f45d"; } +.fa-table-cells-row-lock { + --fa: "\e67a"; } -.fa-person-dots-from-line::before { - content: "\f470"; } +.fa-rupiah-sign { + --fa: "\e23d"; } -.fa-diagnoses::before { - content: "\f470"; } +.fa-magnifying-glass { + --fa: "\f002"; } -.fa-trash-can-arrow-up::before { - content: "\f82a"; } +.fa-search { + --fa: "\f002"; } -.fa-trash-restore-alt::before { - content: "\f82a"; } +.fa-table-tennis-paddle-ball { + --fa: "\f45d"; } -.fa-naira-sign::before { - content: "\e1f6"; } +.fa-ping-pong-paddle-ball { + --fa: "\f45d"; } -.fa-cart-arrow-down::before { - content: "\f218"; } +.fa-table-tennis { + --fa: "\f45d"; } -.fa-walkie-talkie::before { - content: "\f8ef"; } +.fa-person-dots-from-line { + --fa: "\f470"; } -.fa-file-pen::before { - content: "\f31c"; } +.fa-diagnoses { + --fa: "\f470"; } -.fa-file-edit::before { - content: "\f31c"; } +.fa-trash-can-arrow-up { + --fa: "\f82a"; } -.fa-receipt::before { - content: "\f543"; } +.fa-trash-restore-alt { + --fa: "\f82a"; } -.fa-square-pen::before { - content: "\f14b"; } +.fa-naira-sign { + --fa: "\e1f6"; } -.fa-pen-square::before { - content: "\f14b"; } +.fa-cart-arrow-down { + --fa: "\f218"; } -.fa-pencil-square::before { - content: "\f14b"; } +.fa-walkie-talkie { + --fa: "\f8ef"; } -.fa-suitcase-rolling::before { - content: "\f5c1"; } +.fa-file-pen { + --fa: "\f31c"; } -.fa-person-circle-exclamation::before { - content: "\e53f"; } +.fa-file-edit { + --fa: "\f31c"; } -.fa-chevron-down::before { - content: "\f078"; } +.fa-receipt { + --fa: "\f543"; } -.fa-battery-full::before { - content: "\f240"; } +.fa-square-pen { + --fa: "\f14b"; } -.fa-battery::before { - content: "\f240"; } +.fa-pen-square { + --fa: "\f14b"; } -.fa-battery-5::before { - content: "\f240"; } +.fa-pencil-square { + --fa: "\f14b"; } -.fa-skull-crossbones::before { - content: "\f714"; } +.fa-suitcase-rolling { + --fa: "\f5c1"; } -.fa-code-compare::before { - content: "\e13a"; } +.fa-person-circle-exclamation { + --fa: "\e53f"; } -.fa-list-ul::before { - content: "\f0ca"; } +.fa-chevron-down { + --fa: "\f078"; } -.fa-list-dots::before { - content: "\f0ca"; } +.fa-battery-full { + --fa: "\f240"; } -.fa-school-lock::before { - content: "\e56f"; } +.fa-battery { + --fa: "\f240"; } -.fa-tower-cell::before { - content: "\e585"; } +.fa-battery-5 { + --fa: "\f240"; } -.fa-down-long::before { - content: "\f309"; } +.fa-skull-crossbones { + --fa: "\f714"; } -.fa-long-arrow-alt-down::before { - content: "\f309"; } +.fa-code-compare { + --fa: "\e13a"; } -.fa-ranking-star::before { - content: "\e561"; } +.fa-list-ul { + --fa: "\f0ca"; } -.fa-chess-king::before { - content: "\f43f"; } +.fa-list-dots { + --fa: "\f0ca"; } -.fa-person-harassing::before { - content: "\e549"; } +.fa-school-lock { + --fa: "\e56f"; } -.fa-brazilian-real-sign::before { - content: "\e46c"; } +.fa-tower-cell { + --fa: "\e585"; } -.fa-landmark-dome::before { - content: "\f752"; } +.fa-down-long { + --fa: "\f309"; } -.fa-landmark-alt::before { - content: "\f752"; } +.fa-long-arrow-alt-down { + --fa: "\f309"; } -.fa-arrow-up::before { - content: "\f062"; } +.fa-ranking-star { + --fa: "\e561"; } -.fa-tv::before { - content: "\f26c"; } +.fa-chess-king { + --fa: "\f43f"; } -.fa-television::before { - content: "\f26c"; } +.fa-person-harassing { + --fa: "\e549"; } -.fa-tv-alt::before { - content: "\f26c"; } +.fa-brazilian-real-sign { + --fa: "\e46c"; } -.fa-shrimp::before { - content: "\e448"; } +.fa-landmark-dome { + --fa: "\f752"; } -.fa-list-check::before { - content: "\f0ae"; } +.fa-landmark-alt { + --fa: "\f752"; } -.fa-tasks::before { - content: "\f0ae"; } +.fa-arrow-up { + --fa: "\f062"; } -.fa-jug-detergent::before { - content: "\e519"; } +.fa-tv { + --fa: "\f26c"; } -.fa-circle-user::before { - content: "\f2bd"; } +.fa-television { + --fa: "\f26c"; } -.fa-user-circle::before { - content: "\f2bd"; } +.fa-tv-alt { + --fa: "\f26c"; } -.fa-user-shield::before { - content: "\f505"; } +.fa-shrimp { + --fa: "\e448"; } -.fa-wind::before { - content: "\f72e"; } +.fa-list-check { + --fa: "\f0ae"; } -.fa-car-burst::before { - content: "\f5e1"; } +.fa-tasks { + --fa: "\f0ae"; } -.fa-car-crash::before { - content: "\f5e1"; } +.fa-jug-detergent { + --fa: "\e519"; } -.fa-y::before { - content: "\59"; } +.fa-circle-user { + --fa: "\f2bd"; } -.fa-person-snowboarding::before { - content: "\f7ce"; } +.fa-user-circle { + --fa: "\f2bd"; } -.fa-snowboarding::before { - content: "\f7ce"; } +.fa-user-shield { + --fa: "\f505"; } -.fa-truck-fast::before { - content: "\f48b"; } +.fa-wind { + --fa: "\f72e"; } -.fa-shipping-fast::before { - content: "\f48b"; } +.fa-car-burst { + --fa: "\f5e1"; } -.fa-fish::before { - content: "\f578"; } +.fa-car-crash { + --fa: "\f5e1"; } -.fa-user-graduate::before { - content: "\f501"; } +.fa-y { + --fa: "\59"; } -.fa-circle-half-stroke::before { - content: "\f042"; } +.fa-person-snowboarding { + --fa: "\f7ce"; } -.fa-adjust::before { - content: "\f042"; } +.fa-snowboarding { + --fa: "\f7ce"; } -.fa-clapperboard::before { - content: "\e131"; } +.fa-truck-fast { + --fa: "\f48b"; } -.fa-circle-radiation::before { - content: "\f7ba"; } +.fa-shipping-fast { + --fa: "\f48b"; } -.fa-radiation-alt::before { - content: "\f7ba"; } +.fa-fish { + --fa: "\f578"; } -.fa-baseball::before { - content: "\f433"; } +.fa-user-graduate { + --fa: "\f501"; } -.fa-baseball-ball::before { - content: "\f433"; } +.fa-circle-half-stroke { + --fa: "\f042"; } -.fa-jet-fighter-up::before { - content: "\e518"; } +.fa-adjust { + --fa: "\f042"; } -.fa-diagram-project::before { - content: "\f542"; } +.fa-clapperboard { + --fa: "\e131"; } -.fa-project-diagram::before { - content: "\f542"; } +.fa-circle-radiation { + --fa: "\f7ba"; } -.fa-copy::before { - content: "\f0c5"; } +.fa-radiation-alt { + --fa: "\f7ba"; } -.fa-volume-xmark::before { - content: "\f6a9"; } +.fa-baseball { + --fa: "\f433"; } -.fa-volume-mute::before { - content: "\f6a9"; } +.fa-baseball-ball { + --fa: "\f433"; } -.fa-volume-times::before { - content: "\f6a9"; } +.fa-jet-fighter-up { + --fa: "\e518"; } -.fa-hand-sparkles::before { - content: "\e05d"; } +.fa-diagram-project { + --fa: "\f542"; } -.fa-grip::before { - content: "\f58d"; } +.fa-project-diagram { + --fa: "\f542"; } -.fa-grip-horizontal::before { - content: "\f58d"; } +.fa-copy { + --fa: "\f0c5"; } -.fa-share-from-square::before { - content: "\f14d"; } +.fa-volume-xmark { + --fa: "\f6a9"; } -.fa-share-square::before { - content: "\f14d"; } +.fa-volume-mute { + --fa: "\f6a9"; } -.fa-child-combatant::before { - content: "\e4e0"; } +.fa-volume-times { + --fa: "\f6a9"; } -.fa-child-rifle::before { - content: "\e4e0"; } +.fa-hand-sparkles { + --fa: "\e05d"; } -.fa-gun::before { - content: "\e19b"; } +.fa-grip { + --fa: "\f58d"; } -.fa-square-phone::before { - content: "\f098"; } +.fa-grip-horizontal { + --fa: "\f58d"; } -.fa-phone-square::before { - content: "\f098"; } +.fa-share-from-square { + --fa: "\f14d"; } -.fa-plus::before { - content: "\2b"; } +.fa-share-square { + --fa: "\f14d"; } -.fa-add::before { - content: "\2b"; } +.fa-child-combatant { + --fa: "\e4e0"; } -.fa-expand::before { - content: "\f065"; } +.fa-child-rifle { + --fa: "\e4e0"; } -.fa-computer::before { - content: "\e4e5"; } +.fa-gun { + --fa: "\e19b"; } -.fa-xmark::before { - content: "\f00d"; } +.fa-square-phone { + --fa: "\f098"; } -.fa-close::before { - content: "\f00d"; } +.fa-phone-square { + --fa: "\f098"; } -.fa-multiply::before { - content: "\f00d"; } +.fa-plus { + --fa: "\2b"; } -.fa-remove::before { - content: "\f00d"; } +.fa-add { + --fa: "\2b"; } -.fa-times::before { - content: "\f00d"; } +.fa-expand { + --fa: "\f065"; } -.fa-arrows-up-down-left-right::before { - content: "\f047"; } +.fa-computer { + --fa: "\e4e5"; } -.fa-arrows::before { - content: "\f047"; } +.fa-xmark { + --fa: "\f00d"; } -.fa-chalkboard-user::before { - content: "\f51c"; } +.fa-close { + --fa: "\f00d"; } -.fa-chalkboard-teacher::before { - content: "\f51c"; } +.fa-multiply { + --fa: "\f00d"; } -.fa-peso-sign::before { - content: "\e222"; } +.fa-remove { + --fa: "\f00d"; } -.fa-building-shield::before { - content: "\e4d8"; } +.fa-times { + --fa: "\f00d"; } -.fa-baby::before { - content: "\f77c"; } +.fa-arrows-up-down-left-right { + --fa: "\f047"; } -.fa-users-line::before { - content: "\e592"; } +.fa-arrows { + --fa: "\f047"; } -.fa-quote-left::before { - content: "\f10d"; } +.fa-chalkboard-user { + --fa: "\f51c"; } -.fa-quote-left-alt::before { - content: "\f10d"; } +.fa-chalkboard-teacher { + --fa: "\f51c"; } -.fa-tractor::before { - content: "\f722"; } +.fa-peso-sign { + --fa: "\e222"; } -.fa-trash-arrow-up::before { - content: "\f829"; } +.fa-building-shield { + --fa: "\e4d8"; } -.fa-trash-restore::before { - content: "\f829"; } +.fa-baby { + --fa: "\f77c"; } -.fa-arrow-down-up-lock::before { - content: "\e4b0"; } +.fa-users-line { + --fa: "\e592"; } -.fa-lines-leaning::before { - content: "\e51e"; } +.fa-quote-left { + --fa: "\f10d"; } -.fa-ruler-combined::before { - content: "\f546"; } +.fa-quote-left-alt { + --fa: "\f10d"; } -.fa-copyright::before { - content: "\f1f9"; } +.fa-tractor { + --fa: "\f722"; } -.fa-equals::before { - content: "\3d"; } +.fa-trash-arrow-up { + --fa: "\f829"; } -.fa-blender::before { - content: "\f517"; } +.fa-trash-restore { + --fa: "\f829"; } -.fa-teeth::before { - content: "\f62e"; } +.fa-arrow-down-up-lock { + --fa: "\e4b0"; } -.fa-shekel-sign::before { - content: "\f20b"; } +.fa-lines-leaning { + --fa: "\e51e"; } -.fa-ils::before { - content: "\f20b"; } +.fa-ruler-combined { + --fa: "\f546"; } -.fa-shekel::before { - content: "\f20b"; } +.fa-copyright { + --fa: "\f1f9"; } -.fa-sheqel::before { - content: "\f20b"; } +.fa-equals { + --fa: "\3d"; } -.fa-sheqel-sign::before { - content: "\f20b"; } +.fa-blender { + --fa: "\f517"; } -.fa-map::before { - content: "\f279"; } +.fa-teeth { + --fa: "\f62e"; } -.fa-rocket::before { - content: "\f135"; } +.fa-shekel-sign { + --fa: "\f20b"; } -.fa-photo-film::before { - content: "\f87c"; } +.fa-ils { + --fa: "\f20b"; } -.fa-photo-video::before { - content: "\f87c"; } +.fa-shekel { + --fa: "\f20b"; } -.fa-folder-minus::before { - content: "\f65d"; } +.fa-sheqel { + --fa: "\f20b"; } -.fa-store::before { - content: "\f54e"; } +.fa-sheqel-sign { + --fa: "\f20b"; } -.fa-arrow-trend-up::before { - content: "\e098"; } +.fa-map { + --fa: "\f279"; } -.fa-plug-circle-minus::before { - content: "\e55e"; } +.fa-rocket { + --fa: "\f135"; } -.fa-sign-hanging::before { - content: "\f4d9"; } +.fa-photo-film { + --fa: "\f87c"; } -.fa-sign::before { - content: "\f4d9"; } +.fa-photo-video { + --fa: "\f87c"; } -.fa-bezier-curve::before { - content: "\f55b"; } +.fa-folder-minus { + --fa: "\f65d"; } -.fa-bell-slash::before { - content: "\f1f6"; } +.fa-hexagon-nodes-bolt { + --fa: "\e69a"; } -.fa-tablet::before { - content: "\f3fb"; } +.fa-store { + --fa: "\f54e"; } -.fa-tablet-android::before { - content: "\f3fb"; } +.fa-arrow-trend-up { + --fa: "\e098"; } -.fa-school-flag::before { - content: "\e56e"; } +.fa-plug-circle-minus { + --fa: "\e55e"; } -.fa-fill::before { - content: "\f575"; } +.fa-sign-hanging { + --fa: "\f4d9"; } -.fa-angle-up::before { - content: "\f106"; } +.fa-sign { + --fa: "\f4d9"; } -.fa-drumstick-bite::before { - content: "\f6d7"; } +.fa-bezier-curve { + --fa: "\f55b"; } -.fa-holly-berry::before { - content: "\f7aa"; } +.fa-bell-slash { + --fa: "\f1f6"; } -.fa-chevron-left::before { - content: "\f053"; } +.fa-tablet { + --fa: "\f3fb"; } -.fa-bacteria::before { - content: "\e059"; } +.fa-tablet-android { + --fa: "\f3fb"; } -.fa-hand-lizard::before { - content: "\f258"; } +.fa-school-flag { + --fa: "\e56e"; } -.fa-notdef::before { - content: "\e1fe"; } +.fa-fill { + --fa: "\f575"; } -.fa-disease::before { - content: "\f7fa"; } +.fa-angle-up { + --fa: "\f106"; } -.fa-briefcase-medical::before { - content: "\f469"; } +.fa-drumstick-bite { + --fa: "\f6d7"; } -.fa-genderless::before { - content: "\f22d"; } +.fa-holly-berry { + --fa: "\f7aa"; } -.fa-chevron-right::before { - content: "\f054"; } +.fa-chevron-left { + --fa: "\f053"; } -.fa-retweet::before { - content: "\f079"; } +.fa-bacteria { + --fa: "\e059"; } -.fa-car-rear::before { - content: "\f5de"; } +.fa-hand-lizard { + --fa: "\f258"; } -.fa-car-alt::before { - content: "\f5de"; } +.fa-notdef { + --fa: "\e1fe"; } -.fa-pump-soap::before { - content: "\e06b"; } +.fa-disease { + --fa: "\f7fa"; } -.fa-video-slash::before { - content: "\f4e2"; } +.fa-briefcase-medical { + --fa: "\f469"; } -.fa-battery-quarter::before { - content: "\f243"; } +.fa-genderless { + --fa: "\f22d"; } -.fa-battery-2::before { - content: "\f243"; } +.fa-chevron-right { + --fa: "\f054"; } -.fa-radio::before { - content: "\f8d7"; } +.fa-retweet { + --fa: "\f079"; } -.fa-baby-carriage::before { - content: "\f77d"; } +.fa-car-rear { + --fa: "\f5de"; } -.fa-carriage-baby::before { - content: "\f77d"; } +.fa-car-alt { + --fa: "\f5de"; } -.fa-traffic-light::before { - content: "\f637"; } +.fa-pump-soap { + --fa: "\e06b"; } -.fa-thermometer::before { - content: "\f491"; } +.fa-video-slash { + --fa: "\f4e2"; } -.fa-vr-cardboard::before { - content: "\f729"; } +.fa-battery-quarter { + --fa: "\f243"; } -.fa-hand-middle-finger::before { - content: "\f806"; } +.fa-battery-2 { + --fa: "\f243"; } -.fa-percent::before { - content: "\25"; } +.fa-radio { + --fa: "\f8d7"; } -.fa-percentage::before { - content: "\25"; } +.fa-baby-carriage { + --fa: "\f77d"; } -.fa-truck-moving::before { - content: "\f4df"; } +.fa-carriage-baby { + --fa: "\f77d"; } -.fa-glass-water-droplet::before { - content: "\e4f5"; } +.fa-traffic-light { + --fa: "\f637"; } -.fa-display::before { - content: "\e163"; } +.fa-thermometer { + --fa: "\f491"; } -.fa-face-smile::before { - content: "\f118"; } +.fa-vr-cardboard { + --fa: "\f729"; } -.fa-smile::before { - content: "\f118"; } +.fa-hand-middle-finger { + --fa: "\f806"; } -.fa-thumbtack::before { - content: "\f08d"; } +.fa-percent { + --fa: "\25"; } -.fa-thumb-tack::before { - content: "\f08d"; } +.fa-percentage { + --fa: "\25"; } -.fa-trophy::before { - content: "\f091"; } +.fa-truck-moving { + --fa: "\f4df"; } -.fa-person-praying::before { - content: "\f683"; } +.fa-glass-water-droplet { + --fa: "\e4f5"; } -.fa-pray::before { - content: "\f683"; } +.fa-display { + --fa: "\e163"; } -.fa-hammer::before { - content: "\f6e3"; } +.fa-face-smile { + --fa: "\f118"; } -.fa-hand-peace::before { - content: "\f25b"; } +.fa-smile { + --fa: "\f118"; } -.fa-rotate::before { - content: "\f2f1"; } +.fa-thumbtack { + --fa: "\f08d"; } -.fa-sync-alt::before { - content: "\f2f1"; } +.fa-thumb-tack { + --fa: "\f08d"; } -.fa-spinner::before { - content: "\f110"; } +.fa-trophy { + --fa: "\f091"; } -.fa-robot::before { - content: "\f544"; } +.fa-person-praying { + --fa: "\f683"; } -.fa-peace::before { - content: "\f67c"; } +.fa-pray { + --fa: "\f683"; } -.fa-gears::before { - content: "\f085"; } +.fa-hammer { + --fa: "\f6e3"; } -.fa-cogs::before { - content: "\f085"; } +.fa-hand-peace { + --fa: "\f25b"; } -.fa-warehouse::before { - content: "\f494"; } +.fa-rotate { + --fa: "\f2f1"; } -.fa-arrow-up-right-dots::before { - content: "\e4b7"; } +.fa-sync-alt { + --fa: "\f2f1"; } -.fa-splotch::before { - content: "\f5bc"; } +.fa-spinner { + --fa: "\f110"; } -.fa-face-grin-hearts::before { - content: "\f584"; } +.fa-robot { + --fa: "\f544"; } -.fa-grin-hearts::before { - content: "\f584"; } +.fa-peace { + --fa: "\f67c"; } -.fa-dice-four::before { - content: "\f524"; } +.fa-gears { + --fa: "\f085"; } -.fa-sim-card::before { - content: "\f7c4"; } +.fa-cogs { + --fa: "\f085"; } -.fa-transgender::before { - content: "\f225"; } +.fa-warehouse { + --fa: "\f494"; } -.fa-transgender-alt::before { - content: "\f225"; } +.fa-arrow-up-right-dots { + --fa: "\e4b7"; } -.fa-mercury::before { - content: "\f223"; } +.fa-splotch { + --fa: "\f5bc"; } -.fa-arrow-turn-down::before { - content: "\f149"; } +.fa-face-grin-hearts { + --fa: "\f584"; } -.fa-level-down::before { - content: "\f149"; } +.fa-grin-hearts { + --fa: "\f584"; } -.fa-person-falling-burst::before { - content: "\e547"; } +.fa-dice-four { + --fa: "\f524"; } -.fa-award::before { - content: "\f559"; } +.fa-sim-card { + --fa: "\f7c4"; } -.fa-ticket-simple::before { - content: "\f3ff"; } +.fa-transgender { + --fa: "\f225"; } -.fa-ticket-alt::before { - content: "\f3ff"; } +.fa-transgender-alt { + --fa: "\f225"; } -.fa-building::before { - content: "\f1ad"; } +.fa-mercury { + --fa: "\f223"; } -.fa-angles-left::before { - content: "\f100"; } +.fa-arrow-turn-down { + --fa: "\f149"; } -.fa-angle-double-left::before { - content: "\f100"; } +.fa-level-down { + --fa: "\f149"; } -.fa-qrcode::before { - content: "\f029"; } +.fa-person-falling-burst { + --fa: "\e547"; } -.fa-clock-rotate-left::before { - content: "\f1da"; } +.fa-award { + --fa: "\f559"; } -.fa-history::before { - content: "\f1da"; } +.fa-ticket-simple { + --fa: "\f3ff"; } -.fa-face-grin-beam-sweat::before { - content: "\f583"; } +.fa-ticket-alt { + --fa: "\f3ff"; } -.fa-grin-beam-sweat::before { - content: "\f583"; } +.fa-building { + --fa: "\f1ad"; } -.fa-file-export::before { - content: "\f56e"; } +.fa-angles-left { + --fa: "\f100"; } -.fa-arrow-right-from-file::before { - content: "\f56e"; } +.fa-angle-double-left { + --fa: "\f100"; } -.fa-shield::before { - content: "\f132"; } +.fa-qrcode { + --fa: "\f029"; } -.fa-shield-blank::before { - content: "\f132"; } +.fa-clock-rotate-left { + --fa: "\f1da"; } -.fa-arrow-up-short-wide::before { - content: "\f885"; } +.fa-history { + --fa: "\f1da"; } -.fa-sort-amount-up-alt::before { - content: "\f885"; } +.fa-face-grin-beam-sweat { + --fa: "\f583"; } -.fa-house-medical::before { - content: "\e3b2"; } +.fa-grin-beam-sweat { + --fa: "\f583"; } -.fa-golf-ball-tee::before { - content: "\f450"; } +.fa-file-export { + --fa: "\f56e"; } -.fa-golf-ball::before { - content: "\f450"; } +.fa-arrow-right-from-file { + --fa: "\f56e"; } -.fa-circle-chevron-left::before { - content: "\f137"; } +.fa-shield { + --fa: "\f132"; } -.fa-chevron-circle-left::before { - content: "\f137"; } +.fa-shield-blank { + --fa: "\f132"; } -.fa-house-chimney-window::before { - content: "\e00d"; } +.fa-arrow-up-short-wide { + --fa: "\f885"; } -.fa-pen-nib::before { - content: "\f5ad"; } +.fa-sort-amount-up-alt { + --fa: "\f885"; } -.fa-tent-arrow-turn-left::before { - content: "\e580"; } +.fa-comment-nodes { + --fa: "\e696"; } -.fa-tents::before { - content: "\e582"; } +.fa-house-medical { + --fa: "\e3b2"; } -.fa-wand-magic::before { - content: "\f0d0"; } +.fa-golf-ball-tee { + --fa: "\f450"; } -.fa-magic::before { - content: "\f0d0"; } +.fa-golf-ball { + --fa: "\f450"; } -.fa-dog::before { - content: "\f6d3"; } +.fa-circle-chevron-left { + --fa: "\f137"; } -.fa-carrot::before { - content: "\f787"; } +.fa-chevron-circle-left { + --fa: "\f137"; } -.fa-moon::before { - content: "\f186"; } +.fa-house-chimney-window { + --fa: "\e00d"; } -.fa-wine-glass-empty::before { - content: "\f5ce"; } +.fa-pen-nib { + --fa: "\f5ad"; } -.fa-wine-glass-alt::before { - content: "\f5ce"; } +.fa-tent-arrow-turn-left { + --fa: "\e580"; } -.fa-cheese::before { - content: "\f7ef"; } +.fa-tents { + --fa: "\e582"; } -.fa-yin-yang::before { - content: "\f6ad"; } +.fa-wand-magic { + --fa: "\f0d0"; } -.fa-music::before { - content: "\f001"; } +.fa-magic { + --fa: "\f0d0"; } -.fa-code-commit::before { - content: "\f386"; } +.fa-dog { + --fa: "\f6d3"; } -.fa-temperature-low::before { - content: "\f76b"; } +.fa-carrot { + --fa: "\f787"; } -.fa-person-biking::before { - content: "\f84a"; } +.fa-moon { + --fa: "\f186"; } -.fa-biking::before { - content: "\f84a"; } +.fa-wine-glass-empty { + --fa: "\f5ce"; } -.fa-broom::before { - content: "\f51a"; } +.fa-wine-glass-alt { + --fa: "\f5ce"; } -.fa-shield-heart::before { - content: "\e574"; } +.fa-cheese { + --fa: "\f7ef"; } -.fa-gopuram::before { - content: "\f664"; } +.fa-yin-yang { + --fa: "\f6ad"; } -.fa-earth-oceania::before { - content: "\e47b"; } +.fa-music { + --fa: "\f001"; } -.fa-globe-oceania::before { - content: "\e47b"; } +.fa-code-commit { + --fa: "\f386"; } -.fa-square-xmark::before { - content: "\f2d3"; } +.fa-temperature-low { + --fa: "\f76b"; } -.fa-times-square::before { - content: "\f2d3"; } +.fa-person-biking { + --fa: "\f84a"; } -.fa-xmark-square::before { - content: "\f2d3"; } +.fa-biking { + --fa: "\f84a"; } -.fa-hashtag::before { - content: "\23"; } +.fa-broom { + --fa: "\f51a"; } -.fa-up-right-and-down-left-from-center::before { - content: "\f424"; } +.fa-shield-heart { + --fa: "\e574"; } -.fa-expand-alt::before { - content: "\f424"; } +.fa-gopuram { + --fa: "\f664"; } -.fa-oil-can::before { - content: "\f613"; } +.fa-earth-oceania { + --fa: "\e47b"; } -.fa-t::before { - content: "\54"; } +.fa-globe-oceania { + --fa: "\e47b"; } -.fa-hippo::before { - content: "\f6ed"; } +.fa-square-xmark { + --fa: "\f2d3"; } -.fa-chart-column::before { - content: "\e0e3"; } +.fa-times-square { + --fa: "\f2d3"; } -.fa-infinity::before { - content: "\f534"; } +.fa-xmark-square { + --fa: "\f2d3"; } -.fa-vial-circle-check::before { - content: "\e596"; } +.fa-hashtag { + --fa: "\23"; } -.fa-person-arrow-down-to-line::before { - content: "\e538"; } +.fa-up-right-and-down-left-from-center { + --fa: "\f424"; } -.fa-voicemail::before { - content: "\f897"; } +.fa-expand-alt { + --fa: "\f424"; } -.fa-fan::before { - content: "\f863"; } +.fa-oil-can { + --fa: "\f613"; } -.fa-person-walking-luggage::before { - content: "\e554"; } +.fa-t { + --fa: "\54"; } -.fa-up-down::before { - content: "\f338"; } +.fa-hippo { + --fa: "\f6ed"; } -.fa-arrows-alt-v::before { - content: "\f338"; } +.fa-chart-column { + --fa: "\e0e3"; } -.fa-cloud-moon-rain::before { - content: "\f73c"; } +.fa-infinity { + --fa: "\f534"; } -.fa-calendar::before { - content: "\f133"; } +.fa-vial-circle-check { + --fa: "\e596"; } -.fa-trailer::before { - content: "\e041"; } +.fa-person-arrow-down-to-line { + --fa: "\e538"; } -.fa-bahai::before { - content: "\f666"; } +.fa-voicemail { + --fa: "\f897"; } -.fa-haykal::before { - content: "\f666"; } +.fa-fan { + --fa: "\f863"; } -.fa-sd-card::before { - content: "\f7c2"; } +.fa-person-walking-luggage { + --fa: "\e554"; } -.fa-dragon::before { - content: "\f6d5"; } +.fa-up-down { + --fa: "\f338"; } -.fa-shoe-prints::before { - content: "\f54b"; } +.fa-arrows-alt-v { + --fa: "\f338"; } -.fa-circle-plus::before { - content: "\f055"; } +.fa-cloud-moon-rain { + --fa: "\f73c"; } -.fa-plus-circle::before { - content: "\f055"; } +.fa-calendar { + --fa: "\f133"; } -.fa-face-grin-tongue-wink::before { - content: "\f58b"; } +.fa-trailer { + --fa: "\e041"; } -.fa-grin-tongue-wink::before { - content: "\f58b"; } +.fa-bahai { + --fa: "\f666"; } -.fa-hand-holding::before { - content: "\f4bd"; } +.fa-haykal { + --fa: "\f666"; } -.fa-plug-circle-exclamation::before { - content: "\e55d"; } +.fa-sd-card { + --fa: "\f7c2"; } -.fa-link-slash::before { - content: "\f127"; } +.fa-dragon { + --fa: "\f6d5"; } -.fa-chain-broken::before { - content: "\f127"; } +.fa-shoe-prints { + --fa: "\f54b"; } -.fa-chain-slash::before { - content: "\f127"; } +.fa-circle-plus { + --fa: "\f055"; } -.fa-unlink::before { - content: "\f127"; } +.fa-plus-circle { + --fa: "\f055"; } -.fa-clone::before { - content: "\f24d"; } +.fa-face-grin-tongue-wink { + --fa: "\f58b"; } -.fa-person-walking-arrow-loop-left::before { - content: "\e551"; } +.fa-grin-tongue-wink { + --fa: "\f58b"; } -.fa-arrow-up-z-a::before { - content: "\f882"; } +.fa-hand-holding { + --fa: "\f4bd"; } -.fa-sort-alpha-up-alt::before { - content: "\f882"; } +.fa-plug-circle-exclamation { + --fa: "\e55d"; } -.fa-fire-flame-curved::before { - content: "\f7e4"; } +.fa-link-slash { + --fa: "\f127"; } -.fa-fire-alt::before { - content: "\f7e4"; } +.fa-chain-broken { + --fa: "\f127"; } -.fa-tornado::before { - content: "\f76f"; } +.fa-chain-slash { + --fa: "\f127"; } -.fa-file-circle-plus::before { - content: "\e494"; } +.fa-unlink { + --fa: "\f127"; } -.fa-book-quran::before { - content: "\f687"; } +.fa-clone { + --fa: "\f24d"; } -.fa-quran::before { - content: "\f687"; } +.fa-person-walking-arrow-loop-left { + --fa: "\e551"; } -.fa-anchor::before { - content: "\f13d"; } +.fa-arrow-up-z-a { + --fa: "\f882"; } -.fa-border-all::before { - content: "\f84c"; } +.fa-sort-alpha-up-alt { + --fa: "\f882"; } -.fa-face-angry::before { - content: "\f556"; } +.fa-fire-flame-curved { + --fa: "\f7e4"; } -.fa-angry::before { - content: "\f556"; } +.fa-fire-alt { + --fa: "\f7e4"; } -.fa-cookie-bite::before { - content: "\f564"; } +.fa-tornado { + --fa: "\f76f"; } -.fa-arrow-trend-down::before { - content: "\e097"; } +.fa-file-circle-plus { + --fa: "\e494"; } -.fa-rss::before { - content: "\f09e"; } +.fa-book-quran { + --fa: "\f687"; } -.fa-feed::before { - content: "\f09e"; } +.fa-quran { + --fa: "\f687"; } -.fa-draw-polygon::before { - content: "\f5ee"; } +.fa-anchor { + --fa: "\f13d"; } -.fa-scale-balanced::before { - content: "\f24e"; } +.fa-border-all { + --fa: "\f84c"; } -.fa-balance-scale::before { - content: "\f24e"; } +.fa-face-angry { + --fa: "\f556"; } -.fa-gauge-simple-high::before { - content: "\f62a"; } +.fa-angry { + --fa: "\f556"; } -.fa-tachometer::before { - content: "\f62a"; } +.fa-cookie-bite { + --fa: "\f564"; } -.fa-tachometer-fast::before { - content: "\f62a"; } +.fa-arrow-trend-down { + --fa: "\e097"; } -.fa-shower::before { - content: "\f2cc"; } +.fa-rss { + --fa: "\f09e"; } -.fa-desktop::before { - content: "\f390"; } +.fa-feed { + --fa: "\f09e"; } -.fa-desktop-alt::before { - content: "\f390"; } +.fa-draw-polygon { + --fa: "\f5ee"; } -.fa-m::before { - content: "\4d"; } +.fa-scale-balanced { + --fa: "\f24e"; } -.fa-table-list::before { - content: "\f00b"; } +.fa-balance-scale { + --fa: "\f24e"; } -.fa-th-list::before { - content: "\f00b"; } +.fa-gauge-simple-high { + --fa: "\f62a"; } -.fa-comment-sms::before { - content: "\f7cd"; } +.fa-tachometer { + --fa: "\f62a"; } -.fa-sms::before { - content: "\f7cd"; } +.fa-tachometer-fast { + --fa: "\f62a"; } -.fa-book::before { - content: "\f02d"; } +.fa-shower { + --fa: "\f2cc"; } -.fa-user-plus::before { - content: "\f234"; } +.fa-desktop { + --fa: "\f390"; } -.fa-check::before { - content: "\f00c"; } +.fa-desktop-alt { + --fa: "\f390"; } -.fa-battery-three-quarters::before { - content: "\f241"; } +.fa-m { + --fa: "\4d"; } -.fa-battery-4::before { - content: "\f241"; } +.fa-table-list { + --fa: "\f00b"; } -.fa-house-circle-check::before { - content: "\e509"; } +.fa-th-list { + --fa: "\f00b"; } -.fa-angle-left::before { - content: "\f104"; } +.fa-comment-sms { + --fa: "\f7cd"; } -.fa-diagram-successor::before { - content: "\e47a"; } +.fa-sms { + --fa: "\f7cd"; } -.fa-truck-arrow-right::before { - content: "\e58b"; } +.fa-book { + --fa: "\f02d"; } -.fa-arrows-split-up-and-left::before { - content: "\e4bc"; } +.fa-user-plus { + --fa: "\f234"; } -.fa-hand-fist::before { - content: "\f6de"; } +.fa-check { + --fa: "\f00c"; } -.fa-fist-raised::before { - content: "\f6de"; } +.fa-battery-three-quarters { + --fa: "\f241"; } -.fa-cloud-moon::before { - content: "\f6c3"; } +.fa-battery-4 { + --fa: "\f241"; } -.fa-briefcase::before { - content: "\f0b1"; } +.fa-house-circle-check { + --fa: "\e509"; } -.fa-person-falling::before { - content: "\e546"; } +.fa-angle-left { + --fa: "\f104"; } -.fa-image-portrait::before { - content: "\f3e0"; } +.fa-diagram-successor { + --fa: "\e47a"; } -.fa-portrait::before { - content: "\f3e0"; } +.fa-truck-arrow-right { + --fa: "\e58b"; } -.fa-user-tag::before { - content: "\f507"; } +.fa-arrows-split-up-and-left { + --fa: "\e4bc"; } -.fa-rug::before { - content: "\e569"; } +.fa-hand-fist { + --fa: "\f6de"; } -.fa-earth-europe::before { - content: "\f7a2"; } +.fa-fist-raised { + --fa: "\f6de"; } -.fa-globe-europe::before { - content: "\f7a2"; } +.fa-cloud-moon { + --fa: "\f6c3"; } -.fa-cart-flatbed-suitcase::before { - content: "\f59d"; } +.fa-briefcase { + --fa: "\f0b1"; } -.fa-luggage-cart::before { - content: "\f59d"; } +.fa-person-falling { + --fa: "\e546"; } -.fa-rectangle-xmark::before { - content: "\f410"; } +.fa-image-portrait { + --fa: "\f3e0"; } -.fa-rectangle-times::before { - content: "\f410"; } +.fa-portrait { + --fa: "\f3e0"; } -.fa-times-rectangle::before { - content: "\f410"; } +.fa-user-tag { + --fa: "\f507"; } -.fa-window-close::before { - content: "\f410"; } +.fa-rug { + --fa: "\e569"; } -.fa-baht-sign::before { - content: "\e0ac"; } +.fa-earth-europe { + --fa: "\f7a2"; } -.fa-book-open::before { - content: "\f518"; } +.fa-globe-europe { + --fa: "\f7a2"; } -.fa-book-journal-whills::before { - content: "\f66a"; } +.fa-cart-flatbed-suitcase { + --fa: "\f59d"; } -.fa-journal-whills::before { - content: "\f66a"; } +.fa-luggage-cart { + --fa: "\f59d"; } -.fa-handcuffs::before { - content: "\e4f8"; } +.fa-rectangle-xmark { + --fa: "\f410"; } -.fa-triangle-exclamation::before { - content: "\f071"; } +.fa-rectangle-times { + --fa: "\f410"; } -.fa-exclamation-triangle::before { - content: "\f071"; } +.fa-times-rectangle { + --fa: "\f410"; } -.fa-warning::before { - content: "\f071"; } +.fa-window-close { + --fa: "\f410"; } -.fa-database::before { - content: "\f1c0"; } +.fa-baht-sign { + --fa: "\e0ac"; } -.fa-share::before { - content: "\f064"; } +.fa-book-open { + --fa: "\f518"; } -.fa-mail-forward::before { - content: "\f064"; } +.fa-book-journal-whills { + --fa: "\f66a"; } -.fa-bottle-droplet::before { - content: "\e4c4"; } +.fa-journal-whills { + --fa: "\f66a"; } -.fa-mask-face::before { - content: "\e1d7"; } +.fa-handcuffs { + --fa: "\e4f8"; } -.fa-hill-rockslide::before { - content: "\e508"; } +.fa-triangle-exclamation { + --fa: "\f071"; } -.fa-right-left::before { - content: "\f362"; } +.fa-exclamation-triangle { + --fa: "\f071"; } -.fa-exchange-alt::before { - content: "\f362"; } +.fa-warning { + --fa: "\f071"; } -.fa-paper-plane::before { - content: "\f1d8"; } +.fa-database { + --fa: "\f1c0"; } -.fa-road-circle-exclamation::before { - content: "\e565"; } +.fa-share { + --fa: "\f064"; } -.fa-dungeon::before { - content: "\f6d9"; } +.fa-mail-forward { + --fa: "\f064"; } -.fa-align-right::before { - content: "\f038"; } +.fa-bottle-droplet { + --fa: "\e4c4"; } -.fa-money-bill-1-wave::before { - content: "\f53b"; } +.fa-mask-face { + --fa: "\e1d7"; } -.fa-money-bill-wave-alt::before { - content: "\f53b"; } +.fa-hill-rockslide { + --fa: "\e508"; } -.fa-life-ring::before { - content: "\f1cd"; } +.fa-right-left { + --fa: "\f362"; } -.fa-hands::before { - content: "\f2a7"; } +.fa-exchange-alt { + --fa: "\f362"; } -.fa-sign-language::before { - content: "\f2a7"; } +.fa-paper-plane { + --fa: "\f1d8"; } -.fa-signing::before { - content: "\f2a7"; } +.fa-road-circle-exclamation { + --fa: "\e565"; } -.fa-calendar-day::before { - content: "\f783"; } +.fa-dungeon { + --fa: "\f6d9"; } -.fa-water-ladder::before { - content: "\f5c5"; } +.fa-align-right { + --fa: "\f038"; } -.fa-ladder-water::before { - content: "\f5c5"; } +.fa-money-bill-1-wave { + --fa: "\f53b"; } -.fa-swimming-pool::before { - content: "\f5c5"; } +.fa-money-bill-wave-alt { + --fa: "\f53b"; } -.fa-arrows-up-down::before { - content: "\f07d"; } +.fa-life-ring { + --fa: "\f1cd"; } -.fa-arrows-v::before { - content: "\f07d"; } +.fa-hands { + --fa: "\f2a7"; } -.fa-face-grimace::before { - content: "\f57f"; } +.fa-sign-language { + --fa: "\f2a7"; } -.fa-grimace::before { - content: "\f57f"; } +.fa-signing { + --fa: "\f2a7"; } -.fa-wheelchair-move::before { - content: "\e2ce"; } +.fa-calendar-day { + --fa: "\f783"; } -.fa-wheelchair-alt::before { - content: "\e2ce"; } +.fa-water-ladder { + --fa: "\f5c5"; } -.fa-turn-down::before { - content: "\f3be"; } +.fa-ladder-water { + --fa: "\f5c5"; } -.fa-level-down-alt::before { - content: "\f3be"; } +.fa-swimming-pool { + --fa: "\f5c5"; } -.fa-person-walking-arrow-right::before { - content: "\e552"; } +.fa-arrows-up-down { + --fa: "\f07d"; } -.fa-square-envelope::before { - content: "\f199"; } +.fa-arrows-v { + --fa: "\f07d"; } -.fa-envelope-square::before { - content: "\f199"; } +.fa-face-grimace { + --fa: "\f57f"; } -.fa-dice::before { - content: "\f522"; } +.fa-grimace { + --fa: "\f57f"; } -.fa-bowling-ball::before { - content: "\f436"; } +.fa-wheelchair-move { + --fa: "\e2ce"; } -.fa-brain::before { - content: "\f5dc"; } +.fa-wheelchair-alt { + --fa: "\e2ce"; } -.fa-bandage::before { - content: "\f462"; } +.fa-turn-down { + --fa: "\f3be"; } -.fa-band-aid::before { - content: "\f462"; } +.fa-level-down-alt { + --fa: "\f3be"; } -.fa-calendar-minus::before { - content: "\f272"; } +.fa-person-walking-arrow-right { + --fa: "\e552"; } -.fa-circle-xmark::before { - content: "\f057"; } +.fa-square-envelope { + --fa: "\f199"; } -.fa-times-circle::before { - content: "\f057"; } +.fa-envelope-square { + --fa: "\f199"; } -.fa-xmark-circle::before { - content: "\f057"; } +.fa-dice { + --fa: "\f522"; } -.fa-gifts::before { - content: "\f79c"; } +.fa-bowling-ball { + --fa: "\f436"; } -.fa-hotel::before { - content: "\f594"; } +.fa-brain { + --fa: "\f5dc"; } -.fa-earth-asia::before { - content: "\f57e"; } +.fa-bandage { + --fa: "\f462"; } -.fa-globe-asia::before { - content: "\f57e"; } +.fa-band-aid { + --fa: "\f462"; } -.fa-id-card-clip::before { - content: "\f47f"; } +.fa-calendar-minus { + --fa: "\f272"; } -.fa-id-card-alt::before { - content: "\f47f"; } +.fa-circle-xmark { + --fa: "\f057"; } -.fa-magnifying-glass-plus::before { - content: "\f00e"; } +.fa-times-circle { + --fa: "\f057"; } -.fa-search-plus::before { - content: "\f00e"; } +.fa-xmark-circle { + --fa: "\f057"; } -.fa-thumbs-up::before { - content: "\f164"; } +.fa-gifts { + --fa: "\f79c"; } -.fa-user-clock::before { - content: "\f4fd"; } +.fa-hotel { + --fa: "\f594"; } -.fa-hand-dots::before { - content: "\f461"; } +.fa-earth-asia { + --fa: "\f57e"; } -.fa-allergies::before { - content: "\f461"; } +.fa-globe-asia { + --fa: "\f57e"; } -.fa-file-invoice::before { - content: "\f570"; } +.fa-id-card-clip { + --fa: "\f47f"; } -.fa-window-minimize::before { - content: "\f2d1"; } +.fa-id-card-alt { + --fa: "\f47f"; } -.fa-mug-saucer::before { - content: "\f0f4"; } +.fa-magnifying-glass-plus { + --fa: "\f00e"; } -.fa-coffee::before { - content: "\f0f4"; } +.fa-search-plus { + --fa: "\f00e"; } -.fa-brush::before { - content: "\f55d"; } +.fa-thumbs-up { + --fa: "\f164"; } -.fa-mask::before { - content: "\f6fa"; } +.fa-user-clock { + --fa: "\f4fd"; } -.fa-magnifying-glass-minus::before { - content: "\f010"; } +.fa-hand-dots { + --fa: "\f461"; } -.fa-search-minus::before { - content: "\f010"; } +.fa-allergies { + --fa: "\f461"; } -.fa-ruler-vertical::before { - content: "\f548"; } +.fa-file-invoice { + --fa: "\f570"; } -.fa-user-large::before { - content: "\f406"; } +.fa-window-minimize { + --fa: "\f2d1"; } -.fa-user-alt::before { - content: "\f406"; } +.fa-mug-saucer { + --fa: "\f0f4"; } -.fa-train-tram::before { - content: "\e5b4"; } +.fa-coffee { + --fa: "\f0f4"; } -.fa-user-nurse::before { - content: "\f82f"; } +.fa-brush { + --fa: "\f55d"; } -.fa-syringe::before { - content: "\f48e"; } +.fa-file-half-dashed { + --fa: "\e698"; } -.fa-cloud-sun::before { - content: "\f6c4"; } +.fa-mask { + --fa: "\f6fa"; } -.fa-stopwatch-20::before { - content: "\e06f"; } +.fa-magnifying-glass-minus { + --fa: "\f010"; } -.fa-square-full::before { - content: "\f45c"; } +.fa-search-minus { + --fa: "\f010"; } -.fa-magnet::before { - content: "\f076"; } +.fa-ruler-vertical { + --fa: "\f548"; } -.fa-jar::before { - content: "\e516"; } +.fa-user-large { + --fa: "\f406"; } -.fa-note-sticky::before { - content: "\f249"; } +.fa-user-alt { + --fa: "\f406"; } -.fa-sticky-note::before { - content: "\f249"; } +.fa-train-tram { + --fa: "\e5b4"; } -.fa-bug-slash::before { - content: "\e490"; } +.fa-user-nurse { + --fa: "\f82f"; } -.fa-arrow-up-from-water-pump::before { - content: "\e4b6"; } +.fa-syringe { + --fa: "\f48e"; } -.fa-bone::before { - content: "\f5d7"; } +.fa-cloud-sun { + --fa: "\f6c4"; } -.fa-user-injured::before { - content: "\f728"; } +.fa-stopwatch-20 { + --fa: "\e06f"; } -.fa-face-sad-tear::before { - content: "\f5b4"; } +.fa-square-full { + --fa: "\f45c"; } -.fa-sad-tear::before { - content: "\f5b4"; } +.fa-magnet { + --fa: "\f076"; } -.fa-plane::before { - content: "\f072"; } +.fa-jar { + --fa: "\e516"; } -.fa-tent-arrows-down::before { - content: "\e581"; } +.fa-note-sticky { + --fa: "\f249"; } -.fa-exclamation::before { - content: "\21"; } +.fa-sticky-note { + --fa: "\f249"; } -.fa-arrows-spin::before { - content: "\e4bb"; } +.fa-bug-slash { + --fa: "\e490"; } -.fa-print::before { - content: "\f02f"; } +.fa-arrow-up-from-water-pump { + --fa: "\e4b6"; } -.fa-turkish-lira-sign::before { - content: "\e2bb"; } +.fa-bone { + --fa: "\f5d7"; } -.fa-try::before { - content: "\e2bb"; } +.fa-table-cells-row-unlock { + --fa: "\e691"; } -.fa-turkish-lira::before { - content: "\e2bb"; } +.fa-user-injured { + --fa: "\f728"; } -.fa-dollar-sign::before { - content: "\24"; } +.fa-face-sad-tear { + --fa: "\f5b4"; } -.fa-dollar::before { - content: "\24"; } +.fa-sad-tear { + --fa: "\f5b4"; } -.fa-usd::before { - content: "\24"; } +.fa-plane { + --fa: "\f072"; } -.fa-x::before { - content: "\58"; } +.fa-tent-arrows-down { + --fa: "\e581"; } -.fa-magnifying-glass-dollar::before { - content: "\f688"; } +.fa-exclamation { + --fa: "\21"; } -.fa-search-dollar::before { - content: "\f688"; } +.fa-arrows-spin { + --fa: "\e4bb"; } -.fa-users-gear::before { - content: "\f509"; } +.fa-print { + --fa: "\f02f"; } -.fa-users-cog::before { - content: "\f509"; } +.fa-turkish-lira-sign { + --fa: "\e2bb"; } -.fa-person-military-pointing::before { - content: "\e54a"; } +.fa-try { + --fa: "\e2bb"; } -.fa-building-columns::before { - content: "\f19c"; } +.fa-turkish-lira { + --fa: "\e2bb"; } -.fa-bank::before { - content: "\f19c"; } +.fa-dollar-sign { + --fa: "\24"; } -.fa-institution::before { - content: "\f19c"; } +.fa-dollar { + --fa: "\24"; } -.fa-museum::before { - content: "\f19c"; } +.fa-usd { + --fa: "\24"; } -.fa-university::before { - content: "\f19c"; } +.fa-x { + --fa: "\58"; } -.fa-umbrella::before { - content: "\f0e9"; } +.fa-magnifying-glass-dollar { + --fa: "\f688"; } -.fa-trowel::before { - content: "\e589"; } +.fa-search-dollar { + --fa: "\f688"; } -.fa-d::before { - content: "\44"; } +.fa-users-gear { + --fa: "\f509"; } -.fa-stapler::before { - content: "\e5af"; } +.fa-users-cog { + --fa: "\f509"; } -.fa-masks-theater::before { - content: "\f630"; } +.fa-person-military-pointing { + --fa: "\e54a"; } -.fa-theater-masks::before { - content: "\f630"; } +.fa-building-columns { + --fa: "\f19c"; } -.fa-kip-sign::before { - content: "\e1c4"; } +.fa-bank { + --fa: "\f19c"; } -.fa-hand-point-left::before { - content: "\f0a5"; } +.fa-institution { + --fa: "\f19c"; } -.fa-handshake-simple::before { - content: "\f4c6"; } +.fa-museum { + --fa: "\f19c"; } -.fa-handshake-alt::before { - content: "\f4c6"; } +.fa-university { + --fa: "\f19c"; } -.fa-jet-fighter::before { - content: "\f0fb"; } +.fa-umbrella { + --fa: "\f0e9"; } -.fa-fighter-jet::before { - content: "\f0fb"; } +.fa-trowel { + --fa: "\e589"; } -.fa-square-share-nodes::before { - content: "\f1e1"; } +.fa-d { + --fa: "\44"; } -.fa-share-alt-square::before { - content: "\f1e1"; } +.fa-stapler { + --fa: "\e5af"; } -.fa-barcode::before { - content: "\f02a"; } +.fa-masks-theater { + --fa: "\f630"; } -.fa-plus-minus::before { - content: "\e43c"; } +.fa-theater-masks { + --fa: "\f630"; } -.fa-video::before { - content: "\f03d"; } +.fa-kip-sign { + --fa: "\e1c4"; } -.fa-video-camera::before { - content: "\f03d"; } +.fa-hand-point-left { + --fa: "\f0a5"; } -.fa-graduation-cap::before { - content: "\f19d"; } +.fa-handshake-simple { + --fa: "\f4c6"; } -.fa-mortar-board::before { - content: "\f19d"; } +.fa-handshake-alt { + --fa: "\f4c6"; } -.fa-hand-holding-medical::before { - content: "\e05c"; } +.fa-jet-fighter { + --fa: "\f0fb"; } -.fa-person-circle-check::before { - content: "\e53e"; } +.fa-fighter-jet { + --fa: "\f0fb"; } -.fa-turn-up::before { - content: "\f3bf"; } +.fa-square-share-nodes { + --fa: "\f1e1"; } -.fa-level-up-alt::before { - content: "\f3bf"; } +.fa-share-alt-square { + --fa: "\f1e1"; } + +.fa-barcode { + --fa: "\f02a"; } + +.fa-plus-minus { + --fa: "\e43c"; } + +.fa-video { + --fa: "\f03d"; } + +.fa-video-camera { + --fa: "\f03d"; } + +.fa-graduation-cap { + --fa: "\f19d"; } + +.fa-mortar-board { + --fa: "\f19d"; } + +.fa-hand-holding-medical { + --fa: "\e05c"; } + +.fa-person-circle-check { + --fa: "\e53e"; } + +.fa-turn-up { + --fa: "\f3bf"; } + +.fa-level-up-alt { + --fa: "\f3bf"; } .sr-only, .fa-sr-only { @@ -6388,1580 +6256,1595 @@ readers do not read off random characters that represent icons */ .fa-brands { font-weight: 400; } -.fa-monero:before { - content: "\f3d0"; } +.fa-monero { + --fa: "\f3d0"; } + +.fa-hooli { + --fa: "\f427"; } + +.fa-yelp { + --fa: "\f1e9"; } + +.fa-cc-visa { + --fa: "\f1f0"; } + +.fa-lastfm { + --fa: "\f202"; } + +.fa-shopware { + --fa: "\f5b5"; } -.fa-hooli:before { - content: "\f427"; } +.fa-creative-commons-nc { + --fa: "\f4e8"; } -.fa-yelp:before { - content: "\f1e9"; } +.fa-aws { + --fa: "\f375"; } -.fa-cc-visa:before { - content: "\f1f0"; } +.fa-redhat { + --fa: "\f7bc"; } -.fa-lastfm:before { - content: "\f202"; } +.fa-yoast { + --fa: "\f2b1"; } -.fa-shopware:before { - content: "\f5b5"; } +.fa-cloudflare { + --fa: "\e07d"; } -.fa-creative-commons-nc:before { - content: "\f4e8"; } +.fa-ups { + --fa: "\f7e0"; } -.fa-aws:before { - content: "\f375"; } +.fa-pixiv { + --fa: "\e640"; } -.fa-redhat:before { - content: "\f7bc"; } +.fa-wpexplorer { + --fa: "\f2de"; } -.fa-yoast:before { - content: "\f2b1"; } +.fa-dyalog { + --fa: "\f399"; } -.fa-cloudflare:before { - content: "\e07d"; } +.fa-bity { + --fa: "\f37a"; } -.fa-ups:before { - content: "\f7e0"; } +.fa-stackpath { + --fa: "\f842"; } -.fa-pixiv:before { - content: "\e640"; } +.fa-buysellads { + --fa: "\f20d"; } -.fa-wpexplorer:before { - content: "\f2de"; } +.fa-first-order { + --fa: "\f2b0"; } -.fa-dyalog:before { - content: "\f399"; } +.fa-modx { + --fa: "\f285"; } -.fa-bity:before { - content: "\f37a"; } +.fa-guilded { + --fa: "\e07e"; } -.fa-stackpath:before { - content: "\f842"; } +.fa-vnv { + --fa: "\f40b"; } -.fa-buysellads:before { - content: "\f20d"; } +.fa-square-js { + --fa: "\f3b9"; } -.fa-first-order:before { - content: "\f2b0"; } +.fa-js-square { + --fa: "\f3b9"; } -.fa-modx:before { - content: "\f285"; } +.fa-microsoft { + --fa: "\f3ca"; } -.fa-guilded:before { - content: "\e07e"; } +.fa-qq { + --fa: "\f1d6"; } -.fa-vnv:before { - content: "\f40b"; } +.fa-orcid { + --fa: "\f8d2"; } -.fa-square-js:before { - content: "\f3b9"; } +.fa-java { + --fa: "\f4e4"; } -.fa-js-square:before { - content: "\f3b9"; } +.fa-invision { + --fa: "\f7b0"; } -.fa-microsoft:before { - content: "\f3ca"; } +.fa-creative-commons-pd-alt { + --fa: "\f4ed"; } -.fa-qq:before { - content: "\f1d6"; } +.fa-centercode { + --fa: "\f380"; } -.fa-orcid:before { - content: "\f8d2"; } +.fa-glide-g { + --fa: "\f2a6"; } -.fa-java:before { - content: "\f4e4"; } +.fa-drupal { + --fa: "\f1a9"; } -.fa-invision:before { - content: "\f7b0"; } +.fa-jxl { + --fa: "\e67b"; } -.fa-creative-commons-pd-alt:before { - content: "\f4ed"; } +.fa-dart-lang { + --fa: "\e693"; } -.fa-centercode:before { - content: "\f380"; } +.fa-hire-a-helper { + --fa: "\f3b0"; } -.fa-glide-g:before { - content: "\f2a6"; } +.fa-creative-commons-by { + --fa: "\f4e7"; } -.fa-drupal:before { - content: "\f1a9"; } +.fa-unity { + --fa: "\e049"; } -.fa-jxl:before { - content: "\e67b"; } +.fa-whmcs { + --fa: "\f40d"; } -.fa-hire-a-helper:before { - content: "\f3b0"; } +.fa-rocketchat { + --fa: "\f3e8"; } -.fa-creative-commons-by:before { - content: "\f4e7"; } +.fa-vk { + --fa: "\f189"; } -.fa-unity:before { - content: "\e049"; } +.fa-untappd { + --fa: "\f405"; } -.fa-whmcs:before { - content: "\f40d"; } +.fa-mailchimp { + --fa: "\f59e"; } -.fa-rocketchat:before { - content: "\f3e8"; } +.fa-css3-alt { + --fa: "\f38b"; } -.fa-vk:before { - content: "\f189"; } +.fa-square-reddit { + --fa: "\f1a2"; } -.fa-untappd:before { - content: "\f405"; } +.fa-reddit-square { + --fa: "\f1a2"; } -.fa-mailchimp:before { - content: "\f59e"; } +.fa-vimeo-v { + --fa: "\f27d"; } -.fa-css3-alt:before { - content: "\f38b"; } +.fa-contao { + --fa: "\f26d"; } -.fa-square-reddit:before { - content: "\f1a2"; } +.fa-square-font-awesome { + --fa: "\e5ad"; } -.fa-reddit-square:before { - content: "\f1a2"; } +.fa-deskpro { + --fa: "\f38f"; } -.fa-vimeo-v:before { - content: "\f27d"; } +.fa-brave { + --fa: "\e63c"; } -.fa-contao:before { - content: "\f26d"; } +.fa-sistrix { + --fa: "\f3ee"; } -.fa-square-font-awesome:before { - content: "\e5ad"; } +.fa-square-instagram { + --fa: "\e055"; } -.fa-deskpro:before { - content: "\f38f"; } +.fa-instagram-square { + --fa: "\e055"; } -.fa-brave:before { - content: "\e63c"; } +.fa-battle-net { + --fa: "\f835"; } -.fa-sistrix:before { - content: "\f3ee"; } +.fa-the-red-yeti { + --fa: "\f69d"; } -.fa-square-instagram:before { - content: "\e055"; } +.fa-square-hacker-news { + --fa: "\f3af"; } -.fa-instagram-square:before { - content: "\e055"; } +.fa-hacker-news-square { + --fa: "\f3af"; } -.fa-battle-net:before { - content: "\f835"; } +.fa-edge { + --fa: "\f282"; } -.fa-the-red-yeti:before { - content: "\f69d"; } +.fa-threads { + --fa: "\e618"; } -.fa-square-hacker-news:before { - content: "\f3af"; } +.fa-napster { + --fa: "\f3d2"; } -.fa-hacker-news-square:before { - content: "\f3af"; } +.fa-square-snapchat { + --fa: "\f2ad"; } -.fa-edge:before { - content: "\f282"; } +.fa-snapchat-square { + --fa: "\f2ad"; } -.fa-threads:before { - content: "\e618"; } +.fa-google-plus-g { + --fa: "\f0d5"; } -.fa-napster:before { - content: "\f3d2"; } +.fa-artstation { + --fa: "\f77a"; } -.fa-square-snapchat:before { - content: "\f2ad"; } +.fa-markdown { + --fa: "\f60f"; } -.fa-snapchat-square:before { - content: "\f2ad"; } +.fa-sourcetree { + --fa: "\f7d3"; } -.fa-google-plus-g:before { - content: "\f0d5"; } +.fa-google-plus { + --fa: "\f2b3"; } -.fa-artstation:before { - content: "\f77a"; } +.fa-diaspora { + --fa: "\f791"; } -.fa-markdown:before { - content: "\f60f"; } +.fa-foursquare { + --fa: "\f180"; } -.fa-sourcetree:before { - content: "\f7d3"; } +.fa-stack-overflow { + --fa: "\f16c"; } -.fa-google-plus:before { - content: "\f2b3"; } +.fa-github-alt { + --fa: "\f113"; } -.fa-diaspora:before { - content: "\f791"; } +.fa-phoenix-squadron { + --fa: "\f511"; } -.fa-foursquare:before { - content: "\f180"; } +.fa-pagelines { + --fa: "\f18c"; } -.fa-stack-overflow:before { - content: "\f16c"; } +.fa-algolia { + --fa: "\f36c"; } -.fa-github-alt:before { - content: "\f113"; } +.fa-red-river { + --fa: "\f3e3"; } -.fa-phoenix-squadron:before { - content: "\f511"; } +.fa-creative-commons-sa { + --fa: "\f4ef"; } -.fa-pagelines:before { - content: "\f18c"; } +.fa-safari { + --fa: "\f267"; } -.fa-algolia:before { - content: "\f36c"; } +.fa-google { + --fa: "\f1a0"; } -.fa-red-river:before { - content: "\f3e3"; } +.fa-square-font-awesome-stroke { + --fa: "\f35c"; } -.fa-creative-commons-sa:before { - content: "\f4ef"; } +.fa-font-awesome-alt { + --fa: "\f35c"; } -.fa-safari:before { - content: "\f267"; } +.fa-atlassian { + --fa: "\f77b"; } -.fa-google:before { - content: "\f1a0"; } +.fa-linkedin-in { + --fa: "\f0e1"; } -.fa-square-font-awesome-stroke:before { - content: "\f35c"; } +.fa-digital-ocean { + --fa: "\f391"; } -.fa-font-awesome-alt:before { - content: "\f35c"; } +.fa-nimblr { + --fa: "\f5a8"; } -.fa-atlassian:before { - content: "\f77b"; } +.fa-chromecast { + --fa: "\f838"; } -.fa-linkedin-in:before { - content: "\f0e1"; } +.fa-evernote { + --fa: "\f839"; } -.fa-digital-ocean:before { - content: "\f391"; } +.fa-hacker-news { + --fa: "\f1d4"; } -.fa-nimblr:before { - content: "\f5a8"; } +.fa-creative-commons-sampling { + --fa: "\f4f0"; } -.fa-chromecast:before { - content: "\f838"; } +.fa-adversal { + --fa: "\f36a"; } -.fa-evernote:before { - content: "\f839"; } +.fa-creative-commons { + --fa: "\f25e"; } -.fa-hacker-news:before { - content: "\f1d4"; } +.fa-watchman-monitoring { + --fa: "\e087"; } -.fa-creative-commons-sampling:before { - content: "\f4f0"; } +.fa-fonticons { + --fa: "\f280"; } -.fa-adversal:before { - content: "\f36a"; } +.fa-weixin { + --fa: "\f1d7"; } -.fa-creative-commons:before { - content: "\f25e"; } +.fa-shirtsinbulk { + --fa: "\f214"; } -.fa-watchman-monitoring:before { - content: "\e087"; } +.fa-codepen { + --fa: "\f1cb"; } -.fa-fonticons:before { - content: "\f280"; } +.fa-git-alt { + --fa: "\f841"; } -.fa-weixin:before { - content: "\f1d7"; } +.fa-lyft { + --fa: "\f3c3"; } -.fa-shirtsinbulk:before { - content: "\f214"; } +.fa-rev { + --fa: "\f5b2"; } -.fa-codepen:before { - content: "\f1cb"; } +.fa-windows { + --fa: "\f17a"; } -.fa-git-alt:before { - content: "\f841"; } +.fa-wizards-of-the-coast { + --fa: "\f730"; } -.fa-lyft:before { - content: "\f3c3"; } +.fa-square-viadeo { + --fa: "\f2aa"; } -.fa-rev:before { - content: "\f5b2"; } +.fa-viadeo-square { + --fa: "\f2aa"; } -.fa-windows:before { - content: "\f17a"; } +.fa-meetup { + --fa: "\f2e0"; } -.fa-wizards-of-the-coast:before { - content: "\f730"; } +.fa-centos { + --fa: "\f789"; } -.fa-square-viadeo:before { - content: "\f2aa"; } +.fa-adn { + --fa: "\f170"; } -.fa-viadeo-square:before { - content: "\f2aa"; } +.fa-cloudsmith { + --fa: "\f384"; } -.fa-meetup:before { - content: "\f2e0"; } +.fa-opensuse { + --fa: "\e62b"; } -.fa-centos:before { - content: "\f789"; } +.fa-pied-piper-alt { + --fa: "\f1a8"; } -.fa-adn:before { - content: "\f170"; } +.fa-square-dribbble { + --fa: "\f397"; } -.fa-cloudsmith:before { - content: "\f384"; } +.fa-dribbble-square { + --fa: "\f397"; } -.fa-opensuse:before { - content: "\e62b"; } +.fa-codiepie { + --fa: "\f284"; } -.fa-pied-piper-alt:before { - content: "\f1a8"; } +.fa-node { + --fa: "\f419"; } -.fa-square-dribbble:before { - content: "\f397"; } +.fa-mix { + --fa: "\f3cb"; } -.fa-dribbble-square:before { - content: "\f397"; } +.fa-steam { + --fa: "\f1b6"; } -.fa-codiepie:before { - content: "\f284"; } +.fa-cc-apple-pay { + --fa: "\f416"; } -.fa-node:before { - content: "\f419"; } +.fa-scribd { + --fa: "\f28a"; } -.fa-mix:before { - content: "\f3cb"; } +.fa-debian { + --fa: "\e60b"; } -.fa-steam:before { - content: "\f1b6"; } +.fa-openid { + --fa: "\f19b"; } -.fa-cc-apple-pay:before { - content: "\f416"; } +.fa-instalod { + --fa: "\e081"; } -.fa-scribd:before { - content: "\f28a"; } +.fa-files-pinwheel { + --fa: "\e69f"; } -.fa-debian:before { - content: "\e60b"; } +.fa-expeditedssl { + --fa: "\f23e"; } -.fa-openid:before { - content: "\f19b"; } +.fa-sellcast { + --fa: "\f2da"; } -.fa-instalod:before { - content: "\e081"; } +.fa-square-twitter { + --fa: "\f081"; } -.fa-expeditedssl:before { - content: "\f23e"; } +.fa-twitter-square { + --fa: "\f081"; } -.fa-sellcast:before { - content: "\f2da"; } +.fa-r-project { + --fa: "\f4f7"; } -.fa-square-twitter:before { - content: "\f081"; } +.fa-delicious { + --fa: "\f1a5"; } -.fa-twitter-square:before { - content: "\f081"; } +.fa-freebsd { + --fa: "\f3a4"; } -.fa-r-project:before { - content: "\f4f7"; } +.fa-vuejs { + --fa: "\f41f"; } -.fa-delicious:before { - content: "\f1a5"; } +.fa-accusoft { + --fa: "\f369"; } -.fa-freebsd:before { - content: "\f3a4"; } +.fa-ioxhost { + --fa: "\f208"; } -.fa-vuejs:before { - content: "\f41f"; } +.fa-fonticons-fi { + --fa: "\f3a2"; } -.fa-accusoft:before { - content: "\f369"; } +.fa-app-store { + --fa: "\f36f"; } -.fa-ioxhost:before { - content: "\f208"; } +.fa-cc-mastercard { + --fa: "\f1f1"; } -.fa-fonticons-fi:before { - content: "\f3a2"; } +.fa-itunes-note { + --fa: "\f3b5"; } -.fa-app-store:before { - content: "\f36f"; } +.fa-golang { + --fa: "\e40f"; } -.fa-cc-mastercard:before { - content: "\f1f1"; } +.fa-kickstarter { + --fa: "\f3bb"; } -.fa-itunes-note:before { - content: "\f3b5"; } +.fa-square-kickstarter { + --fa: "\f3bb"; } -.fa-golang:before { - content: "\e40f"; } +.fa-grav { + --fa: "\f2d6"; } -.fa-kickstarter:before { - content: "\f3bb"; } +.fa-weibo { + --fa: "\f18a"; } -.fa-square-kickstarter:before { - content: "\f3bb"; } +.fa-uncharted { + --fa: "\e084"; } -.fa-grav:before { - content: "\f2d6"; } +.fa-firstdraft { + --fa: "\f3a1"; } -.fa-weibo:before { - content: "\f18a"; } +.fa-square-youtube { + --fa: "\f431"; } -.fa-uncharted:before { - content: "\e084"; } +.fa-youtube-square { + --fa: "\f431"; } -.fa-firstdraft:before { - content: "\f3a1"; } +.fa-wikipedia-w { + --fa: "\f266"; } -.fa-square-youtube:before { - content: "\f431"; } +.fa-wpressr { + --fa: "\f3e4"; } -.fa-youtube-square:before { - content: "\f431"; } +.fa-rendact { + --fa: "\f3e4"; } -.fa-wikipedia-w:before { - content: "\f266"; } +.fa-angellist { + --fa: "\f209"; } -.fa-wpressr:before { - content: "\f3e4"; } +.fa-galactic-republic { + --fa: "\f50c"; } -.fa-rendact:before { - content: "\f3e4"; } +.fa-nfc-directional { + --fa: "\e530"; } -.fa-angellist:before { - content: "\f209"; } +.fa-skype { + --fa: "\f17e"; } -.fa-galactic-republic:before { - content: "\f50c"; } +.fa-joget { + --fa: "\f3b7"; } -.fa-nfc-directional:before { - content: "\e530"; } +.fa-fedora { + --fa: "\f798"; } -.fa-skype:before { - content: "\f17e"; } +.fa-stripe-s { + --fa: "\f42a"; } -.fa-joget:before { - content: "\f3b7"; } +.fa-meta { + --fa: "\e49b"; } -.fa-fedora:before { - content: "\f798"; } +.fa-laravel { + --fa: "\f3bd"; } -.fa-stripe-s:before { - content: "\f42a"; } +.fa-hotjar { + --fa: "\f3b1"; } -.fa-meta:before { - content: "\e49b"; } +.fa-bluetooth-b { + --fa: "\f294"; } -.fa-laravel:before { - content: "\f3bd"; } +.fa-square-letterboxd { + --fa: "\e62e"; } -.fa-hotjar:before { - content: "\f3b1"; } +.fa-sticker-mule { + --fa: "\f3f7"; } -.fa-bluetooth-b:before { - content: "\f294"; } +.fa-creative-commons-zero { + --fa: "\f4f3"; } -.fa-square-letterboxd:before { - content: "\e62e"; } +.fa-hips { + --fa: "\f452"; } -.fa-sticker-mule:before { - content: "\f3f7"; } +.fa-css { + --fa: "\e6a2"; } -.fa-creative-commons-zero:before { - content: "\f4f3"; } +.fa-behance { + --fa: "\f1b4"; } -.fa-hips:before { - content: "\f452"; } +.fa-reddit { + --fa: "\f1a1"; } -.fa-behance:before { - content: "\f1b4"; } +.fa-discord { + --fa: "\f392"; } -.fa-reddit:before { - content: "\f1a1"; } +.fa-chrome { + --fa: "\f268"; } -.fa-discord:before { - content: "\f392"; } +.fa-app-store-ios { + --fa: "\f370"; } -.fa-chrome:before { - content: "\f268"; } +.fa-cc-discover { + --fa: "\f1f2"; } -.fa-app-store-ios:before { - content: "\f370"; } +.fa-wpbeginner { + --fa: "\f297"; } -.fa-cc-discover:before { - content: "\f1f2"; } +.fa-confluence { + --fa: "\f78d"; } -.fa-wpbeginner:before { - content: "\f297"; } +.fa-shoelace { + --fa: "\e60c"; } -.fa-confluence:before { - content: "\f78d"; } +.fa-mdb { + --fa: "\f8ca"; } -.fa-shoelace:before { - content: "\e60c"; } +.fa-dochub { + --fa: "\f394"; } -.fa-mdb:before { - content: "\f8ca"; } +.fa-accessible-icon { + --fa: "\f368"; } -.fa-dochub:before { - content: "\f394"; } +.fa-ebay { + --fa: "\f4f4"; } -.fa-accessible-icon:before { - content: "\f368"; } +.fa-amazon { + --fa: "\f270"; } -.fa-ebay:before { - content: "\f4f4"; } +.fa-unsplash { + --fa: "\e07c"; } -.fa-amazon:before { - content: "\f270"; } +.fa-yarn { + --fa: "\f7e3"; } -.fa-unsplash:before { - content: "\e07c"; } +.fa-square-steam { + --fa: "\f1b7"; } -.fa-yarn:before { - content: "\f7e3"; } +.fa-steam-square { + --fa: "\f1b7"; } -.fa-square-steam:before { - content: "\f1b7"; } +.fa-500px { + --fa: "\f26e"; } -.fa-steam-square:before { - content: "\f1b7"; } +.fa-square-vimeo { + --fa: "\f194"; } -.fa-500px:before { - content: "\f26e"; } +.fa-vimeo-square { + --fa: "\f194"; } -.fa-square-vimeo:before { - content: "\f194"; } +.fa-asymmetrik { + --fa: "\f372"; } -.fa-vimeo-square:before { - content: "\f194"; } +.fa-font-awesome { + --fa: "\f2b4"; } -.fa-asymmetrik:before { - content: "\f372"; } +.fa-font-awesome-flag { + --fa: "\f2b4"; } -.fa-font-awesome:before { - content: "\f2b4"; } +.fa-font-awesome-logo-full { + --fa: "\f2b4"; } -.fa-font-awesome-flag:before { - content: "\f2b4"; } +.fa-gratipay { + --fa: "\f184"; } -.fa-font-awesome-logo-full:before { - content: "\f2b4"; } +.fa-apple { + --fa: "\f179"; } -.fa-gratipay:before { - content: "\f184"; } +.fa-hive { + --fa: "\e07f"; } -.fa-apple:before { - content: "\f179"; } +.fa-gitkraken { + --fa: "\f3a6"; } -.fa-hive:before { - content: "\e07f"; } +.fa-keybase { + --fa: "\f4f5"; } -.fa-gitkraken:before { - content: "\f3a6"; } +.fa-apple-pay { + --fa: "\f415"; } -.fa-keybase:before { - content: "\f4f5"; } +.fa-padlet { + --fa: "\e4a0"; } -.fa-apple-pay:before { - content: "\f415"; } +.fa-amazon-pay { + --fa: "\f42c"; } -.fa-padlet:before { - content: "\e4a0"; } +.fa-square-github { + --fa: "\f092"; } -.fa-amazon-pay:before { - content: "\f42c"; } +.fa-github-square { + --fa: "\f092"; } -.fa-square-github:before { - content: "\f092"; } +.fa-stumbleupon { + --fa: "\f1a4"; } -.fa-github-square:before { - content: "\f092"; } +.fa-fedex { + --fa: "\f797"; } -.fa-stumbleupon:before { - content: "\f1a4"; } +.fa-phoenix-framework { + --fa: "\f3dc"; } -.fa-fedex:before { - content: "\f797"; } +.fa-shopify { + --fa: "\e057"; } -.fa-phoenix-framework:before { - content: "\f3dc"; } +.fa-neos { + --fa: "\f612"; } -.fa-shopify:before { - content: "\e057"; } +.fa-square-threads { + --fa: "\e619"; } -.fa-neos:before { - content: "\f612"; } +.fa-hackerrank { + --fa: "\f5f7"; } -.fa-square-threads:before { - content: "\e619"; } +.fa-researchgate { + --fa: "\f4f8"; } -.fa-hackerrank:before { - content: "\f5f7"; } +.fa-swift { + --fa: "\f8e1"; } -.fa-researchgate:before { - content: "\f4f8"; } +.fa-angular { + --fa: "\f420"; } -.fa-swift:before { - content: "\f8e1"; } +.fa-speakap { + --fa: "\f3f3"; } -.fa-angular:before { - content: "\f420"; } +.fa-angrycreative { + --fa: "\f36e"; } -.fa-speakap:before { - content: "\f3f3"; } +.fa-y-combinator { + --fa: "\f23b"; } -.fa-angrycreative:before { - content: "\f36e"; } +.fa-empire { + --fa: "\f1d1"; } -.fa-y-combinator:before { - content: "\f23b"; } +.fa-envira { + --fa: "\f299"; } -.fa-empire:before { - content: "\f1d1"; } +.fa-google-scholar { + --fa: "\e63b"; } -.fa-envira:before { - content: "\f299"; } +.fa-square-gitlab { + --fa: "\e5ae"; } -.fa-google-scholar:before { - content: "\e63b"; } +.fa-gitlab-square { + --fa: "\e5ae"; } -.fa-square-gitlab:before { - content: "\e5ae"; } +.fa-studiovinari { + --fa: "\f3f8"; } -.fa-gitlab-square:before { - content: "\e5ae"; } +.fa-pied-piper { + --fa: "\f2ae"; } -.fa-studiovinari:before { - content: "\f3f8"; } +.fa-wordpress { + --fa: "\f19a"; } -.fa-pied-piper:before { - content: "\f2ae"; } +.fa-product-hunt { + --fa: "\f288"; } -.fa-wordpress:before { - content: "\f19a"; } +.fa-firefox { + --fa: "\f269"; } -.fa-product-hunt:before { - content: "\f288"; } +.fa-linode { + --fa: "\f2b8"; } -.fa-firefox:before { - content: "\f269"; } +.fa-goodreads { + --fa: "\f3a8"; } -.fa-linode:before { - content: "\f2b8"; } +.fa-square-odnoklassniki { + --fa: "\f264"; } -.fa-goodreads:before { - content: "\f3a8"; } +.fa-odnoklassniki-square { + --fa: "\f264"; } -.fa-square-odnoklassniki:before { - content: "\f264"; } +.fa-jsfiddle { + --fa: "\f1cc"; } -.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa-sith { + --fa: "\f512"; } -.fa-jsfiddle:before { - content: "\f1cc"; } +.fa-themeisle { + --fa: "\f2b2"; } -.fa-sith:before { - content: "\f512"; } +.fa-page4 { + --fa: "\f3d7"; } -.fa-themeisle:before { - content: "\f2b2"; } +.fa-hashnode { + --fa: "\e499"; } -.fa-page4:before { - content: "\f3d7"; } +.fa-react { + --fa: "\f41b"; } -.fa-hashnode:before { - content: "\e499"; } +.fa-cc-paypal { + --fa: "\f1f4"; } -.fa-react:before { - content: "\f41b"; } +.fa-squarespace { + --fa: "\f5be"; } -.fa-cc-paypal:before { - content: "\f1f4"; } +.fa-cc-stripe { + --fa: "\f1f5"; } -.fa-squarespace:before { - content: "\f5be"; } +.fa-creative-commons-share { + --fa: "\f4f2"; } -.fa-cc-stripe:before { - content: "\f1f5"; } +.fa-bitcoin { + --fa: "\f379"; } -.fa-creative-commons-share:before { - content: "\f4f2"; } +.fa-keycdn { + --fa: "\f3ba"; } -.fa-bitcoin:before { - content: "\f379"; } +.fa-opera { + --fa: "\f26a"; } -.fa-keycdn:before { - content: "\f3ba"; } +.fa-itch-io { + --fa: "\f83a"; } -.fa-opera:before { - content: "\f26a"; } +.fa-umbraco { + --fa: "\f8e8"; } -.fa-itch-io:before { - content: "\f83a"; } +.fa-galactic-senate { + --fa: "\f50d"; } -.fa-umbraco:before { - content: "\f8e8"; } +.fa-ubuntu { + --fa: "\f7df"; } -.fa-galactic-senate:before { - content: "\f50d"; } +.fa-draft2digital { + --fa: "\f396"; } -.fa-ubuntu:before { - content: "\f7df"; } +.fa-stripe { + --fa: "\f429"; } -.fa-draft2digital:before { - content: "\f396"; } +.fa-houzz { + --fa: "\f27c"; } -.fa-stripe:before { - content: "\f429"; } +.fa-gg { + --fa: "\f260"; } -.fa-houzz:before { - content: "\f27c"; } +.fa-dhl { + --fa: "\f790"; } -.fa-gg:before { - content: "\f260"; } +.fa-square-pinterest { + --fa: "\f0d3"; } -.fa-dhl:before { - content: "\f790"; } +.fa-pinterest-square { + --fa: "\f0d3"; } -.fa-square-pinterest:before { - content: "\f0d3"; } +.fa-xing { + --fa: "\f168"; } -.fa-pinterest-square:before { - content: "\f0d3"; } +.fa-blackberry { + --fa: "\f37b"; } -.fa-xing:before { - content: "\f168"; } +.fa-creative-commons-pd { + --fa: "\f4ec"; } -.fa-blackberry:before { - content: "\f37b"; } +.fa-playstation { + --fa: "\f3df"; } -.fa-creative-commons-pd:before { - content: "\f4ec"; } +.fa-quinscape { + --fa: "\f459"; } -.fa-playstation:before { - content: "\f3df"; } +.fa-less { + --fa: "\f41d"; } -.fa-quinscape:before { - content: "\f459"; } +.fa-blogger-b { + --fa: "\f37d"; } -.fa-less:before { - content: "\f41d"; } +.fa-opencart { + --fa: "\f23d"; } -.fa-blogger-b:before { - content: "\f37d"; } +.fa-vine { + --fa: "\f1ca"; } -.fa-opencart:before { - content: "\f23d"; } +.fa-signal-messenger { + --fa: "\e663"; } -.fa-vine:before { - content: "\f1ca"; } +.fa-paypal { + --fa: "\f1ed"; } -.fa-signal-messenger:before { - content: "\e663"; } +.fa-gitlab { + --fa: "\f296"; } -.fa-paypal:before { - content: "\f1ed"; } +.fa-typo3 { + --fa: "\f42b"; } -.fa-gitlab:before { - content: "\f296"; } +.fa-reddit-alien { + --fa: "\f281"; } -.fa-typo3:before { - content: "\f42b"; } +.fa-yahoo { + --fa: "\f19e"; } -.fa-reddit-alien:before { - content: "\f281"; } +.fa-dailymotion { + --fa: "\e052"; } -.fa-yahoo:before { - content: "\f19e"; } +.fa-affiliatetheme { + --fa: "\f36b"; } -.fa-dailymotion:before { - content: "\e052"; } +.fa-pied-piper-pp { + --fa: "\f1a7"; } -.fa-affiliatetheme:before { - content: "\f36b"; } +.fa-bootstrap { + --fa: "\f836"; } -.fa-pied-piper-pp:before { - content: "\f1a7"; } +.fa-odnoklassniki { + --fa: "\f263"; } -.fa-bootstrap:before { - content: "\f836"; } +.fa-nfc-symbol { + --fa: "\e531"; } -.fa-odnoklassniki:before { - content: "\f263"; } +.fa-mintbit { + --fa: "\e62f"; } -.fa-nfc-symbol:before { - content: "\e531"; } +.fa-ethereum { + --fa: "\f42e"; } -.fa-mintbit:before { - content: "\e62f"; } +.fa-speaker-deck { + --fa: "\f83c"; } -.fa-ethereum:before { - content: "\f42e"; } +.fa-creative-commons-nc-eu { + --fa: "\f4e9"; } -.fa-speaker-deck:before { - content: "\f83c"; } +.fa-patreon { + --fa: "\f3d9"; } -.fa-creative-commons-nc-eu:before { - content: "\f4e9"; } +.fa-avianex { + --fa: "\f374"; } -.fa-patreon:before { - content: "\f3d9"; } +.fa-ello { + --fa: "\f5f1"; } -.fa-avianex:before { - content: "\f374"; } +.fa-gofore { + --fa: "\f3a7"; } -.fa-ello:before { - content: "\f5f1"; } +.fa-bimobject { + --fa: "\f378"; } -.fa-gofore:before { - content: "\f3a7"; } +.fa-brave-reverse { + --fa: "\e63d"; } -.fa-bimobject:before { - content: "\f378"; } +.fa-facebook-f { + --fa: "\f39e"; } -.fa-brave-reverse:before { - content: "\e63d"; } +.fa-square-google-plus { + --fa: "\f0d4"; } -.fa-facebook-f:before { - content: "\f39e"; } +.fa-google-plus-square { + --fa: "\f0d4"; } -.fa-square-google-plus:before { - content: "\f0d4"; } +.fa-web-awesome { + --fa: "\e682"; } -.fa-google-plus-square:before { - content: "\f0d4"; } +.fa-mandalorian { + --fa: "\f50f"; } -.fa-web-awesome:before { - content: "\e682"; } +.fa-first-order-alt { + --fa: "\f50a"; } -.fa-mandalorian:before { - content: "\f50f"; } +.fa-osi { + --fa: "\f41a"; } -.fa-first-order-alt:before { - content: "\f50a"; } +.fa-google-wallet { + --fa: "\f1ee"; } -.fa-osi:before { - content: "\f41a"; } +.fa-d-and-d-beyond { + --fa: "\f6ca"; } -.fa-google-wallet:before { - content: "\f1ee"; } +.fa-periscope { + --fa: "\f3da"; } -.fa-d-and-d-beyond:before { - content: "\f6ca"; } +.fa-fulcrum { + --fa: "\f50b"; } -.fa-periscope:before { - content: "\f3da"; } +.fa-cloudscale { + --fa: "\f383"; } -.fa-fulcrum:before { - content: "\f50b"; } +.fa-forumbee { + --fa: "\f211"; } -.fa-cloudscale:before { - content: "\f383"; } +.fa-mizuni { + --fa: "\f3cc"; } -.fa-forumbee:before { - content: "\f211"; } +.fa-schlix { + --fa: "\f3ea"; } -.fa-mizuni:before { - content: "\f3cc"; } +.fa-square-xing { + --fa: "\f169"; } -.fa-schlix:before { - content: "\f3ea"; } +.fa-xing-square { + --fa: "\f169"; } -.fa-square-xing:before { - content: "\f169"; } +.fa-bandcamp { + --fa: "\f2d5"; } -.fa-xing-square:before { - content: "\f169"; } +.fa-wpforms { + --fa: "\f298"; } -.fa-bandcamp:before { - content: "\f2d5"; } +.fa-cloudversify { + --fa: "\f385"; } -.fa-wpforms:before { - content: "\f298"; } +.fa-usps { + --fa: "\f7e1"; } -.fa-cloudversify:before { - content: "\f385"; } +.fa-megaport { + --fa: "\f5a3"; } -.fa-usps:before { - content: "\f7e1"; } +.fa-magento { + --fa: "\f3c4"; } -.fa-megaport:before { - content: "\f5a3"; } +.fa-spotify { + --fa: "\f1bc"; } -.fa-magento:before { - content: "\f3c4"; } +.fa-optin-monster { + --fa: "\f23c"; } -.fa-spotify:before { - content: "\f1bc"; } +.fa-fly { + --fa: "\f417"; } -.fa-optin-monster:before { - content: "\f23c"; } +.fa-square-bluesky { + --fa: "\e6a3"; } -.fa-fly:before { - content: "\f417"; } +.fa-aviato { + --fa: "\f421"; } -.fa-aviato:before { - content: "\f421"; } +.fa-itunes { + --fa: "\f3b4"; } -.fa-itunes:before { - content: "\f3b4"; } +.fa-cuttlefish { + --fa: "\f38c"; } -.fa-cuttlefish:before { - content: "\f38c"; } +.fa-blogger { + --fa: "\f37c"; } -.fa-blogger:before { - content: "\f37c"; } +.fa-flickr { + --fa: "\f16e"; } -.fa-flickr:before { - content: "\f16e"; } +.fa-viber { + --fa: "\f409"; } -.fa-viber:before { - content: "\f409"; } +.fa-soundcloud { + --fa: "\f1be"; } -.fa-soundcloud:before { - content: "\f1be"; } +.fa-digg { + --fa: "\f1a6"; } -.fa-digg:before { - content: "\f1a6"; } +.fa-tencent-weibo { + --fa: "\f1d5"; } -.fa-tencent-weibo:before { - content: "\f1d5"; } +.fa-letterboxd { + --fa: "\e62d"; } -.fa-letterboxd:before { - content: "\e62d"; } +.fa-symfony { + --fa: "\f83d"; } -.fa-symfony:before { - content: "\f83d"; } +.fa-maxcdn { + --fa: "\f136"; } -.fa-maxcdn:before { - content: "\f136"; } +.fa-etsy { + --fa: "\f2d7"; } -.fa-etsy:before { - content: "\f2d7"; } +.fa-facebook-messenger { + --fa: "\f39f"; } -.fa-facebook-messenger:before { - content: "\f39f"; } +.fa-audible { + --fa: "\f373"; } -.fa-audible:before { - content: "\f373"; } +.fa-think-peaks { + --fa: "\f731"; } -.fa-think-peaks:before { - content: "\f731"; } +.fa-bilibili { + --fa: "\e3d9"; } -.fa-bilibili:before { - content: "\e3d9"; } +.fa-erlang { + --fa: "\f39d"; } -.fa-erlang:before { - content: "\f39d"; } +.fa-x-twitter { + --fa: "\e61b"; } -.fa-x-twitter:before { - content: "\e61b"; } +.fa-cotton-bureau { + --fa: "\f89e"; } -.fa-cotton-bureau:before { - content: "\f89e"; } +.fa-dashcube { + --fa: "\f210"; } -.fa-dashcube:before { - content: "\f210"; } +.fa-42-group { + --fa: "\e080"; } -.fa-42-group:before { - content: "\e080"; } +.fa-innosoft { + --fa: "\e080"; } -.fa-innosoft:before { - content: "\e080"; } +.fa-stack-exchange { + --fa: "\f18d"; } -.fa-stack-exchange:before { - content: "\f18d"; } +.fa-elementor { + --fa: "\f430"; } -.fa-elementor:before { - content: "\f430"; } +.fa-square-pied-piper { + --fa: "\e01e"; } -.fa-square-pied-piper:before { - content: "\e01e"; } +.fa-pied-piper-square { + --fa: "\e01e"; } -.fa-pied-piper-square:before { - content: "\e01e"; } +.fa-creative-commons-nd { + --fa: "\f4eb"; } -.fa-creative-commons-nd:before { - content: "\f4eb"; } +.fa-palfed { + --fa: "\f3d8"; } -.fa-palfed:before { - content: "\f3d8"; } +.fa-superpowers { + --fa: "\f2dd"; } -.fa-superpowers:before { - content: "\f2dd"; } +.fa-resolving { + --fa: "\f3e7"; } -.fa-resolving:before { - content: "\f3e7"; } +.fa-xbox { + --fa: "\f412"; } -.fa-xbox:before { - content: "\f412"; } +.fa-square-web-awesome-stroke { + --fa: "\e684"; } -.fa-square-web-awesome-stroke:before { - content: "\e684"; } +.fa-searchengin { + --fa: "\f3eb"; } -.fa-searchengin:before { - content: "\f3eb"; } +.fa-tiktok { + --fa: "\e07b"; } -.fa-tiktok:before { - content: "\e07b"; } +.fa-square-facebook { + --fa: "\f082"; } -.fa-square-facebook:before { - content: "\f082"; } +.fa-facebook-square { + --fa: "\f082"; } -.fa-facebook-square:before { - content: "\f082"; } +.fa-renren { + --fa: "\f18b"; } -.fa-renren:before { - content: "\f18b"; } +.fa-linux { + --fa: "\f17c"; } -.fa-linux:before { - content: "\f17c"; } +.fa-glide { + --fa: "\f2a5"; } -.fa-glide:before { - content: "\f2a5"; } +.fa-linkedin { + --fa: "\f08c"; } -.fa-linkedin:before { - content: "\f08c"; } +.fa-hubspot { + --fa: "\f3b2"; } -.fa-hubspot:before { - content: "\f3b2"; } +.fa-deploydog { + --fa: "\f38e"; } -.fa-deploydog:before { - content: "\f38e"; } +.fa-twitch { + --fa: "\f1e8"; } -.fa-twitch:before { - content: "\f1e8"; } +.fa-flutter { + --fa: "\e694"; } -.fa-ravelry:before { - content: "\f2d9"; } +.fa-ravelry { + --fa: "\f2d9"; } -.fa-mixer:before { - content: "\e056"; } +.fa-mixer { + --fa: "\e056"; } -.fa-square-lastfm:before { - content: "\f203"; } +.fa-square-lastfm { + --fa: "\f203"; } -.fa-lastfm-square:before { - content: "\f203"; } +.fa-lastfm-square { + --fa: "\f203"; } -.fa-vimeo:before { - content: "\f40a"; } +.fa-vimeo { + --fa: "\f40a"; } -.fa-mendeley:before { - content: "\f7b3"; } +.fa-mendeley { + --fa: "\f7b3"; } -.fa-uniregistry:before { - content: "\f404"; } +.fa-uniregistry { + --fa: "\f404"; } -.fa-figma:before { - content: "\f799"; } +.fa-figma { + --fa: "\f799"; } -.fa-creative-commons-remix:before { - content: "\f4ee"; } +.fa-creative-commons-remix { + --fa: "\f4ee"; } -.fa-cc-amazon-pay:before { - content: "\f42d"; } +.fa-cc-amazon-pay { + --fa: "\f42d"; } -.fa-dropbox:before { - content: "\f16b"; } +.fa-dropbox { + --fa: "\f16b"; } -.fa-instagram:before { - content: "\f16d"; } +.fa-instagram { + --fa: "\f16d"; } -.fa-cmplid:before { - content: "\e360"; } +.fa-cmplid { + --fa: "\e360"; } -.fa-upwork:before { - content: "\e641"; } +.fa-upwork { + --fa: "\e641"; } -.fa-facebook:before { - content: "\f09a"; } +.fa-facebook { + --fa: "\f09a"; } -.fa-gripfire:before { - content: "\f3ac"; } +.fa-gripfire { + --fa: "\f3ac"; } -.fa-jedi-order:before { - content: "\f50e"; } +.fa-jedi-order { + --fa: "\f50e"; } -.fa-uikit:before { - content: "\f403"; } +.fa-uikit { + --fa: "\f403"; } -.fa-fort-awesome-alt:before { - content: "\f3a3"; } +.fa-fort-awesome-alt { + --fa: "\f3a3"; } -.fa-phabricator:before { - content: "\f3db"; } +.fa-phabricator { + --fa: "\f3db"; } -.fa-ussunnah:before { - content: "\f407"; } +.fa-ussunnah { + --fa: "\f407"; } -.fa-earlybirds:before { - content: "\f39a"; } +.fa-earlybirds { + --fa: "\f39a"; } -.fa-trade-federation:before { - content: "\f513"; } +.fa-trade-federation { + --fa: "\f513"; } -.fa-autoprefixer:before { - content: "\f41c"; } +.fa-autoprefixer { + --fa: "\f41c"; } -.fa-whatsapp:before { - content: "\f232"; } +.fa-whatsapp { + --fa: "\f232"; } -.fa-square-upwork:before { - content: "\e67c"; } +.fa-square-upwork { + --fa: "\e67c"; } -.fa-slideshare:before { - content: "\f1e7"; } +.fa-slideshare { + --fa: "\f1e7"; } -.fa-google-play:before { - content: "\f3ab"; } +.fa-google-play { + --fa: "\f3ab"; } -.fa-viadeo:before { - content: "\f2a9"; } +.fa-viadeo { + --fa: "\f2a9"; } -.fa-line:before { - content: "\f3c0"; } +.fa-line { + --fa: "\f3c0"; } -.fa-google-drive:before { - content: "\f3aa"; } +.fa-google-drive { + --fa: "\f3aa"; } -.fa-servicestack:before { - content: "\f3ec"; } +.fa-servicestack { + --fa: "\f3ec"; } -.fa-simplybuilt:before { - content: "\f215"; } +.fa-simplybuilt { + --fa: "\f215"; } -.fa-bitbucket:before { - content: "\f171"; } +.fa-bitbucket { + --fa: "\f171"; } -.fa-imdb:before { - content: "\f2d8"; } +.fa-imdb { + --fa: "\f2d8"; } -.fa-deezer:before { - content: "\e077"; } +.fa-deezer { + --fa: "\e077"; } -.fa-raspberry-pi:before { - content: "\f7bb"; } +.fa-raspberry-pi { + --fa: "\f7bb"; } -.fa-jira:before { - content: "\f7b1"; } +.fa-jira { + --fa: "\f7b1"; } -.fa-docker:before { - content: "\f395"; } +.fa-docker { + --fa: "\f395"; } -.fa-screenpal:before { - content: "\e570"; } +.fa-screenpal { + --fa: "\e570"; } -.fa-bluetooth:before { - content: "\f293"; } +.fa-bluetooth { + --fa: "\f293"; } -.fa-gitter:before { - content: "\f426"; } +.fa-gitter { + --fa: "\f426"; } -.fa-d-and-d:before { - content: "\f38d"; } +.fa-d-and-d { + --fa: "\f38d"; } -.fa-microblog:before { - content: "\e01a"; } +.fa-microblog { + --fa: "\e01a"; } -.fa-cc-diners-club:before { - content: "\f24c"; } +.fa-cc-diners-club { + --fa: "\f24c"; } -.fa-gg-circle:before { - content: "\f261"; } +.fa-gg-circle { + --fa: "\f261"; } -.fa-pied-piper-hat:before { - content: "\f4e5"; } +.fa-pied-piper-hat { + --fa: "\f4e5"; } -.fa-kickstarter-k:before { - content: "\f3bc"; } +.fa-kickstarter-k { + --fa: "\f3bc"; } -.fa-yandex:before { - content: "\f413"; } +.fa-yandex { + --fa: "\f413"; } -.fa-readme:before { - content: "\f4d5"; } +.fa-readme { + --fa: "\f4d5"; } -.fa-html5:before { - content: "\f13b"; } +.fa-html5 { + --fa: "\f13b"; } -.fa-sellsy:before { - content: "\f213"; } +.fa-sellsy { + --fa: "\f213"; } -.fa-square-web-awesome:before { - content: "\e683"; } +.fa-square-web-awesome { + --fa: "\e683"; } -.fa-sass:before { - content: "\f41e"; } +.fa-sass { + --fa: "\f41e"; } -.fa-wirsindhandwerk:before { - content: "\e2d0"; } +.fa-wirsindhandwerk { + --fa: "\e2d0"; } -.fa-wsh:before { - content: "\e2d0"; } +.fa-wsh { + --fa: "\e2d0"; } -.fa-buromobelexperte:before { - content: "\f37f"; } +.fa-buromobelexperte { + --fa: "\f37f"; } -.fa-salesforce:before { - content: "\f83b"; } +.fa-salesforce { + --fa: "\f83b"; } -.fa-octopus-deploy:before { - content: "\e082"; } +.fa-octopus-deploy { + --fa: "\e082"; } -.fa-medapps:before { - content: "\f3c6"; } +.fa-medapps { + --fa: "\f3c6"; } -.fa-ns8:before { - content: "\f3d5"; } +.fa-ns8 { + --fa: "\f3d5"; } -.fa-pinterest-p:before { - content: "\f231"; } +.fa-pinterest-p { + --fa: "\f231"; } -.fa-apper:before { - content: "\f371"; } +.fa-apper { + --fa: "\f371"; } -.fa-fort-awesome:before { - content: "\f286"; } +.fa-fort-awesome { + --fa: "\f286"; } -.fa-waze:before { - content: "\f83f"; } +.fa-waze { + --fa: "\f83f"; } -.fa-bluesky:before { - content: "\e671"; } +.fa-bluesky { + --fa: "\e671"; } -.fa-cc-jcb:before { - content: "\f24b"; } +.fa-cc-jcb { + --fa: "\f24b"; } -.fa-snapchat:before { - content: "\f2ab"; } +.fa-snapchat { + --fa: "\f2ab"; } -.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa-snapchat-ghost { + --fa: "\f2ab"; } -.fa-fantasy-flight-games:before { - content: "\f6dc"; } +.fa-fantasy-flight-games { + --fa: "\f6dc"; } -.fa-rust:before { - content: "\e07a"; } +.fa-rust { + --fa: "\e07a"; } -.fa-wix:before { - content: "\f5cf"; } +.fa-wix { + --fa: "\f5cf"; } -.fa-square-behance:before { - content: "\f1b5"; } +.fa-square-behance { + --fa: "\f1b5"; } -.fa-behance-square:before { - content: "\f1b5"; } +.fa-behance-square { + --fa: "\f1b5"; } -.fa-supple:before { - content: "\f3f9"; } +.fa-supple { + --fa: "\f3f9"; } -.fa-webflow:before { - content: "\e65c"; } +.fa-webflow { + --fa: "\e65c"; } -.fa-rebel:before { - content: "\f1d0"; } +.fa-rebel { + --fa: "\f1d0"; } -.fa-css3:before { - content: "\f13c"; } +.fa-css3 { + --fa: "\f13c"; } -.fa-staylinked:before { - content: "\f3f5"; } +.fa-staylinked { + --fa: "\f3f5"; } -.fa-kaggle:before { - content: "\f5fa"; } +.fa-kaggle { + --fa: "\f5fa"; } -.fa-space-awesome:before { - content: "\e5ac"; } +.fa-space-awesome { + --fa: "\e5ac"; } -.fa-deviantart:before { - content: "\f1bd"; } +.fa-deviantart { + --fa: "\f1bd"; } -.fa-cpanel:before { - content: "\f388"; } +.fa-cpanel { + --fa: "\f388"; } -.fa-goodreads-g:before { - content: "\f3a9"; } +.fa-goodreads-g { + --fa: "\f3a9"; } -.fa-square-git:before { - content: "\f1d2"; } +.fa-square-git { + --fa: "\f1d2"; } -.fa-git-square:before { - content: "\f1d2"; } +.fa-git-square { + --fa: "\f1d2"; } -.fa-square-tumblr:before { - content: "\f174"; } +.fa-square-tumblr { + --fa: "\f174"; } -.fa-tumblr-square:before { - content: "\f174"; } +.fa-tumblr-square { + --fa: "\f174"; } -.fa-trello:before { - content: "\f181"; } +.fa-trello { + --fa: "\f181"; } -.fa-creative-commons-nc-jp:before { - content: "\f4ea"; } +.fa-creative-commons-nc-jp { + --fa: "\f4ea"; } -.fa-get-pocket:before { - content: "\f265"; } +.fa-get-pocket { + --fa: "\f265"; } -.fa-perbyte:before { - content: "\e083"; } +.fa-perbyte { + --fa: "\e083"; } -.fa-grunt:before { - content: "\f3ad"; } +.fa-grunt { + --fa: "\f3ad"; } -.fa-weebly:before { - content: "\f5cc"; } +.fa-weebly { + --fa: "\f5cc"; } -.fa-connectdevelop:before { - content: "\f20e"; } +.fa-connectdevelop { + --fa: "\f20e"; } -.fa-leanpub:before { - content: "\f212"; } +.fa-leanpub { + --fa: "\f212"; } -.fa-black-tie:before { - content: "\f27e"; } +.fa-black-tie { + --fa: "\f27e"; } -.fa-themeco:before { - content: "\f5c6"; } +.fa-themeco { + --fa: "\f5c6"; } -.fa-python:before { - content: "\f3e2"; } +.fa-python { + --fa: "\f3e2"; } -.fa-android:before { - content: "\f17b"; } +.fa-android { + --fa: "\f17b"; } -.fa-bots:before { - content: "\e340"; } +.fa-bots { + --fa: "\e340"; } -.fa-free-code-camp:before { - content: "\f2c5"; } +.fa-free-code-camp { + --fa: "\f2c5"; } -.fa-hornbill:before { - content: "\f592"; } +.fa-hornbill { + --fa: "\f592"; } -.fa-js:before { - content: "\f3b8"; } +.fa-js { + --fa: "\f3b8"; } -.fa-ideal:before { - content: "\e013"; } +.fa-ideal { + --fa: "\e013"; } -.fa-git:before { - content: "\f1d3"; } +.fa-git { + --fa: "\f1d3"; } -.fa-dev:before { - content: "\f6cc"; } +.fa-dev { + --fa: "\f6cc"; } -.fa-sketch:before { - content: "\f7c6"; } +.fa-sketch { + --fa: "\f7c6"; } -.fa-yandex-international:before { - content: "\f414"; } +.fa-yandex-international { + --fa: "\f414"; } -.fa-cc-amex:before { - content: "\f1f3"; } +.fa-cc-amex { + --fa: "\f1f3"; } -.fa-uber:before { - content: "\f402"; } +.fa-uber { + --fa: "\f402"; } -.fa-github:before { - content: "\f09b"; } +.fa-github { + --fa: "\f09b"; } -.fa-php:before { - content: "\f457"; } +.fa-php { + --fa: "\f457"; } -.fa-alipay:before { - content: "\f642"; } +.fa-alipay { + --fa: "\f642"; } -.fa-youtube:before { - content: "\f167"; } +.fa-youtube { + --fa: "\f167"; } -.fa-skyatlas:before { - content: "\f216"; } +.fa-skyatlas { + --fa: "\f216"; } -.fa-firefox-browser:before { - content: "\e007"; } +.fa-firefox-browser { + --fa: "\e007"; } -.fa-replyd:before { - content: "\f3e6"; } +.fa-replyd { + --fa: "\f3e6"; } -.fa-suse:before { - content: "\f7d6"; } +.fa-suse { + --fa: "\f7d6"; } -.fa-jenkins:before { - content: "\f3b6"; } +.fa-jenkins { + --fa: "\f3b6"; } -.fa-twitter:before { - content: "\f099"; } +.fa-twitter { + --fa: "\f099"; } -.fa-rockrms:before { - content: "\f3e9"; } +.fa-rockrms { + --fa: "\f3e9"; } -.fa-pinterest:before { - content: "\f0d2"; } +.fa-pinterest { + --fa: "\f0d2"; } -.fa-buffer:before { - content: "\f837"; } +.fa-buffer { + --fa: "\f837"; } -.fa-npm:before { - content: "\f3d4"; } +.fa-npm { + --fa: "\f3d4"; } -.fa-yammer:before { - content: "\f840"; } +.fa-yammer { + --fa: "\f840"; } -.fa-btc:before { - content: "\f15a"; } +.fa-btc { + --fa: "\f15a"; } -.fa-dribbble:before { - content: "\f17d"; } +.fa-dribbble { + --fa: "\f17d"; } -.fa-stumbleupon-circle:before { - content: "\f1a3"; } +.fa-stumbleupon-circle { + --fa: "\f1a3"; } -.fa-internet-explorer:before { - content: "\f26b"; } +.fa-internet-explorer { + --fa: "\f26b"; } -.fa-stubber:before { - content: "\e5c7"; } +.fa-stubber { + --fa: "\e5c7"; } -.fa-telegram:before { - content: "\f2c6"; } +.fa-telegram { + --fa: "\f2c6"; } -.fa-telegram-plane:before { - content: "\f2c6"; } +.fa-telegram-plane { + --fa: "\f2c6"; } -.fa-old-republic:before { - content: "\f510"; } +.fa-old-republic { + --fa: "\f510"; } -.fa-odysee:before { - content: "\e5c6"; } +.fa-odysee { + --fa: "\e5c6"; } -.fa-square-whatsapp:before { - content: "\f40c"; } +.fa-square-whatsapp { + --fa: "\f40c"; } -.fa-whatsapp-square:before { - content: "\f40c"; } +.fa-whatsapp-square { + --fa: "\f40c"; } -.fa-node-js:before { - content: "\f3d3"; } +.fa-node-js { + --fa: "\f3d3"; } -.fa-edge-legacy:before { - content: "\e078"; } +.fa-edge-legacy { + --fa: "\e078"; } -.fa-slack:before { - content: "\f198"; } +.fa-slack { + --fa: "\f198"; } -.fa-slack-hash:before { - content: "\f198"; } +.fa-slack-hash { + --fa: "\f198"; } -.fa-medrt:before { - content: "\f3c8"; } +.fa-medrt { + --fa: "\f3c8"; } -.fa-usb:before { - content: "\f287"; } +.fa-usb { + --fa: "\f287"; } -.fa-tumblr:before { - content: "\f173"; } +.fa-tumblr { + --fa: "\f173"; } -.fa-vaadin:before { - content: "\f408"; } +.fa-vaadin { + --fa: "\f408"; } -.fa-quora:before { - content: "\f2c4"; } +.fa-quora { + --fa: "\f2c4"; } -.fa-square-x-twitter:before { - content: "\e61a"; } +.fa-square-x-twitter { + --fa: "\e61a"; } -.fa-reacteurope:before { - content: "\f75d"; } +.fa-reacteurope { + --fa: "\f75d"; } -.fa-medium:before { - content: "\f23a"; } +.fa-medium { + --fa: "\f23a"; } -.fa-medium-m:before { - content: "\f23a"; } +.fa-medium-m { + --fa: "\f23a"; } -.fa-amilia:before { - content: "\f36d"; } +.fa-amilia { + --fa: "\f36d"; } -.fa-mixcloud:before { - content: "\f289"; } +.fa-mixcloud { + --fa: "\f289"; } -.fa-flipboard:before { - content: "\f44d"; } +.fa-flipboard { + --fa: "\f44d"; } -.fa-viacoin:before { - content: "\f237"; } +.fa-viacoin { + --fa: "\f237"; } -.fa-critical-role:before { - content: "\f6c9"; } +.fa-critical-role { + --fa: "\f6c9"; } -.fa-sitrox:before { - content: "\e44a"; } +.fa-sitrox { + --fa: "\e44a"; } -.fa-discourse:before { - content: "\f393"; } +.fa-discourse { + --fa: "\f393"; } -.fa-joomla:before { - content: "\f1aa"; } +.fa-joomla { + --fa: "\f1aa"; } -.fa-mastodon:before { - content: "\f4f6"; } +.fa-mastodon { + --fa: "\f4f6"; } -.fa-airbnb:before { - content: "\f834"; } +.fa-airbnb { + --fa: "\f834"; } -.fa-wolf-pack-battalion:before { - content: "\f514"; } +.fa-wolf-pack-battalion { + --fa: "\f514"; } -.fa-buy-n-large:before { - content: "\f8a6"; } +.fa-buy-n-large { + --fa: "\f8a6"; } -.fa-gulp:before { - content: "\f3ae"; } +.fa-gulp { + --fa: "\f3ae"; } -.fa-creative-commons-sampling-plus:before { - content: "\f4f1"; } +.fa-creative-commons-sampling-plus { + --fa: "\f4f1"; } -.fa-strava:before { - content: "\f428"; } +.fa-strava { + --fa: "\f428"; } -.fa-ember:before { - content: "\f423"; } +.fa-ember { + --fa: "\f423"; } -.fa-canadian-maple-leaf:before { - content: "\f785"; } +.fa-canadian-maple-leaf { + --fa: "\f785"; } -.fa-teamspeak:before { - content: "\f4f9"; } +.fa-teamspeak { + --fa: "\f4f9"; } -.fa-pushed:before { - content: "\f3e1"; } +.fa-pushed { + --fa: "\f3e1"; } -.fa-wordpress-simple:before { - content: "\f411"; } +.fa-wordpress-simple { + --fa: "\f411"; } -.fa-nutritionix:before { - content: "\f3d6"; } +.fa-nutritionix { + --fa: "\f3d6"; } -.fa-wodu:before { - content: "\e088"; } +.fa-wodu { + --fa: "\e088"; } -.fa-google-pay:before { - content: "\e079"; } +.fa-google-pay { + --fa: "\e079"; } -.fa-intercom:before { - content: "\f7af"; } +.fa-intercom { + --fa: "\f7af"; } -.fa-zhihu:before { - content: "\f63f"; } +.fa-zhihu { + --fa: "\f63f"; } -.fa-korvue:before { - content: "\f42f"; } +.fa-korvue { + --fa: "\f42f"; } -.fa-pix:before { - content: "\e43a"; } +.fa-pix { + --fa: "\e43a"; } -.fa-steam-symbol:before { - content: "\f3f6"; } +.fa-steam-symbol { + --fa: "\f3f6"; } :root, :host { --fa-style-family-classic: 'Font Awesome 6 Free'; --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; } diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css index ea60ea4d7..7ed4af7d2 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/css/v4-shims.css @@ -1,174 +1,174 @@ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ -.fa.fa-glass:before { - content: "\f000"; } +.fa.fa-glass { + --fa: "\f000"; } .fa.fa-envelope-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-o:before { - content: "\f0e0"; } +.fa.fa-envelope-o { + --fa: "\f0e0"; } .fa.fa-star-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-o:before { - content: "\f005"; } +.fa.fa-star-o { + --fa: "\f005"; } -.fa.fa-remove:before { - content: "\f00d"; } +.fa.fa-remove { + --fa: "\f00d"; } -.fa.fa-close:before { - content: "\f00d"; } +.fa.fa-close { + --fa: "\f00d"; } -.fa.fa-gear:before { - content: "\f013"; } +.fa.fa-gear { + --fa: "\f013"; } .fa.fa-trash-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-trash-o:before { - content: "\f2ed"; } +.fa.fa-trash-o { + --fa: "\f2ed"; } -.fa.fa-home:before { - content: "\f015"; } +.fa.fa-home { + --fa: "\f015"; } .fa.fa-file-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-o:before { - content: "\f15b"; } +.fa.fa-file-o { + --fa: "\f15b"; } .fa.fa-clock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-clock-o:before { - content: "\f017"; } +.fa.fa-clock-o { + --fa: "\f017"; } .fa.fa-arrow-circle-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-down:before { - content: "\f358"; } +.fa.fa-arrow-circle-o-down { + --fa: "\f358"; } .fa.fa-arrow-circle-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-up:before { - content: "\f35b"; } +.fa.fa-arrow-circle-o-up { + --fa: "\f35b"; } .fa.fa-play-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-play-circle-o:before { - content: "\f144"; } +.fa.fa-play-circle-o { + --fa: "\f144"; } -.fa.fa-repeat:before { - content: "\f01e"; } +.fa.fa-repeat { + --fa: "\f01e"; } -.fa.fa-rotate-right:before { - content: "\f01e"; } +.fa.fa-rotate-right { + --fa: "\f01e"; } -.fa.fa-refresh:before { - content: "\f021"; } +.fa.fa-refresh { + --fa: "\f021"; } .fa.fa-list-alt { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-list-alt:before { - content: "\f022"; } +.fa.fa-list-alt { + --fa: "\f022"; } -.fa.fa-dedent:before { - content: "\f03b"; } +.fa.fa-dedent { + --fa: "\f03b"; } -.fa.fa-video-camera:before { - content: "\f03d"; } +.fa.fa-video-camera { + --fa: "\f03d"; } .fa.fa-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-picture-o:before { - content: "\f03e"; } +.fa.fa-picture-o { + --fa: "\f03e"; } .fa.fa-photo { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-photo:before { - content: "\f03e"; } +.fa.fa-photo { + --fa: "\f03e"; } .fa.fa-image { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-image:before { - content: "\f03e"; } +.fa.fa-image { + --fa: "\f03e"; } -.fa.fa-map-marker:before { - content: "\f3c5"; } +.fa.fa-map-marker { + --fa: "\f3c5"; } .fa.fa-pencil-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pencil-square-o:before { - content: "\f044"; } +.fa.fa-pencil-square-o { + --fa: "\f044"; } .fa.fa-edit { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-edit:before { - content: "\f044"; } +.fa.fa-edit { + --fa: "\f044"; } -.fa.fa-share-square-o:before { - content: "\f14d"; } +.fa.fa-share-square-o { + --fa: "\f14d"; } .fa.fa-check-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-square-o:before { - content: "\f14a"; } +.fa.fa-check-square-o { + --fa: "\f14a"; } -.fa.fa-arrows:before { - content: "\f0b2"; } +.fa.fa-arrows { + --fa: "\f0b2"; } .fa.fa-times-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-circle-o:before { - content: "\f057"; } +.fa.fa-times-circle-o { + --fa: "\f057"; } .fa.fa-check-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-check-circle-o:before { - content: "\f058"; } +.fa.fa-check-circle-o { + --fa: "\f058"; } -.fa.fa-mail-forward:before { - content: "\f064"; } +.fa.fa-mail-forward { + --fa: "\f064"; } -.fa.fa-expand:before { - content: "\f424"; } +.fa.fa-expand { + --fa: "\f424"; } -.fa.fa-compress:before { - content: "\f422"; } +.fa.fa-compress { + --fa: "\f422"; } .fa.fa-eye { font-family: 'Font Awesome 6 Free'; @@ -178,108 +178,108 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-warning:before { - content: "\f071"; } +.fa.fa-warning { + --fa: "\f071"; } -.fa.fa-calendar:before { - content: "\f073"; } +.fa.fa-calendar { + --fa: "\f073"; } -.fa.fa-arrows-v:before { - content: "\f338"; } +.fa.fa-arrows-v { + --fa: "\f338"; } -.fa.fa-arrows-h:before { - content: "\f337"; } +.fa.fa-arrows-h { + --fa: "\f337"; } -.fa.fa-bar-chart:before { - content: "\e0e3"; } +.fa.fa-bar-chart { + --fa: "\e0e3"; } -.fa.fa-bar-chart-o:before { - content: "\e0e3"; } +.fa.fa-bar-chart-o { + --fa: "\e0e3"; } .fa.fa-twitter-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-twitter-square:before { - content: "\f081"; } +.fa.fa-twitter-square { + --fa: "\f081"; } .fa.fa-facebook-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-square:before { - content: "\f082"; } +.fa.fa-facebook-square { + --fa: "\f082"; } -.fa.fa-gears:before { - content: "\f085"; } +.fa.fa-gears { + --fa: "\f085"; } .fa.fa-thumbs-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-up:before { - content: "\f164"; } +.fa.fa-thumbs-o-up { + --fa: "\f164"; } .fa.fa-thumbs-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-thumbs-o-down:before { - content: "\f165"; } +.fa.fa-thumbs-o-down { + --fa: "\f165"; } .fa.fa-heart-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-heart-o:before { - content: "\f004"; } +.fa.fa-heart-o { + --fa: "\f004"; } -.fa.fa-sign-out:before { - content: "\f2f5"; } +.fa.fa-sign-out { + --fa: "\f2f5"; } .fa.fa-linkedin-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin-square:before { - content: "\f08c"; } +.fa.fa-linkedin-square { + --fa: "\f08c"; } -.fa.fa-thumb-tack:before { - content: "\f08d"; } +.fa.fa-thumb-tack { + --fa: "\f08d"; } -.fa.fa-external-link:before { - content: "\f35d"; } +.fa.fa-external-link { + --fa: "\f35d"; } -.fa.fa-sign-in:before { - content: "\f2f6"; } +.fa.fa-sign-in { + --fa: "\f2f6"; } .fa.fa-github-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-github-square:before { - content: "\f092"; } +.fa.fa-github-square { + --fa: "\f092"; } .fa.fa-lemon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lemon-o:before { - content: "\f094"; } +.fa.fa-lemon-o { + --fa: "\f094"; } .fa.fa-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-square-o:before { - content: "\f0c8"; } +.fa.fa-square-o { + --fa: "\f0c8"; } .fa.fa-bookmark-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bookmark-o:before { - content: "\f02e"; } +.fa.fa-bookmark-o { + --fa: "\f02e"; } .fa.fa-twitter { font-family: 'Font Awesome 6 Brands'; @@ -289,15 +289,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook:before { - content: "\f39e"; } +.fa.fa-facebook { + --fa: "\f39e"; } .fa.fa-facebook-f { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-f:before { - content: "\f39e"; } +.fa.fa-facebook-f { + --fa: "\f39e"; } .fa.fa-github { font-family: 'Font Awesome 6 Brands'; @@ -307,91 +307,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-feed:before { - content: "\f09e"; } +.fa.fa-feed { + --fa: "\f09e"; } .fa.fa-hdd-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hdd-o:before { - content: "\f0a0"; } +.fa.fa-hdd-o { + --fa: "\f0a0"; } .fa.fa-hand-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-right:before { - content: "\f0a4"; } +.fa.fa-hand-o-right { + --fa: "\f0a4"; } .fa.fa-hand-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-left:before { - content: "\f0a5"; } +.fa.fa-hand-o-left { + --fa: "\f0a5"; } .fa.fa-hand-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-up:before { - content: "\f0a6"; } +.fa.fa-hand-o-up { + --fa: "\f0a6"; } .fa.fa-hand-o-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-o-down:before { - content: "\f0a7"; } +.fa.fa-hand-o-down { + --fa: "\f0a7"; } -.fa.fa-globe:before { - content: "\f57d"; } +.fa.fa-globe { + --fa: "\f57d"; } -.fa.fa-tasks:before { - content: "\f828"; } +.fa.fa-tasks { + --fa: "\f828"; } -.fa.fa-arrows-alt:before { - content: "\f31e"; } +.fa.fa-arrows-alt { + --fa: "\f31e"; } -.fa.fa-group:before { - content: "\f0c0"; } +.fa.fa-group { + --fa: "\f0c0"; } -.fa.fa-chain:before { - content: "\f0c1"; } +.fa.fa-chain { + --fa: "\f0c1"; } -.fa.fa-cut:before { - content: "\f0c4"; } +.fa.fa-cut { + --fa: "\f0c4"; } .fa.fa-files-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-files-o:before { - content: "\f0c5"; } +.fa.fa-files-o { + --fa: "\f0c5"; } .fa.fa-floppy-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-floppy-o:before { - content: "\f0c7"; } +.fa.fa-floppy-o { + --fa: "\f0c7"; } .fa.fa-save { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-save:before { - content: "\f0c7"; } +.fa.fa-save { + --fa: "\f0c7"; } -.fa.fa-navicon:before { - content: "\f0c9"; } +.fa.fa-navicon { + --fa: "\f0c9"; } -.fa.fa-reorder:before { - content: "\f0c9"; } +.fa.fa-reorder { + --fa: "\f0c9"; } -.fa.fa-magic:before { - content: "\e2ca"; } +.fa.fa-magic { + --fa: "\e2ca"; } .fa.fa-pinterest { font-family: 'Font Awesome 6 Brands'; @@ -401,139 +401,139 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-pinterest-square:before { - content: "\f0d3"; } +.fa.fa-pinterest-square { + --fa: "\f0d3"; } .fa.fa-google-plus-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-square:before { - content: "\f0d4"; } +.fa.fa-google-plus-square { + --fa: "\f0d4"; } .fa.fa-google-plus { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus:before { - content: "\f0d5"; } +.fa.fa-google-plus { + --fa: "\f0d5"; } -.fa.fa-money:before { - content: "\f3d1"; } +.fa.fa-money { + --fa: "\f3d1"; } -.fa.fa-unsorted:before { - content: "\f0dc"; } +.fa.fa-unsorted { + --fa: "\f0dc"; } -.fa.fa-sort-desc:before { - content: "\f0dd"; } +.fa.fa-sort-desc { + --fa: "\f0dd"; } -.fa.fa-sort-asc:before { - content: "\f0de"; } +.fa.fa-sort-asc { + --fa: "\f0de"; } .fa.fa-linkedin { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-linkedin:before { - content: "\f0e1"; } +.fa.fa-linkedin { + --fa: "\f0e1"; } -.fa.fa-rotate-left:before { - content: "\f0e2"; } +.fa.fa-rotate-left { + --fa: "\f0e2"; } -.fa.fa-legal:before { - content: "\f0e3"; } +.fa.fa-legal { + --fa: "\f0e3"; } -.fa.fa-tachometer:before { - content: "\f625"; } +.fa.fa-tachometer { + --fa: "\f625"; } -.fa.fa-dashboard:before { - content: "\f625"; } +.fa.fa-dashboard { + --fa: "\f625"; } .fa.fa-comment-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comment-o:before { - content: "\f075"; } +.fa.fa-comment-o { + --fa: "\f075"; } .fa.fa-comments-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-comments-o:before { - content: "\f086"; } +.fa.fa-comments-o { + --fa: "\f086"; } -.fa.fa-flash:before { - content: "\f0e7"; } +.fa.fa-flash { + --fa: "\f0e7"; } -.fa.fa-clipboard:before { - content: "\f0ea"; } +.fa.fa-clipboard { + --fa: "\f0ea"; } .fa.fa-lightbulb-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-lightbulb-o:before { - content: "\f0eb"; } +.fa.fa-lightbulb-o { + --fa: "\f0eb"; } -.fa.fa-exchange:before { - content: "\f362"; } +.fa.fa-exchange { + --fa: "\f362"; } -.fa.fa-cloud-download:before { - content: "\f0ed"; } +.fa.fa-cloud-download { + --fa: "\f0ed"; } -.fa.fa-cloud-upload:before { - content: "\f0ee"; } +.fa.fa-cloud-upload { + --fa: "\f0ee"; } .fa.fa-bell-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-o:before { - content: "\f0f3"; } +.fa.fa-bell-o { + --fa: "\f0f3"; } -.fa.fa-cutlery:before { - content: "\f2e7"; } +.fa.fa-cutlery { + --fa: "\f2e7"; } .fa.fa-file-text-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-text-o:before { - content: "\f15c"; } +.fa.fa-file-text-o { + --fa: "\f15c"; } .fa.fa-building-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-building-o:before { - content: "\f1ad"; } +.fa.fa-building-o { + --fa: "\f1ad"; } .fa.fa-hospital-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hospital-o:before { - content: "\f0f8"; } +.fa.fa-hospital-o { + --fa: "\f0f8"; } -.fa.fa-tablet:before { - content: "\f3fa"; } +.fa.fa-tablet { + --fa: "\f3fa"; } -.fa.fa-mobile:before { - content: "\f3cd"; } +.fa.fa-mobile { + --fa: "\f3cd"; } -.fa.fa-mobile-phone:before { - content: "\f3cd"; } +.fa.fa-mobile-phone { + --fa: "\f3cd"; } .fa.fa-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-o:before { - content: "\f111"; } +.fa.fa-circle-o { + --fa: "\f111"; } -.fa.fa-mail-reply:before { - content: "\f3e5"; } +.fa.fa-mail-reply { + --fa: "\f3e5"; } .fa.fa-github-alt { font-family: 'Font Awesome 6 Brands'; @@ -543,90 +543,90 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-o:before { - content: "\f07b"; } +.fa.fa-folder-o { + --fa: "\f07b"; } .fa.fa-folder-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-folder-open-o:before { - content: "\f07c"; } +.fa.fa-folder-open-o { + --fa: "\f07c"; } .fa.fa-smile-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-smile-o:before { - content: "\f118"; } +.fa.fa-smile-o { + --fa: "\f118"; } .fa.fa-frown-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-frown-o:before { - content: "\f119"; } +.fa.fa-frown-o { + --fa: "\f119"; } .fa.fa-meh-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-meh-o:before { - content: "\f11a"; } +.fa.fa-meh-o { + --fa: "\f11a"; } .fa.fa-keyboard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-keyboard-o:before { - content: "\f11c"; } +.fa.fa-keyboard-o { + --fa: "\f11c"; } .fa.fa-flag-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-flag-o:before { - content: "\f024"; } +.fa.fa-flag-o { + --fa: "\f024"; } -.fa.fa-mail-reply-all:before { - content: "\f122"; } +.fa.fa-mail-reply-all { + --fa: "\f122"; } .fa.fa-star-half-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-o:before { - content: "\f5c0"; } +.fa.fa-star-half-o { + --fa: "\f5c0"; } .fa.fa-star-half-empty { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-empty:before { - content: "\f5c0"; } +.fa.fa-star-half-empty { + --fa: "\f5c0"; } .fa.fa-star-half-full { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-star-half-full:before { - content: "\f5c0"; } +.fa.fa-star-half-full { + --fa: "\f5c0"; } -.fa.fa-code-fork:before { - content: "\f126"; } +.fa.fa-code-fork { + --fa: "\f126"; } -.fa.fa-chain-broken:before { - content: "\f127"; } +.fa.fa-chain-broken { + --fa: "\f127"; } -.fa.fa-unlink:before { - content: "\f127"; } +.fa.fa-unlink { + --fa: "\f127"; } .fa.fa-calendar-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-o:before { - content: "\f133"; } +.fa.fa-calendar-o { + --fa: "\f133"; } .fa.fa-maxcdn { font-family: 'Font Awesome 6 Brands'; @@ -640,27 +640,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-unlock-alt:before { - content: "\f09c"; } +.fa.fa-unlock-alt { + --fa: "\f09c"; } .fa.fa-minus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-minus-square-o:before { - content: "\f146"; } +.fa.fa-minus-square-o { + --fa: "\f146"; } -.fa.fa-level-up:before { - content: "\f3bf"; } +.fa.fa-level-up { + --fa: "\f3bf"; } -.fa.fa-level-down:before { - content: "\f3be"; } +.fa.fa-level-down { + --fa: "\f3be"; } -.fa.fa-pencil-square:before { - content: "\f14b"; } +.fa.fa-pencil-square { + --fa: "\f14b"; } -.fa.fa-external-link-square:before { - content: "\f360"; } +.fa.fa-external-link-square { + --fa: "\f360"; } .fa.fa-compass { font-family: 'Font Awesome 6 Free'; @@ -670,91 +670,91 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-down:before { - content: "\f150"; } +.fa.fa-caret-square-o-down { + --fa: "\f150"; } .fa.fa-toggle-down { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-down:before { - content: "\f150"; } +.fa.fa-toggle-down { + --fa: "\f150"; } .fa.fa-caret-square-o-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-up:before { - content: "\f151"; } +.fa.fa-caret-square-o-up { + --fa: "\f151"; } .fa.fa-toggle-up { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-up:before { - content: "\f151"; } +.fa.fa-toggle-up { + --fa: "\f151"; } .fa.fa-caret-square-o-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-right:before { - content: "\f152"; } +.fa.fa-caret-square-o-right { + --fa: "\f152"; } .fa.fa-toggle-right { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-right:before { - content: "\f152"; } +.fa.fa-toggle-right { + --fa: "\f152"; } -.fa.fa-eur:before { - content: "\f153"; } +.fa.fa-eur { + --fa: "\f153"; } -.fa.fa-euro:before { - content: "\f153"; } +.fa.fa-euro { + --fa: "\f153"; } -.fa.fa-gbp:before { - content: "\f154"; } +.fa.fa-gbp { + --fa: "\f154"; } -.fa.fa-usd:before { - content: "\24"; } +.fa.fa-usd { + --fa: "\24"; } -.fa.fa-dollar:before { - content: "\24"; } +.fa.fa-dollar { + --fa: "\24"; } -.fa.fa-inr:before { - content: "\e1bc"; } +.fa.fa-inr { + --fa: "\e1bc"; } -.fa.fa-rupee:before { - content: "\e1bc"; } +.fa.fa-rupee { + --fa: "\e1bc"; } -.fa.fa-jpy:before { - content: "\f157"; } +.fa.fa-jpy { + --fa: "\f157"; } -.fa.fa-cny:before { - content: "\f157"; } +.fa.fa-cny { + --fa: "\f157"; } -.fa.fa-rmb:before { - content: "\f157"; } +.fa.fa-rmb { + --fa: "\f157"; } -.fa.fa-yen:before { - content: "\f157"; } +.fa.fa-yen { + --fa: "\f157"; } -.fa.fa-rub:before { - content: "\f158"; } +.fa.fa-rub { + --fa: "\f158"; } -.fa.fa-ruble:before { - content: "\f158"; } +.fa.fa-ruble { + --fa: "\f158"; } -.fa.fa-rouble:before { - content: "\f158"; } +.fa.fa-rouble { + --fa: "\f158"; } -.fa.fa-krw:before { - content: "\f159"; } +.fa.fa-krw { + --fa: "\f159"; } -.fa.fa-won:before { - content: "\f159"; } +.fa.fa-won { + --fa: "\f159"; } .fa.fa-btc { font-family: 'Font Awesome 6 Brands'; @@ -764,36 +764,36 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitcoin:before { - content: "\f15a"; } +.fa.fa-bitcoin { + --fa: "\f15a"; } -.fa.fa-file-text:before { - content: "\f15c"; } +.fa.fa-file-text { + --fa: "\f15c"; } -.fa.fa-sort-alpha-asc:before { - content: "\f15d"; } +.fa.fa-sort-alpha-asc { + --fa: "\f15d"; } -.fa.fa-sort-alpha-desc:before { - content: "\f881"; } +.fa.fa-sort-alpha-desc { + --fa: "\f881"; } -.fa.fa-sort-amount-asc:before { - content: "\f884"; } +.fa.fa-sort-amount-asc { + --fa: "\f884"; } -.fa.fa-sort-amount-desc:before { - content: "\f160"; } +.fa.fa-sort-amount-desc { + --fa: "\f160"; } -.fa.fa-sort-numeric-asc:before { - content: "\f162"; } +.fa.fa-sort-numeric-asc { + --fa: "\f162"; } -.fa.fa-sort-numeric-desc:before { - content: "\f886"; } +.fa.fa-sort-numeric-desc { + --fa: "\f886"; } .fa.fa-youtube-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-square:before { - content: "\f431"; } +.fa.fa-youtube-square { + --fa: "\f431"; } .fa.fa-youtube { font-family: 'Font Awesome 6 Brands'; @@ -807,15 +807,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-xing-square:before { - content: "\f169"; } +.fa.fa-xing-square { + --fa: "\f169"; } .fa.fa-youtube-play { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-youtube-play:before { - content: "\f167"; } +.fa.fa-youtube-play { + --fa: "\f167"; } .fa.fa-dropbox { font-family: 'Font Awesome 6 Brands'; @@ -845,8 +845,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-bitbucket-square:before { - content: "\f171"; } +.fa.fa-bitbucket-square { + --fa: "\f171"; } .fa.fa-tumblr { font-family: 'Font Awesome 6 Brands'; @@ -856,20 +856,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-tumblr-square:before { - content: "\f174"; } +.fa.fa-tumblr-square { + --fa: "\f174"; } -.fa.fa-long-arrow-down:before { - content: "\f309"; } +.fa.fa-long-arrow-down { + --fa: "\f309"; } -.fa.fa-long-arrow-up:before { - content: "\f30c"; } +.fa.fa-long-arrow-up { + --fa: "\f30c"; } -.fa.fa-long-arrow-left:before { - content: "\f30a"; } +.fa.fa-long-arrow-left { + --fa: "\f30a"; } -.fa.fa-long-arrow-right:before { - content: "\f30b"; } +.fa.fa-long-arrow-right { + --fa: "\f30b"; } .fa.fa-apple { font-family: 'Font Awesome 6 Brands'; @@ -911,22 +911,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-gittip:before { - content: "\f184"; } +.fa.fa-gittip { + --fa: "\f184"; } .fa.fa-sun-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sun-o:before { - content: "\f185"; } +.fa.fa-sun-o { + --fa: "\f185"; } .fa.fa-moon-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-moon-o:before { - content: "\f186"; } +.fa.fa-moon-o { + --fa: "\f186"; } .fa.fa-vk { font-family: 'Font Awesome 6 Brands'; @@ -952,56 +952,56 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-right:before { - content: "\f35a"; } +.fa.fa-arrow-circle-o-right { + --fa: "\f35a"; } .fa.fa-arrow-circle-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-arrow-circle-o-left:before { - content: "\f359"; } +.fa.fa-arrow-circle-o-left { + --fa: "\f359"; } .fa.fa-caret-square-o-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-caret-square-o-left:before { - content: "\f191"; } +.fa.fa-caret-square-o-left { + --fa: "\f191"; } .fa.fa-toggle-left { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-toggle-left:before { - content: "\f191"; } +.fa.fa-toggle-left { + --fa: "\f191"; } .fa.fa-dot-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-dot-circle-o:before { - content: "\f192"; } +.fa.fa-dot-circle-o { + --fa: "\f192"; } .fa.fa-vimeo-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo-square:before { - content: "\f194"; } +.fa.fa-vimeo-square { + --fa: "\f194"; } -.fa.fa-try:before { - content: "\e2bb"; } +.fa.fa-try { + --fa: "\e2bb"; } -.fa.fa-turkish-lira:before { - content: "\e2bb"; } +.fa.fa-turkish-lira { + --fa: "\e2bb"; } .fa.fa-plus-square-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-plus-square-o:before { - content: "\f0fe"; } +.fa.fa-plus-square-o { + --fa: "\f0fe"; } .fa.fa-slack { font-family: 'Font Awesome 6 Brands'; @@ -1015,14 +1015,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-institution:before { - content: "\f19c"; } +.fa.fa-institution { + --fa: "\f19c"; } -.fa.fa-bank:before { - content: "\f19c"; } +.fa.fa-bank { + --fa: "\f19c"; } -.fa.fa-mortar-board:before { - content: "\f19d"; } +.fa.fa-mortar-board { + --fa: "\f19d"; } .fa.fa-yahoo { font-family: 'Font Awesome 6 Brands'; @@ -1040,8 +1040,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-reddit-square:before { - content: "\f1a2"; } +.fa.fa-reddit-square { + --fa: "\f1a2"; } .fa.fa-stumbleupon-circle { font-family: 'Font Awesome 6 Brands'; @@ -1083,8 +1083,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-behance-square:before { - content: "\f1b5"; } +.fa.fa-behance-square { + --fa: "\f1b5"; } .fa.fa-steam { font-family: 'Font Awesome 6 Brands'; @@ -1094,14 +1094,14 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-steam-square:before { - content: "\f1b7"; } +.fa.fa-steam-square { + --fa: "\f1b7"; } -.fa.fa-automobile:before { - content: "\f1b9"; } +.fa.fa-automobile { + --fa: "\f1b9"; } -.fa.fa-cab:before { - content: "\f1ba"; } +.fa.fa-cab { + --fa: "\f1ba"; } .fa.fa-spotify { font-family: 'Font Awesome 6 Brands'; @@ -1119,99 +1119,99 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-pdf-o:before { - content: "\f1c1"; } +.fa.fa-file-pdf-o { + --fa: "\f1c1"; } .fa.fa-file-word-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-word-o:before { - content: "\f1c2"; } +.fa.fa-file-word-o { + --fa: "\f1c2"; } .fa.fa-file-excel-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-excel-o:before { - content: "\f1c3"; } +.fa.fa-file-excel-o { + --fa: "\f1c3"; } .fa.fa-file-powerpoint-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-powerpoint-o:before { - content: "\f1c4"; } +.fa.fa-file-powerpoint-o { + --fa: "\f1c4"; } .fa.fa-file-image-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-image-o:before { - content: "\f1c5"; } +.fa.fa-file-image-o { + --fa: "\f1c5"; } .fa.fa-file-photo-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-photo-o:before { - content: "\f1c5"; } +.fa.fa-file-photo-o { + --fa: "\f1c5"; } .fa.fa-file-picture-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-picture-o:before { - content: "\f1c5"; } +.fa.fa-file-picture-o { + --fa: "\f1c5"; } .fa.fa-file-archive-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-archive-o:before { - content: "\f1c6"; } +.fa.fa-file-archive-o { + --fa: "\f1c6"; } .fa.fa-file-zip-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-zip-o:before { - content: "\f1c6"; } +.fa.fa-file-zip-o { + --fa: "\f1c6"; } .fa.fa-file-audio-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-audio-o:before { - content: "\f1c7"; } +.fa.fa-file-audio-o { + --fa: "\f1c7"; } .fa.fa-file-sound-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-sound-o:before { - content: "\f1c7"; } +.fa.fa-file-sound-o { + --fa: "\f1c7"; } .fa.fa-file-video-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-video-o:before { - content: "\f1c8"; } +.fa.fa-file-video-o { + --fa: "\f1c8"; } .fa.fa-file-movie-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-movie-o:before { - content: "\f1c8"; } +.fa.fa-file-movie-o { + --fa: "\f1c8"; } .fa.fa-file-code-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-file-code-o:before { - content: "\f1c9"; } +.fa.fa-file-code-o { + --fa: "\f1c9"; } .fa.fa-vine { font-family: 'Font Awesome 6 Brands'; @@ -1225,20 +1225,20 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-life-bouy:before { - content: "\f1cd"; } +.fa.fa-life-bouy { + --fa: "\f1cd"; } -.fa.fa-life-buoy:before { - content: "\f1cd"; } +.fa.fa-life-buoy { + --fa: "\f1cd"; } -.fa.fa-life-saver:before { - content: "\f1cd"; } +.fa.fa-life-saver { + --fa: "\f1cd"; } -.fa.fa-support:before { - content: "\f1cd"; } +.fa.fa-support { + --fa: "\f1cd"; } -.fa.fa-circle-o-notch:before { - content: "\f1ce"; } +.fa.fa-circle-o-notch { + --fa: "\f1ce"; } .fa.fa-rebel { font-family: 'Font Awesome 6 Brands'; @@ -1248,15 +1248,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ra:before { - content: "\f1d0"; } +.fa.fa-ra { + --fa: "\f1d0"; } .fa.fa-resistance { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-resistance:before { - content: "\f1d0"; } +.fa.fa-resistance { + --fa: "\f1d0"; } .fa.fa-empire { font-family: 'Font Awesome 6 Brands'; @@ -1266,15 +1266,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-ge:before { - content: "\f1d1"; } +.fa.fa-ge { + --fa: "\f1d1"; } .fa.fa-git-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-git-square:before { - content: "\f1d2"; } +.fa.fa-git-square { + --fa: "\f1d2"; } .fa.fa-git { font-family: 'Font Awesome 6 Brands'; @@ -1288,15 +1288,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-y-combinator-square:before { - content: "\f1d4"; } +.fa.fa-y-combinator-square { + --fa: "\f1d4"; } .fa.fa-yc-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc-square:before { - content: "\f1d4"; } +.fa.fa-yc-square { + --fa: "\f1d4"; } .fa.fa-tencent-weibo { font-family: 'Font Awesome 6 Brands'; @@ -1314,49 +1314,49 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wechat:before { - content: "\f1d7"; } +.fa.fa-wechat { + --fa: "\f1d7"; } -.fa.fa-send:before { - content: "\f1d8"; } +.fa.fa-send { + --fa: "\f1d8"; } .fa.fa-paper-plane-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-paper-plane-o:before { - content: "\f1d8"; } +.fa.fa-paper-plane-o { + --fa: "\f1d8"; } .fa.fa-send-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-send-o:before { - content: "\f1d8"; } +.fa.fa-send-o { + --fa: "\f1d8"; } .fa.fa-circle-thin { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-circle-thin:before { - content: "\f111"; } +.fa.fa-circle-thin { + --fa: "\f111"; } -.fa.fa-header:before { - content: "\f1dc"; } +.fa.fa-header { + --fa: "\f1dc"; } .fa.fa-futbol-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-futbol-o:before { - content: "\f1e3"; } +.fa.fa-futbol-o { + --fa: "\f1e3"; } .fa.fa-soccer-ball-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-soccer-ball-o:before { - content: "\f1e3"; } +.fa.fa-soccer-ball-o { + --fa: "\f1e3"; } .fa.fa-slideshare { font-family: 'Font Awesome 6 Brands'; @@ -1374,8 +1374,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-newspaper-o:before { - content: "\f1ea"; } +.fa.fa-newspaper-o { + --fa: "\f1ea"; } .fa.fa-paypal { font-family: 'Font Awesome 6 Brands'; @@ -1413,27 +1413,27 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-bell-slash-o:before { - content: "\f1f6"; } +.fa.fa-bell-slash-o { + --fa: "\f1f6"; } -.fa.fa-trash:before { - content: "\f2ed"; } +.fa.fa-trash { + --fa: "\f2ed"; } .fa.fa-copyright { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-eyedropper:before { - content: "\f1fb"; } +.fa.fa-eyedropper { + --fa: "\f1fb"; } -.fa.fa-area-chart:before { - content: "\f1fe"; } +.fa.fa-area-chart { + --fa: "\f1fe"; } -.fa.fa-pie-chart:before { - content: "\f200"; } +.fa.fa-pie-chart { + --fa: "\f200"; } -.fa.fa-line-chart:before { - content: "\f201"; } +.fa.fa-line-chart { + --fa: "\f201"; } .fa.fa-lastfm { font-family: 'Font Awesome 6 Brands'; @@ -1443,8 +1443,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-lastfm-square:before { - content: "\f203"; } +.fa.fa-lastfm-square { + --fa: "\f203"; } .fa.fa-ioxhost { font-family: 'Font Awesome 6 Brands'; @@ -1458,17 +1458,17 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-cc:before { - content: "\f20a"; } +.fa.fa-cc { + --fa: "\f20a"; } -.fa.fa-ils:before { - content: "\f20b"; } +.fa.fa-ils { + --fa: "\f20b"; } -.fa.fa-shekel:before { - content: "\f20b"; } +.fa.fa-shekel { + --fa: "\f20b"; } -.fa.fa-sheqel:before { - content: "\f20b"; } +.fa.fa-sheqel { + --fa: "\f20b"; } .fa.fa-buysellads { font-family: 'Font Awesome 6 Brands'; @@ -1510,24 +1510,24 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-diamond:before { - content: "\f3a5"; } +.fa.fa-diamond { + --fa: "\f3a5"; } -.fa.fa-transgender:before { - content: "\f224"; } +.fa.fa-transgender { + --fa: "\f224"; } -.fa.fa-intersex:before { - content: "\f224"; } +.fa.fa-intersex { + --fa: "\f224"; } -.fa.fa-transgender-alt:before { - content: "\f225"; } +.fa.fa-transgender-alt { + --fa: "\f225"; } .fa.fa-facebook-official { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-facebook-official:before { - content: "\f09a"; } +.fa.fa-facebook-official { + --fa: "\f09a"; } .fa.fa-pinterest-p { font-family: 'Font Awesome 6 Brands'; @@ -1537,8 +1537,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-hotel:before { - content: "\f236"; } +.fa.fa-hotel { + --fa: "\f236"; } .fa.fa-viacoin { font-family: 'Font Awesome 6 Brands'; @@ -1556,8 +1556,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-yc:before { - content: "\f23b"; } +.fa.fa-yc { + --fa: "\f23b"; } .fa.fa-optin-monster { font-family: 'Font Awesome 6 Brands'; @@ -1571,23 +1571,23 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-battery-4:before { - content: "\f240"; } +.fa.fa-battery-4 { + --fa: "\f240"; } -.fa.fa-battery:before { - content: "\f240"; } +.fa.fa-battery { + --fa: "\f240"; } -.fa.fa-battery-3:before { - content: "\f241"; } +.fa.fa-battery-3 { + --fa: "\f241"; } -.fa.fa-battery-2:before { - content: "\f242"; } +.fa.fa-battery-2 { + --fa: "\f242"; } -.fa.fa-battery-1:before { - content: "\f243"; } +.fa.fa-battery-1 { + --fa: "\f243"; } -.fa.fa-battery-0:before { - content: "\f244"; } +.fa.fa-battery-0 { + --fa: "\f244"; } .fa.fa-object-group { font-family: 'Font Awesome 6 Free'; @@ -1601,8 +1601,8 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-sticky-note-o:before { - content: "\f249"; } +.fa.fa-sticky-note-o { + --fa: "\f249"; } .fa.fa-cc-jcb { font-family: 'Font Awesome 6 Brands'; @@ -1616,80 +1616,80 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hourglass-o:before { - content: "\f254"; } +.fa.fa-hourglass-o { + --fa: "\f254"; } -.fa.fa-hourglass-1:before { - content: "\f251"; } +.fa.fa-hourglass-1 { + --fa: "\f251"; } -.fa.fa-hourglass-2:before { - content: "\f252"; } +.fa.fa-hourglass-2 { + --fa: "\f252"; } -.fa.fa-hourglass-3:before { - content: "\f253"; } +.fa.fa-hourglass-3 { + --fa: "\f253"; } .fa.fa-hand-rock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-rock-o:before { - content: "\f255"; } +.fa.fa-hand-rock-o { + --fa: "\f255"; } .fa.fa-hand-grab-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-grab-o:before { - content: "\f255"; } +.fa.fa-hand-grab-o { + --fa: "\f255"; } .fa.fa-hand-paper-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-paper-o:before { - content: "\f256"; } +.fa.fa-hand-paper-o { + --fa: "\f256"; } .fa.fa-hand-stop-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-stop-o:before { - content: "\f256"; } +.fa.fa-hand-stop-o { + --fa: "\f256"; } .fa.fa-hand-scissors-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-scissors-o:before { - content: "\f257"; } +.fa.fa-hand-scissors-o { + --fa: "\f257"; } .fa.fa-hand-lizard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-lizard-o:before { - content: "\f258"; } +.fa.fa-hand-lizard-o { + --fa: "\f258"; } .fa.fa-hand-spock-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-spock-o:before { - content: "\f259"; } +.fa.fa-hand-spock-o { + --fa: "\f259"; } .fa.fa-hand-pointer-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-pointer-o:before { - content: "\f25a"; } +.fa.fa-hand-pointer-o { + --fa: "\f25a"; } .fa.fa-hand-peace-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-hand-peace-o:before { - content: "\f25b"; } +.fa.fa-hand-peace-o { + --fa: "\f25b"; } .fa.fa-registered { font-family: 'Font Awesome 6 Free'; @@ -1715,8 +1715,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-odnoklassniki-square:before { - content: "\f264"; } +.fa.fa-odnoklassniki-square { + --fa: "\f264"; } .fa.fa-get-pocket { font-family: 'Font Awesome 6 Brands'; @@ -1746,8 +1746,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-television:before { - content: "\f26c"; } +.fa.fa-television { + --fa: "\f26c"; } .fa.fa-contao { font-family: 'Font Awesome 6 Brands'; @@ -1765,46 +1765,46 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-plus-o:before { - content: "\f271"; } +.fa.fa-calendar-plus-o { + --fa: "\f271"; } .fa.fa-calendar-minus-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-minus-o:before { - content: "\f272"; } +.fa.fa-calendar-minus-o { + --fa: "\f272"; } .fa.fa-calendar-times-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-times-o:before { - content: "\f273"; } +.fa.fa-calendar-times-o { + --fa: "\f273"; } .fa.fa-calendar-check-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-calendar-check-o:before { - content: "\f274"; } +.fa.fa-calendar-check-o { + --fa: "\f274"; } .fa.fa-map-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-map-o:before { - content: "\f279"; } +.fa.fa-map-o { + --fa: "\f279"; } -.fa.fa-commenting:before { - content: "\f4ad"; } +.fa.fa-commenting { + --fa: "\f4ad"; } .fa.fa-commenting-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-commenting-o:before { - content: "\f4ad"; } +.fa.fa-commenting-o { + --fa: "\f4ad"; } .fa.fa-houzz { font-family: 'Font Awesome 6 Brands'; @@ -1814,8 +1814,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-vimeo:before { - content: "\f27d"; } +.fa.fa-vimeo { + --fa: "\f27d"; } .fa.fa-black-tie { font-family: 'Font Awesome 6 Brands'; @@ -1833,8 +1833,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-credit-card-alt:before { - content: "\f09d"; } +.fa.fa-credit-card-alt { + --fa: "\f09d"; } .fa.fa-codiepie { font-family: 'Font Awesome 6 Brands'; @@ -1868,15 +1868,15 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-pause-circle-o:before { - content: "\f28b"; } +.fa.fa-pause-circle-o { + --fa: "\f28b"; } .fa.fa-stop-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-stop-circle-o:before { - content: "\f28d"; } +.fa.fa-stop-circle-o { + --fa: "\f28d"; } .fa.fa-bluetooth { font-family: 'Font Awesome 6 Brands'; @@ -1906,27 +1906,27 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-wheelchair-alt:before { - content: "\f368"; } +.fa.fa-wheelchair-alt { + --fa: "\f368"; } .fa.fa-question-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-question-circle-o:before { - content: "\f059"; } +.fa.fa-question-circle-o { + --fa: "\f059"; } -.fa.fa-volume-control-phone:before { - content: "\f2a0"; } +.fa.fa-volume-control-phone { + --fa: "\f2a0"; } -.fa.fa-asl-interpreting:before { - content: "\f2a3"; } +.fa.fa-asl-interpreting { + --fa: "\f2a3"; } -.fa.fa-deafness:before { - content: "\f2a4"; } +.fa.fa-deafness { + --fa: "\f2a4"; } -.fa.fa-hard-of-hearing:before { - content: "\f2a4"; } +.fa.fa-hard-of-hearing { + --fa: "\f2a4"; } .fa.fa-glide { font-family: 'Font Awesome 6 Brands'; @@ -1936,8 +1936,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-signing:before { - content: "\f2a7"; } +.fa.fa-signing { + --fa: "\f2a7"; } .fa.fa-viadeo { font-family: 'Font Awesome 6 Brands'; @@ -1947,8 +1947,8 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-viadeo-square:before { - content: "\f2aa"; } +.fa.fa-viadeo-square { + --fa: "\f2aa"; } .fa.fa-snapchat { font-family: 'Font Awesome 6 Brands'; @@ -1958,15 +1958,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-ghost:before { - content: "\f2ab"; } +.fa.fa-snapchat-ghost { + --fa: "\f2ab"; } .fa.fa-snapchat-square { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-snapchat-square:before { - content: "\f2ad"; } +.fa.fa-snapchat-square { + --fa: "\f2ad"; } .fa.fa-pied-piper { font-family: 'Font Awesome 6 Brands'; @@ -1988,15 +1988,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-official:before { - content: "\f2b3"; } +.fa.fa-google-plus-official { + --fa: "\f2b3"; } .fa.fa-google-plus-circle { font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-google-plus-circle:before { - content: "\f2b3"; } +.fa.fa-google-plus-circle { + --fa: "\f2b3"; } .fa.fa-font-awesome { font-family: 'Font Awesome 6 Brands'; @@ -2006,22 +2006,22 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-fa:before { - content: "\f2b4"; } +.fa.fa-fa { + --fa: "\f2b4"; } .fa.fa-handshake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-handshake-o:before { - content: "\f2b5"; } +.fa.fa-handshake-o { + --fa: "\f2b5"; } .fa.fa-envelope-open-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-envelope-open-o:before { - content: "\f2b6"; } +.fa.fa-envelope-open-o { + --fa: "\f2b6"; } .fa.fa-linode { font-family: 'Font Awesome 6 Brands'; @@ -2031,60 +2031,60 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-book-o:before { - content: "\f2b9"; } +.fa.fa-address-book-o { + --fa: "\f2b9"; } -.fa.fa-vcard:before { - content: "\f2bb"; } +.fa.fa-vcard { + --fa: "\f2bb"; } .fa.fa-address-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-address-card-o:before { - content: "\f2bb"; } +.fa.fa-address-card-o { + --fa: "\f2bb"; } .fa.fa-vcard-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-vcard-o:before { - content: "\f2bb"; } +.fa.fa-vcard-o { + --fa: "\f2bb"; } .fa.fa-user-circle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-circle-o:before { - content: "\f2bd"; } +.fa.fa-user-circle-o { + --fa: "\f2bd"; } .fa.fa-user-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-user-o:before { - content: "\f007"; } +.fa.fa-user-o { + --fa: "\f007"; } .fa.fa-id-badge { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license:before { - content: "\f2c2"; } +.fa.fa-drivers-license { + --fa: "\f2c2"; } .fa.fa-id-card-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-id-card-o:before { - content: "\f2c2"; } +.fa.fa-id-card-o { + --fa: "\f2c2"; } .fa.fa-drivers-license-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-drivers-license-o:before { - content: "\f2c2"; } +.fa.fa-drivers-license-o { + --fa: "\f2c2"; } .fa.fa-quora { font-family: 'Font Awesome 6 Brands'; @@ -2098,29 +2098,29 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-thermometer-4:before { - content: "\f2c7"; } +.fa.fa-thermometer-4 { + --fa: "\f2c7"; } -.fa.fa-thermometer:before { - content: "\f2c7"; } +.fa.fa-thermometer { + --fa: "\f2c7"; } -.fa.fa-thermometer-3:before { - content: "\f2c8"; } +.fa.fa-thermometer-3 { + --fa: "\f2c8"; } -.fa.fa-thermometer-2:before { - content: "\f2c9"; } +.fa.fa-thermometer-2 { + --fa: "\f2c9"; } -.fa.fa-thermometer-1:before { - content: "\f2ca"; } +.fa.fa-thermometer-1 { + --fa: "\f2ca"; } -.fa.fa-thermometer-0:before { - content: "\f2cb"; } +.fa.fa-thermometer-0 { + --fa: "\f2cb"; } -.fa.fa-bathtub:before { - content: "\f2cd"; } +.fa.fa-bathtub { + --fa: "\f2cd"; } -.fa.fa-s15:before { - content: "\f2cd"; } +.fa.fa-s15 { + --fa: "\f2cd"; } .fa.fa-window-maximize { font-family: 'Font Awesome 6 Free'; @@ -2130,22 +2130,22 @@ font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle:before { - content: "\f410"; } +.fa.fa-times-rectangle { + --fa: "\f410"; } .fa.fa-window-close-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-window-close-o:before { - content: "\f410"; } +.fa.fa-window-close-o { + --fa: "\f410"; } .fa.fa-times-rectangle-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-times-rectangle-o:before { - content: "\f410"; } +.fa.fa-times-rectangle-o { + --fa: "\f410"; } .fa.fa-bandcamp { font-family: 'Font Awesome 6 Brands'; @@ -2171,15 +2171,15 @@ font-family: 'Font Awesome 6 Brands'; font-weight: 400; } -.fa.fa-eercast:before { - content: "\f2da"; } +.fa.fa-eercast { + --fa: "\f2da"; } .fa.fa-snowflake-o { font-family: 'Font Awesome 6 Free'; font-weight: 400; } -.fa.fa-snowflake-o:before { - content: "\f2dc"; } +.fa.fa-snowflake-o { + --fa: "\f2dc"; } .fa.fa-superpowers { font-family: 'Font Awesome 6 Brands'; diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf index 1fbb1f7c3..0f82a8360 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 index 5d2802169..3c5cf97ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf index 549d68dc0..9ee1919dc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 index 18400d7fa..57d917965 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf index bb2a86956..1c10972ec 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 index 758dd4f60..16721020f 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf index 8c5864c42..3bcb67ffc 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 index f94bec227..fbafb2222 100644 Binary files a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 and b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2 differ diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js index ad1d23844..021d3a86f 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/abp/core/abp.js @@ -480,7 +480,11 @@ var abp = abp || {}; var args = Array.prototype.slice.call(arguments, 1); for (var i = 0; i < callbacks.length; i++) { - callbacks[i].apply(this, args); + try { + callbacks[i].apply(this, args); + } catch(e) { + console.error(e); + } } }; diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js new file mode 100644 index 000000000..635baffa8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js new file mode 100644 index 000000000..8b34bce0f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 000000000..f9decf9a2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js new file mode 100644 index 000000000..a1cf653d3 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js new file mode 100644 index 000000000..bc9258d65 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Rb","Km","Jm","Sb"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],today:"Hari Ini",monthsTitle:"Bulan",clear:"Kosongkan",weekStart:0,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js new file mode 100644 index 000000000..f49bd18cc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js new file mode 100644 index 000000000..7e1adbb95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js new file mode 100644 index 000000000..cc30766ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js new file mode 100644 index 000000000..e321f04ff --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js new file mode 100644 index 000000000..84f14c0e9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js new file mode 100644 index 000000000..bf2abc5d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"},a.fn.datepicker.deprecated('The language code "kh" is deprecated and will be removed in 2.0. For Khmer support use "km" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js new file mode 100644 index 000000000..f4e2f3f1a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js new file mode 100644 index 000000000..648d83f84 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.km.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js new file mode 100644 index 000000000..9751ee5c2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js new file mode 100644 index 000000000..43393409e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js new file mode 100644 index 000000000..da78ea85f --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js new file mode 100644 index 000000000..89cea00f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js new file mode 100644 index 000000000..c65a89164 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js new file mode 100644 index 000000000..46423f758 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js new file mode 100644 index 000000000..6ebaec9d8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js new file mode 100644 index 000000000..2f25159da --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.mr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mar={days:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["रवि","सोम","मंगळ","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],monthsShort:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],today:"आज",monthsTitle:"महीने",clear:"हटवा",weekStart:1,format:"dd / mm / yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js new file mode 100644 index 000000000..47efafdc2 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js new file mode 100644 index 000000000..85d3146df --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js new file mode 100644 index 000000000..af977b71e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js new file mode 100644 index 000000000..0c5136e44 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js new file mode 100644 index 000000000..630fa16b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.oc.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js new file mode 100644 index 000000000..ffb30ec8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pl={days:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],daysShort:["Niedz.","Pon.","Wt.","Śr.","Czw.","Piąt.","Sob."],daysMin:["Ndz.","Pn.","Wt.","Śr.","Czw.","Pt.","Sob."],months:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthsShort:["Sty.","Lut.","Mar.","Kwi.","Maj","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],today:"Dzisiaj",weekStart:1,clear:"Wyczyść",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js new file mode 100644 index 000000000..2d3f8afda --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js new file mode 100644 index 000000000..e2b4e64d7 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js new file mode 100644 index 000000000..5fff2986d --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js new file mode 100644 index 000000000..e520c9573 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs-latin" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian latin support use "sr-latin" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js new file mode 100644 index 000000000..ba95ae298 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"},a.fn.datepicker.deprecated('This language code "rs" is deprecated (invalid serbian language code) and will be removed in 2.0. For Serbian support use "sr" instead.')}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js new file mode 100644 index 000000000..52bc010b9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js new file mode 100644 index 000000000..b9746b8fc --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.si.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.si={days:["ඉරිදා","සඳුදා","අඟහරුවාදා","බදාදා","බ්‍රහස්පතින්දා","සිකුරාදා","සෙනසුරාදා"],daysShort:["ඉරි","සඳු","අඟ","බදා","බ්‍රහ","සිකු","සෙන"],daysMin:["ඉ","ස","අ","බ","බ්‍ර","සි","සෙ"],months:["ජනවාරි","පෙබරවාරි","මාර්තු","අප්‍රේල්","මැයි","ජුනි","ජූලි","අගෝස්තු","සැප්තැම්බර්","ඔක්තෝබර්","නොවැම්බර්","දෙසැම්බර්"],monthsShort:["ජන","පෙබ","මාර්","අප්‍රේ","මැයි","ජුනි","ජූලි","අගෝ","සැප්","ඔක්","නොවැ","දෙසැ"],today:"අද",monthsTitle:"මාස",clear:"මකන්න",weekStart:0,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js new file mode 100644 index 000000000..79a9267fd --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js new file mode 100644 index 000000000..831cf7390 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js new file mode 100644 index 000000000..8c586055a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js new file mode 100644 index 000000000..c6b7001ac --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js new file mode 100644 index 000000000..4e46dbf64 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 000000000..7ab6becb9 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js new file mode 100644 index 000000000..e7909494a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.ta.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js new file mode 100644 index 000000000..104b6dd95 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js new file mode 100644 index 000000000..1e398ba8b --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js new file mode 100644 index 000000000..716edef2e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 000000000..7889b1135 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 000000000..a555be800 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js new file mode 100644 index 000000000..a0a8f213c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-cyrl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js new file mode 100644 index 000000000..2f58e343e --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.uz-latn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js new file mode 100644 index 000000000..3311d23f8 --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js new file mode 100644 index 000000000..8e6920b0c --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js new file mode 100644 index 000000000..5d2c0b55a --- /dev/null +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"月份",format:"yyyy/mm/dd",weekStart:0,titleFormat:"yyyy年mm月",clear:"清除"}}(jQuery); \ No newline at end of file diff --git a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js index a3becee53..a372d5eb5 100644 --- a/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js +++ b/aspnet-core/services/LY.MicroService.IdentityServer/wwwroot/libs/bootstrap-daterangepicker/daterangepicker.js @@ -305,8 +305,8 @@ end = moment(val, this.locale.format); } if (start !== null && end !== null) { - this.setStartDate(start); - this.setEndDate(end); + this.setStartDate(start.startOf('day')); + this.setEndDate(end.startOf('day')); } } } @@ -370,10 +370,6 @@ this.container.find('.calendar-time').hide(); } - //can't be used together for now - if (this.timePicker && this.autoApply) - this.autoApply = false; - if (this.autoApply) { this.container.addClass('auto-apply'); } @@ -386,9 +382,7 @@ this.container.find('.drp-calendar.left').addClass('single'); this.container.find('.drp-calendar.left').show(); this.container.find('.drp-calendar.right').hide(); - if (!this.timePicker && this.autoApply) { - this.container.addClass('auto-apply'); - } + } if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { @@ -898,6 +892,7 @@ // hours // + html = '
                ").appendTo(a)),c.nTHead=p[0],a.children("tbody")),n=(0===n.length&&(n=H("").insertAfter(p)),c.nTBody=n[0],a.children("tfoot")),R=(0===n.length&&(n=H("").appendTo(a)),c.nTFoot=n[0],c.aiDisplay=c.aiDisplayMaster.slice(),c.bInitialised=!0,c.oLanguage);H.extend(!0,R,e.oLanguage),R.sUrl?H.ajax({dataType:"json",url:R.sUrl,success:function(e){B(r.oLanguage,e),H.extend(!0,R,e,c.oInit.oLanguage),G(c,null,"i18n",[c],!0),Me(c)},error:function(){z(c,0,"i18n file loading error",21),Me(c)}}):(G(c,null,"i18n",[c],!0),Me(c))}}),E=null,this)},g=(V.ext=T={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],features:{},search:[],selector:{cell:[],column:[],row:[]},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{className:{},detect:[],render:{},search:{},order:{}},_unique:0,fnVersionCheck:V.fnVersionCheck,iApiIndex:0,sVersion:V.version},H.extend(T,{afnFiltering:T.search,aTypes:T.type.detect,ofnSearch:T.type.search,oSort:T.type.order,afnSortData:T.order,aoFeatures:T.feature,oStdClasses:T.classes,oPagination:T.pager}),H.extend(V.ext.classes,{container:"dt-container",empty:{row:"dt-empty"},info:{container:"dt-info"},layout:{row:"dt-layout-row",cell:"dt-layout-cell",tableRow:"dt-layout-table",tableCell:"",start:"dt-layout-start",end:"dt-layout-end",full:"dt-layout-full"},length:{container:"dt-length",select:"dt-input"},order:{canAsc:"dt-orderable-asc",canDesc:"dt-orderable-desc",isAsc:"dt-ordering-asc",isDesc:"dt-ordering-desc",none:"dt-orderable-none",position:"sorting_"},processing:{container:"dt-processing"},scrolling:{body:"dt-scroll-body",container:"dt-scroll",footer:{self:"dt-scroll-foot",inner:"dt-scroll-footInner"},header:{self:"dt-scroll-head",inner:"dt-scroll-headInner"}},search:{container:"dt-search",input:"dt-input"},table:"dataTable",tbody:{cell:"",row:""},thead:{cell:"",row:""},tfoot:{cell:"",row:""},paging:{active:"current",button:"dt-paging-button",container:"dt-paging",disabled:"disabled",nav:""}}),{}),N=/[\r\n\u2028]/g,F=/<([^>]*>)/g,O=Math.pow(2,28),j=/^\d{2,4}[./-]\d{1,2}[./-]\d{1,2}([T ]{1}\d{1,2}[:.]\d{2}([.:]\d{2})?)?$/,R=new RegExp("(\\"+["/",".","*","+","?","|","(",")","[","]","{","}","\\","$","^","-"].join("|\\")+")","g"),P=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,_=function(e){return!e||!0===e||"-"===e},E=function(e,t){return g[t]||(g[t]=new RegExp(Pe(t),"g")),"string"==typeof e&&"."!==t?e.replace(/\./g,"").replace(g[t],"."):e},b=function(e,t,n){var r=[],a=0,o=e.length;if(void 0!==n)for(;aO)throw new Error("Exceeded max str len");var t;for(e=e.replace(F,"");(e=(t=e).replace(/
                ` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`