diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..3c3629e6 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +node_modules diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1b82be70..770a1fd0 100755 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: - name: Install Node.js & NPM uses: actions/setup-node@v3 with: - node-version: "16" + node-version: "20" # Runs npm i - uses: bahmutov/npm-install@v1 @@ -65,3 +65,16 @@ jobs: run: npx nx affected --target=build --base='origin/production' --configuration=local - if: ${{github.event.pull_request.base.ref == 'development'}} run: npx nx affected --target=build --base='origin/development' --configuration=local + + - name: Check widget bundle size + if: always() + run: | + WIDGET_FILE="apps/36-blocks/src/assets/proxy-auth/proxy-auth.js" + if [ -f "$WIDGET_FILE" ]; then + SIZE=$(stat -c%s "$WIDGET_FILE") + echo "proxy-auth.js size: $((SIZE / 1024)) KB" + if [ $SIZE -gt 3145728 ]; then + echo "::error::proxy-auth.js exceeds 3 MB ($((SIZE / 1024)) KB) — check for bundle bloat!" + exit 1 + fi + fi diff --git a/.gitignore b/.gitignore index fb276c6e..53408db3 100644 --- a/.gitignore +++ b/.gitignore @@ -50,4 +50,12 @@ Thumbs.db .angular # dotenv environment variables file -.env \ No newline at end of file +.env + +# Generated environment variable files (created by tools/set-env.js from .env) +apps/36-blocks/src/environments/env-variables.ts +apps/36-blocks-widget/src/environments/env-variables.ts + +# Nx cache +.nx/cache +.nx/workspace-data \ No newline at end of file diff --git a/.postcssrc.json b/.postcssrc.json new file mode 100644 index 00000000..fddc8af8 --- /dev/null +++ b/.postcssrc.json @@ -0,0 +1,5 @@ +{ + "plugins": { + "@tailwindcss/postcss": {} + } +} diff --git a/apps/proxy-auth-element/.eslintrc.json b/apps/36-blocks-widget/.eslintrc.json similarity index 100% rename from apps/proxy-auth-element/.eslintrc.json rename to apps/36-blocks-widget/.eslintrc.json diff --git a/apps/36-blocks-widget/DESIGN-STRUCTURE.md b/apps/36-blocks-widget/DESIGN-STRUCTURE.md new file mode 100644 index 00000000..ba559361 --- /dev/null +++ b/apps/36-blocks-widget/DESIGN-STRUCTURE.md @@ -0,0 +1,131 @@ +# Widget Design Structure + +## Stack +- **Tailwind CSS v4** — default color palette only (`gray-*`, `blue-*`, `red-*`, etc.). No custom token mapping. +- **Angular Material v21** — MDC components for forms, dialogs, tables, tabs only. No custom Material theming applied to templates. +- **No inline `style=` attributes** in templates. +- **No custom SCSS** in component files — only `:host` display/layout overrides if strictly necessary. + +--- + +## Color Conventions (Tailwind defaults) + +| Role | Light | Dark | +|---|---|---| +| Page background | `bg-white` | `dark:bg-gray-900` | +| Card background | `bg-white` | `dark:bg-gray-800` | +| Card border | `border-gray-200` | `dark:border-gray-700` | +| Primary text | `text-gray-900` | `dark:text-gray-100` | +| Secondary / muted text | `text-gray-500` | `dark:text-gray-400` | +| Label / caption text | `text-gray-400` | `dark:text-gray-500` | +| Primary action (buttons) | `bg-blue-600 text-white` | same | +| Primary action hover | `hover:bg-blue-700` | same | +| Danger | `text-red-600` / `bg-red-600` | same | +| Success | `text-green-600` | same | +| Input border | `border-gray-300` | `dark:border-gray-600` | +| Input background | `bg-white` | `dark:bg-gray-800` | +| Divider | `border-gray-100` | `dark:border-gray-700` | + +> Dark mode is toggled via `[class.dark]` on the root widget `
` using Tailwind's `darkMode: ['class']` config. + +--- + +## Typography Conventions + +| Use | Class | +|---|---| +| Page / card title | `text-lg font-semibold text-gray-900` | +| Section heading | `text-sm font-semibold text-gray-700` | +| Body text | `text-sm text-gray-700` | +| Muted / caption | `text-xs text-gray-500` | +| Label above field | `text-xs font-medium text-gray-500 uppercase tracking-wide` | +| Error message | `text-xs text-red-600` | + +--- + +## Spacing Conventions + +| Element | Class | +|---|---| +| Card padding | `p-6` | +| Section gap | `gap-6` | +| Form field gap | `gap-4` | +| Button gap in row | `gap-3` | +| Input height | Angular Material `appearance="outline"` handles this | + +--- + +## Component Map + +### 1. `widget-shell` — `widget.component.html` +The outer wrapper rendered by the Angular Element. Contains: +- Header bar (logo, title, close button) +- Router outlet for inner views +- Overlay/modal container + +### 2. `send-otp-center` — `send-otp-center.component.html` +First screen: enter phone number or email to receive OTP. +- Input field + send button +- Social login buttons (optional) +- "Already have an account" link + +### 3. `login` — `login.component.html` +Email + password form. +- Input fields (email, password with show/hide toggle) +- "Forgot password" link +- Submit button +- Switch to OTP/register + +### 4. `register` — `register.component.html` +Multi-step registration: +- Step 1: name, email, phone +- Step 2: OTP verification (4 boxes) +- Step 3: password setup + +### 5. `subscription-center` — `subscription-center.component.html` +Plan selection: +- Plan cards (title, price, features list) +- CTA button per card +- Current plan highlight + +### 6. `user-profile` — `user-profile.component.html` +Authenticated user view/edit: +- Avatar + name + email banner +- View mode: read-only field rows +- Edit mode: form fields +- Organizations list / table + +### 7. `user-management` — `user-management.component.html` +Admin panel: +- Members tab: search, user rows, edit/remove buttons +- Roles tab: roles table with permissions +- Permissions tab + +### 8. `organization-details` — `organization-details.component.html` +Org settings form: +- Name, timezone, logo upload +- Save/cancel buttons + +--- + +## Migration Order (tell me which to start) +1. `send-otp-center` +2. `login` +3. `register` +4. `subscription-center` +5. `user-profile` +6. `user-management` +7. `organization-details` +8. `widget-shell` (last — depends on inner views) + +--- + +## Files Reference + +| File | Purpose | +|---|---| +| `src/tailwind-blocks.html` | Paste paid Tailwind UI blocks here | +| `src/styles.scss` | Global styles — minimal | +| `src/otp-global.scss` | Widget-specific global overrides | +| `apps/shared/scss/global.scss` | Tailwind import + shared utilities | +| `tailwind.config.js` (root) | Tailwind config — content globs + darkMode | diff --git a/apps/36-blocks-widget/build-elements.js b/apps/36-blocks-widget/build-elements.js new file mode 100755 index 00000000..34d03fda --- /dev/null +++ b/apps/36-blocks-widget/build-elements.js @@ -0,0 +1,87 @@ +const fs = require('fs-extra'); +const path = require('path'); + +(async function build() { + const distDir = './dist/apps/36-blocks-widget/browser'; + const outDir = './apps/36-blocks/src/assets/proxy-auth'; + + if (!(await fs.pathExists(distDir))) { + throw new Error(`Widget dist not found: ${distDir}`); + } + + // Dynamic discovery with priority-based ordering — future-proof against Angular output changes + const allFiles = await fs.readdir(distDir); + const priority = ['polyfills', 'vendor', 'main']; + const jsFiles = allFiles + .filter((f) => f.endsWith('.js')) + .sort((a, b) => { + const getPriority = (f) => { + const index = priority.findIndex((p) => f.includes(p)); + return index === -1 ? priority.length : index; + }; + return getPriority(a) - getPriority(b); + }); + + if (jsFiles.length === 0) { + throw new Error(`No JS files found in ${distDir}`); + } + + console.info('Concatenating:', jsFiles); + + // Read and concat all JS files in order + const contents = []; + for (const file of jsFiles) { + contents.push(await fs.readFile(path.join(distDir, file), 'utf8')); + } + + // Inline styles.css if it exists + const stylesPath = path.join(distDir, 'styles.css'); + if (await fs.pathExists(stylesPath)) { + console.info('Inlining styles.css...'); + const cssContent = await fs.readFile(stylesPath, 'utf8'); + // Escape backticks and backslashes for JS template literal + const escapedCSS = cssContent.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$/g, '\\$'); + + // Create a self-executing function that injects styles into document.head + const styleInjector = ` +(function() { + if (typeof window === 'undefined' || !window.document) return; + if (document.getElementById('proxy-auth-widget-styles')) return; + + var style = document.createElement('style'); + style.id = 'proxy-auth-widget-styles'; + style.textContent = \`${escapedCSS}\`; + + // Store CSS content globally so widget-portal service can access it + if (!window.__proxyAuth) window.__proxyAuth = {}; + window.__proxyAuth.inlinedStyles = \`${escapedCSS}\`; + + // Inject into document.head + (document.head || document.getElementsByTagName('head')[0]).appendChild(style); +})(); +`; + contents.push(styleInjector); + } else { + console.warn('styles.css not found - skipping CSS inlining'); + } + + await fs.ensureDir(outDir); + const outPath = path.join(outDir, 'proxy-auth.js'); + await fs.writeFile(outPath, contents.join('\n')); + + // Copy to dist output directory as well + const distOutDir = './dist/apps/36-blocks/browser/assets/proxy-auth'; + await fs.ensureDir(distOutDir); + await fs.copyFile(outPath, path.join(distOutDir, 'proxy-auth.js')); + + // Bundle size check — warn if unexpectedly large + const stats = await fs.stat(outPath); + const sizeMB = (stats.size / 1048576).toFixed(2); + console.info(`proxy-auth.js created: ${sizeMB} MB`); + console.info(`Copied to: ${distOutDir}/proxy-auth.js`); + if (stats.size > 3 * 1048576) { + console.warn('WARNING: proxy-auth.js exceeds 3 MB — check for bundle bloat!'); + } + + console.info('Elements created successfully!'); +})(); diff --git a/apps/36-blocks-widget/project.json b/apps/36-blocks-widget/project.json new file mode 100644 index 00000000..03728fca --- /dev/null +++ b/apps/36-blocks-widget/project.json @@ -0,0 +1,147 @@ +{ + "name": "36-blocks-widget", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/36-blocks-widget/src", + "prefix": "proxy", + "targets": { + "set-env": { + "executor": "nx:run-commands", + "options": { + "command": "node tools/set-env --auth" + } + }, + "build": { + "dependsOn": ["set-env"], + "executor": "@angular-devkit/build-angular:application", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/apps/36-blocks-widget", + "browser": "apps/36-blocks-widget/src/main.ts", + "index": false, + "polyfills": [], + "tsConfig": "apps/36-blocks-widget/tsconfig.app.json", + "inlineStyleLanguage": "scss", + "stylePreprocessorOptions": { + "includePaths": ["apps/shared/scss", "apps/shared"] + }, + "assets": [ + "apps/36-blocks-widget/src/favicon.ico", + "apps/36-blocks-widget/src/assets", + { + "glob": "intl-tel-input-custom.css", + "input": "apps/shared/assets/utils", + "output": "assets/utils" + } + ], + "styles": ["apps/36-blocks-widget/src/styles.scss"], + "scripts": [], + "outputHashing": "none", + "allowedCommonJsDependencies": ["crypto-js", "dayjs"] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1.5mb", + "maximumError": "3mb" + } + ], + "fileReplacements": [ + { + "replace": "apps/36-blocks-widget/src/environments/environment.ts", + "with": "apps/36-blocks-widget/src/environments/environment.prod.ts" + } + ], + "optimization": { + "scripts": true, + "styles": true, + "fonts": true + }, + "namedChunks": false, + "extractLicenses": false, + "sourceMap": false + }, + "test": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1.5mb", + "maximumError": "3mb" + } + ], + "fileReplacements": [ + { + "replace": "apps/36-blocks-widget/src/environments/environment.ts", + "with": "apps/36-blocks-widget/src/environments/environment.test.ts" + } + ], + "optimization": true, + "extractLicenses": false, + "sourceMap": false + }, + "stage": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "1.5mb", + "maximumError": "3mb" + } + ], + "fileReplacements": [ + { + "replace": "apps/36-blocks-widget/src/environments/environment.ts", + "with": "apps/36-blocks-widget/src/environments/environment.stage.ts" + } + ], + "optimization": true, + "extractLicenses": false, + "sourceMap": false + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "index": "apps/36-blocks-widget/src/index.html", + "fileReplacements": [ + { + "replace": "apps/36-blocks-widget/src/main.ts", + "with": "apps/36-blocks-widget/src/main.dev.ts" + } + ] + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "dependsOn": ["set-env"], + "executor": "@angular-devkit/build-angular:dev-server", + "options": { + "buildTarget": "36-blocks-widget:build:development" + }, + "configurations": { + "production": { + "buildTarget": "36-blocks-widget:build:production" + }, + "development": { + "buildTarget": "36-blocks-widget:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "executor": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "36-blocks-widget:build" + } + }, + "lint": { + "executor": "@nx/eslint:lint", + "options": { + "lintFilePatterns": ["apps/36-blocks-widget/**/*.ts", "apps/36-blocks-widget/**/*.html"] + } + } + }, + "tags": ["scope:36-blocks-widget", "type:application"] +} diff --git a/apps/36-blocks-widget/src/app/app.component.html b/apps/36-blocks-widget/src/app/app.component.html new file mode 100644 index 00000000..e028f8ec --- /dev/null +++ b/apps/36-blocks-widget/src/app/app.component.html @@ -0,0 +1,2 @@ + +
diff --git a/apps/36-blocks-widget/src/app/app.component.scss b/apps/36-blocks-widget/src/app/app.component.scss new file mode 100644 index 00000000..ef6ab2dc --- /dev/null +++ b/apps/36-blocks-widget/src/app/app.component.scss @@ -0,0 +1,41 @@ +// .hcaptcha-container { +// margin: 20px 0; +// padding: 15px; +// border: 1px solid #e0e0e0; +// border-radius: 8px; +// background-color: #f9f9f9; +// display: flex; +// justify-content: center; +// } + +// .captcha-status { +// margin: 15px 0; +// padding: 10px; +// background-color: #e8f5e8; +// border: 1px solid #4caf50; +// border-radius: 4px; + +// p { +// margin: 0 0 10px 0; +// color: #2e7d32; +// font-weight: 500; +// } + +// button { +// background-color: #f44336; +// color: white; +// border: none; +// padding: 8px 16px; +// border-radius: 4px; +// cursor: pointer; +// font-size: 14px; + +// &:hover { +// background-color: #d32f2f; +// } +// } +// } + +// // :host div { +// // height: 100vh; +// // } diff --git a/apps/36-blocks-widget/src/app/app.component.ts b/apps/36-blocks-widget/src/app/app.component.ts new file mode 100644 index 00000000..f274bdc5 --- /dev/null +++ b/apps/36-blocks-widget/src/app/app.component.ts @@ -0,0 +1,93 @@ +import { ChangeDetectionStrategy, Component, effect, inject, OnDestroy, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { environment } from '../environments/environment'; +import { BaseComponent } from '@proxy/ui/base-component'; +import { WidgetTheme, PublicScriptType, WidgetConfig, PROXY_DOM_ID } from '@proxy/constant'; +import { WidgetThemeService } from './otp/service/widget-theme.service'; + +const REFERENCE_ID = '4512365c177425472369c0fa8351a15'; +const THEME: WidgetTheme = WidgetTheme.System; +const TYPE: PublicScriptType = PublicScriptType.Authorization; +const AUTH_TOKEN = + 'ZHN5YlVZcjRDR3U5NjNGSk5rVGFRejI0MEdCZWg3RWpUK0xVYzlvajJFMlM4a2F4NUpxaWJjcnJkVzZSeW5RMStZaWJaV1JYandHOXpsTlBVZXBnNUZWbzl5MFJHU0xyNEtMWUkxVjRSS0RiRXBOcER4czlxakJUdThLNUhnOFJGOHV3bXBHclAwN241d3dDM0JmZE9JMlhzNHZHaVZ6cGdvTkdIenJzbnNiMHFGNmhVMUpQbkZPUWRWOVFGcTRPQ2NBU1plM0lKUUFPTmI0cUVSUEJTdz09'; + +@Component({ + selector: 'proxy-root', + imports: [CommonModule], + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'], + host: { '(window:beforeunload)': 'ngOnDestroy()' }, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class AppComponent extends BaseComponent implements OnInit, OnDestroy { + private readonly themeService = inject(WidgetThemeService); + + protected readonly showAuthentication: boolean = true; + protected readonly referenceId: string = REFERENCE_ID; + protected readonly theme: WidgetTheme = THEME; + protected readonly authToken: string = AUTH_TOKEN; + get containerId(): string { + return this.showAuthentication ? REFERENCE_ID : PROXY_DOM_ID; + } + + constructor() { + super(); + effect(() => { + const resolved = this.themeService.resolvedTheme(); + const themeClass = `${resolved ?? WidgetTheme.System}-theme`; + document.body.classList.remove('light-theme', 'dark-theme', 'system-theme'); + document.body.classList.add(themeClass); + }); + } + + ngOnInit(): void { + this.initOtpProvider(); + } + + public initOtpProvider(): void { + if (customElements.get('h-captcha') || (window as any).__proxyWidgetInitialized) { + return; + } + (window as any).__proxyWidgetInitialized = true; + + if (!environment.production) { + const widgetConfig: WidgetConfig = { + referenceId: REFERENCE_ID, // Always pass referenceId + // showCompanyDetails: false, + // isHidden: true, + // loginRedirectUrl: 'https://www.google.com', + target: '_self', + success: (data) => { + console.log('success response', data); + }, + failure: (error) => { + console.log('failure reason', error); + }, + }; + if (!this.showAuthentication) { + if (TYPE) { + widgetConfig['type'] = TYPE; + if (TYPE === PublicScriptType.Authorization) { + widgetConfig['isPreview'] = true; + } else { + widgetConfig['authToken'] = AUTH_TOKEN; + + if (TYPE === PublicScriptType.UserManagement) { + // True If you want show Role and Permission tab + widgetConfig['isRolePermission'] = true; + } + } + } + } + if (THEME) { + widgetConfig['theme'] = THEME; + } + console.log('widgetConfig', widgetConfig); + window.initVerification(widgetConfig); + } + } + + ngOnDestroy(): void { + super.ngOnDestroy(); + } +} diff --git a/apps/36-blocks-widget/src/app/init-verification.ts b/apps/36-blocks-widget/src/app/init-verification.ts new file mode 100644 index 00000000..e3df0f69 --- /dev/null +++ b/apps/36-blocks-widget/src/app/init-verification.ts @@ -0,0 +1,186 @@ +import { NgElement, WithProperties } from '@angular/elements'; +import { ProxyAuthWidgetComponent } from './otp/widget/widget.component'; +import { omit } from 'lodash-es'; +import { PROXY_DOM_ID, PublicScriptType } from '@proxy/constant'; + +export const RESERVED_KEYS = ['referenceId', 'target', 'style', 'success', 'failure']; + +declare global { + interface Window { + initVerification: any; + intlTelInput: any; + showUserManagement: any; + hideUserManagement: any; + __proxyAuth: any; + __proxyAuthLoaded: boolean; + } +} + +// Version metadata — helps clients debug CDN/cache issues +window.__proxyAuth = window.__proxyAuth || {}; +window.__proxyAuth.version = '0.0.3'; +window.__proxyAuth.buildTime = new Date().toISOString(); + +// Global function to show user management component (sets isHidden to false) +if (!window.showUserManagement) { + window['showUserManagement'] = () => { + window.dispatchEvent(new CustomEvent('showUserManagement')); + }; +} + +// Global function to hide user management component (sets isHidden to true) +if (!window.hideUserManagement) { + window['hideUserManagement'] = () => { + window.dispatchEvent(new CustomEvent('hideUserManagement')); + }; +} + +function documentReady(fn: any) { + // see if DOM is already available + if (document.readyState === 'complete' || document.readyState === 'interactive') { + // call on next available tick + setTimeout(fn, 1); + } else { + document.addEventListener('DOMContentLoaded', fn); + } +} + +if (!window.initVerification) { + window['initVerification'] = (config: any) => { + documentReady(() => { + const urlParams = new URLSearchParams(window.location.search); + const isRegisterFormOnlyFromParams = urlParams.get('isRegisterFormOnly') === 'true'; + const paramsData = { + ...(urlParams.get('first_name') && { firstName: urlParams.get('first_name') }), + ...(urlParams.get('last_name') && { lastName: urlParams.get('last_name') }), + ...(urlParams.get('email') && { email: urlParams.get('email') }), + ...(urlParams.get('signup_service_id') && { signupServiceId: urlParams.get('signup_service_id') }), + }; + if (config?.referenceId || config?.authToken || config?.showCompanyDetails) { + const findOtpProvider = document.querySelector('proxy-auth'); + if (findOtpProvider) { + const parentContainer = findOtpProvider.parentElement; + if (parentContainer) { + parentContainer.querySelectorAll('#skeleton-loader').forEach((el) => el.remove()); + } + findOtpProvider.remove(); + } + const widgetElement = document.createElement('proxy-auth') as NgElement & + WithProperties; + widgetElement.referenceId = config?.referenceId; + widgetElement.type = config?.type; + widgetElement.authToken = config?.authToken; + widgetElement.showCompanyDetails = config?.showCompanyDetails; + widgetElement.userToken = config?.userToken; + widgetElement.isRolePermission = config?.isRolePermission; + widgetElement.isPreview = config?.isPreview; + widgetElement.isLogin = config?.isLogin; + widgetElement.loginRedirectUrl = config?.loginRedirectUrl; + widgetElement.theme = config?.theme; + widgetElement.version = config?.version; + widgetElement.input_fields = config?.input_fields; + widgetElement.show_social_login_icons = config?.show_social_login_icons; + widgetElement.exclude_role_ids = config?.exclude_role_ids; + widgetElement.include_role_ids = config?.include_role_ids; + widgetElement.isHidden = config?.isHidden; + widgetElement.isRegisterFormOnly = config?.isRegisterFormOnly || isRegisterFormOnlyFromParams; + widgetElement.target = config?.target ?? '_self'; + if (!config.success || typeof config.success !== 'function') { + throw Error('success callback function missing !'); + } + widgetElement.successReturn = config.success; + widgetElement.failureReturn = config.failure; + + // omitting keys which are not required in API payload; query params fill in missing values + widgetElement.otherData = { ...paramsData, ...omit(config, RESERVED_KEYS) }; + + // Determine the target container id: + const FALLBACK_CONTAINER_ID = PROXY_DOM_ID; + const targetId: string = + config?.authToken || config?.type === PublicScriptType.Authorization + ? FALLBACK_CONTAINER_ID + : config?.referenceId; + + const resolveContainer = (): HTMLElement | null => document.getElementById(targetId); + + // Mount helper — called exactly once when the container is found. + const mountWidget = (container: HTMLElement): void => { + container.append(widgetElement); + window['libLoaded'] = true; + }; + + const container = resolveContainer(); + if (container) { + mountWidget(container); + } else { + // SPA-safe retry strategy: + // 1. MutationObserver watches the entire document for the target element + // being added at any depth (handles Angular/React/Next.js async renders). + // 2. A setInterval heartbeat runs in parallel as a safety net for cases + // where MutationObserver misses the insertion (e.g. innerHTML swap). + // 3. Both are cancelled the moment the container is found. + // 4. After TIMEOUT_MS with no container, log a clear error and stop. + + const RETRY_INTERVAL_MS = 150; + const TIMEOUT_MS = 30_000; // 30 s — covers slow/lazy SPA routes + let resolved = false; + const startTime = Date.now(); + + const cleanup = (observer: MutationObserver, intervalId: ReturnType): void => { + observer.disconnect(); + clearInterval(intervalId); + }; + + const tryMount = ( + observer: MutationObserver, + intervalId: ReturnType + ): boolean => { + if (resolved) return true; + const found = resolveContainer(); + if (found) { + resolved = true; + cleanup(observer, intervalId); + mountWidget(found); + return true; + } + if (Date.now() - startTime >= TIMEOUT_MS) { + resolved = true; + cleanup(observer, intervalId); + console.error( + `[proxy-auth] Container element with id="${targetId}" was not found in the document ` + + `after ${TIMEOUT_MS / 1000} s. ` + + `Ensure the element exists in the DOM before calling window.initVerification().` + ); + return true; + } + return false; + }; + + // Placeholder interval id — replaced after both are created. + let intervalId: ReturnType; + + const observer = new MutationObserver(() => { + tryMount(observer, intervalId); + }); + + observer.observe(document.documentElement, { + childList: true, + subtree: true, + attributes: true, + attributeFilter: ['id'], + }); + + intervalId = setInterval(() => { + tryMount(observer, intervalId); + }, RETRY_INTERVAL_MS); + } + } else { + if (!config?.referenceId) { + throw Error('Reference Id is missing!'); + } else { + throw Error('Something went wrong!'); + } + } + }); + }; +} diff --git a/apps/proxy-auth/src/app/otp/component/index.ts b/apps/36-blocks-widget/src/app/otp/component/index.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/component/index.ts rename to apps/36-blocks-widget/src/app/otp/component/index.ts diff --git a/apps/36-blocks-widget/src/app/otp/component/login/login.component.html b/apps/36-blocks-widget/src/app/otp/component/login/login.component.html new file mode 100644 index 00000000..cd3d141a --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/login/login.component.html @@ -0,0 +1,372 @@ + +
+ @if (step > 1) { + + } @else { +
+ } + +
+@if (step === 1) { +
+

Login

+ + + @if (loginForm.get('username'); as userNameControl) { +
+ + + @if (userNameControl.touched && userNameControl.errors?.['required']) { + + } +

+ Note: Please enter your Mobile number with the country code (e.g. 91) +

+
+ } + + + @if (loginForm.get('password'); as passwordControl) { +
+ +
+ + +
+ @if (passwordControl.touched) { @if (passwordControl.errors?.['required']) { + + } @else if (passwordControl.errors?.['pattern']) { + + } } +
+ } + + +
+ @if (isDark) { + + } @if (!isDark) { + + } +
+ + @if (apiError | async; as errorMsg) { + + } + +
+ + +

+ New User? + Create Account +

+
+
+} @if (step === 2) { +
+

Reset Password

+ + + + @if (apiError | async; as errorMsg) { + + } + + +
+} @if (step === 3) { +
+

Change Password

+ +
+ {{ sendOtpForm.get('userDetails').value }} + Change +
+ + + + + + + + @if (resetPasswordForm.get('password'); as passwordControl) { +
+ +
+ + +
+ @if (passwordControl.touched) { @if (passwordControl.errors?.['required']) { + + } @else if (passwordControl.errors?.['minlength']; as minLengthError) { + + } @else if (passwordControl.errors?.['pattern']) { + + } } +
+ } + + + + + @if (apiError | async; as errorMsg) { + + } + + +
+} + + + +
+ + + @if (formControl.touched) { @if (formControl.errors?.['required']) { + + } @else if (formControl.errors?.['pattern']) { + + } @else if (formControl.errors?.['minlength']; as minLengthError) { + + } @else if (formControl.errors?.['cannotContainSpace']) { + + } @else if (formControl.errors?.['valueSameAsControl']) { + + } } @if (hint) { +

{{ hint }}

+ } +
+
+ + + + @if (!showPassword) { + + } @else { + + } + diff --git a/apps/36-blocks-widget/src/app/otp/component/login/login.component.scss b/apps/36-blocks-widget/src/app/otp/component/login/login.component.scss new file mode 100644 index 00000000..9175246c --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/login/login.component.scss @@ -0,0 +1,5 @@ +:host { + width: 100%; + display: flex; + flex-direction: column; +} diff --git a/apps/proxy-auth/src/app/otp/component/login/login.component.ts b/apps/36-blocks-widget/src/app/otp/component/login/login.component.ts similarity index 84% rename from apps/proxy-auth/src/app/otp/component/login/login.component.ts rename to apps/36-blocks-widget/src/app/otp/component/login/login.component.ts index 3ad8a054..3b96b6c2 100644 --- a/apps/proxy-auth/src/app/otp/component/login/login.component.ts +++ b/apps/36-blocks-widget/src/app/otp/component/login/login.component.ts @@ -1,4 +1,17 @@ -import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + OnDestroy, + OnInit, + ViewChild, + effect, + inject, + input, + output, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MarkAllAsTouchedDirective } from '@proxy/directives/mark-all-as-touched'; import { LoginComponentStore } from './login.store'; import { BehaviorSubject, filter, interval, Observable, Subscription, takeUntil } from 'rxjs'; import { IAppState } from '../../store/app.state'; @@ -10,24 +23,32 @@ import { FormControl, FormGroup, Validators } from '@angular/forms'; import { IlogInData, IOtpData, IResetPassword } from '../../model/otp'; import { EMAIL_OR_MOBILE_REGEX, PASSWORD_REGEX } from '@proxy/regex'; import { CustomValidators } from '@proxy/custom-validator'; -import { META_TAG_ID } from '@proxy/constant'; -import { environment } from 'apps/proxy-auth/src/environments/environment'; +import { META_TAG_ID, WidgetTheme } from '@proxy/constant'; +import { environment } from 'apps/36-blocks-widget/src/environments/environment'; import { OtpUtilityService } from '../../service/otp-utility.service'; +import { WidgetThemeService } from '../../service/widget-theme.service'; import { NgHcaptchaComponent } from 'ng-hcaptcha'; @Component({ selector: 'proxy-login', + imports: [CommonModule, ReactiveFormsModule, MarkAllAsTouchedDirective], templateUrl: './login.component.html', styleUrls: ['./login.component.scss'], providers: [LoginComponentStore], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class LoginComponent extends BaseComponent implements OnInit, OnDestroy { - @Input() public loginServiceData: any; - @Input() public theme: string; - @Output() public togglePopUp: EventEmitter = new EventEmitter(); - @Output() public closePopUp: EventEmitter = new EventEmitter(); - @Output() public openPopUp: EventEmitter = new EventEmitter(); - @Output() public failureReturn: EventEmitter = new EventEmitter(); + public loginServiceData = input(); + public theme = input(); + protected readonly WidgetTheme = WidgetTheme; + private readonly themeService = inject(WidgetThemeService); + get isDark(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } + public togglePopUp = output(); + public closePopUp = output(); + public openPopUp = output(); + public failureReturn = output(); public state: string; public step: number = 1; public showPassword: boolean = false; @@ -38,6 +59,10 @@ export class LoginComponent extends BaseComponent implements OnInit, OnDestroy { public hCaptchaToken: string = ''; public hCaptchaVerified: boolean = false; @ViewChild(NgHcaptchaComponent) hCaptchaComponent: NgHcaptchaComponent; + private componentStore = inject(LoginComponentStore); + private store = inject>(Store); + private otpUtilityService = inject(OtpUtilityService); + public otpData$: Observable = this.componentStore.otpdata$; public isLoading$: Observable = this.componentStore.isLoading$; public resetPassword$: Observable = this.componentStore.resetPassword$; @@ -65,12 +90,9 @@ export class LoginComponent extends BaseComponent implements OnInit, OnDestroy { ]), }); - constructor( - private componentStore: LoginComponentStore, - private store: Store, - private otpUtilityService: OtpUtilityService - ) { + constructor() { super(); + effect(() => this.themeService.setInputTheme(this.theme())); this.selectWidgetData$ = this.store.pipe(select(selectWidgetData), takeUntil(this.destroy$)); } diff --git a/apps/proxy-auth/src/app/otp/component/login/login.store.ts b/apps/36-blocks-widget/src/app/otp/component/login/login.store.ts similarity index 94% rename from apps/proxy-auth/src/app/otp/component/login/login.store.ts rename to apps/36-blocks-widget/src/app/otp/component/login/login.store.ts index c923df2e..653a6de5 100644 --- a/apps/proxy-auth/src/app/otp/component/login/login.store.ts +++ b/apps/36-blocks-widget/src/app/otp/component/login/login.store.ts @@ -1,5 +1,6 @@ -import { Injectable } from '@angular/core'; -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { Injectable, inject } from '@angular/core'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { Observable, switchMap } from 'rxjs'; import { OtpService } from '../../service/otp.service'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; @@ -18,7 +19,10 @@ export interface ILoginInitialState { @Injectable() export class LoginComponentStore extends ComponentStore { - constructor(private service: OtpService, private toast: PrimeNgToastService) { + private service = inject(OtpService); + private toast = inject(PrimeNgToastService); + + constructor() { super({ isLoading: false, logInData: null, diff --git a/apps/36-blocks-widget/src/app/otp/component/register/register.component.html b/apps/36-blocks-widget/src/app/otp/component/register/register.component.html new file mode 100644 index 00000000..e02981c1 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/register/register.component.html @@ -0,0 +1,413 @@ + +@if (!isInDialog()) { +
+

Register

+ @if (!isRegisterFormOnly()) { + + } +
+} + + +
+ +

User Details

+ + +
+ + +
+ + + + + +
+
+ +
+ @if (!isOtpVerified) { + + } @else { + + Verified + + + } +
+ + + @if (isNumberChanged || isOtpVerified) { + + } + + + @if (isOtpSent && !isOtpVerified) { +
+ + @if (otpError) { +

{{ otpError }}

+ } +
+ } + + +
+ + +
+ + +

+ Note: Password should contain atleast one Capital Letter, one Small Letter, + one Digit and one Symbol +

+ + + @if (showCompanyDetail) { +
+

+ Company Details (Optional) +

+ + + + } + + +
+
+ @if (apiError | async; as apiErrorList) { + Error: + @for (error of apiErrorList; track error) { {{ error }}
} } +
+ +
+
+ + + +
+ +
+ @if (type === 'password' || type === 'confirm password') { + + + } @else { + + } +
+ @if (formControl?.touched) { @if (formControl.errors?.['required']) { + + } @else if (formControl.errors?.['minlengthWithSpace']) { + + } @else if (formControl.errors?.['noStartEndSpaces']) { + + } @else if (formControl.errors?.['min']; as minError) { + + } @else if (formControl.errors?.['max']; as maxError) { + + } @else if (formControl.errors?.['minlength']; as minLengthError) { + + } @else if (formControl.errors?.['maxlength']; as maxLengthError) { + + } @else if (formControl.errors?.['pattern']) { + + } @else if (formControl.errors?.['valueSameAsControl']) { + + } } @if (hint) { +

{{ hint }}

+ } +
+
+ + + +
+ + @if (formControl.touched && !intlClass?.[key]?.[required ? 'isRequiredValidNumber' : 'isValidNumber']) { + + } @if (formControl.errors?.['otpVerificationFailed']) { + + } +
+
+ + + + @if (!visible) { + + } @else { + + } + diff --git a/apps/36-blocks-widget/src/app/otp/component/register/register.component.scss b/apps/36-blocks-widget/src/app/otp/component/register/register.component.scss new file mode 100644 index 00000000..b5f52a47 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/register/register.component.scss @@ -0,0 +1,63 @@ +:host { + width: 100%; + min-height: 100px; + display: flex; + flex-direction: column; + justify-content: flex-start; + text-align: start; +} + +/* API-driven button hover color override */ +.has-hover-color:hover { + background-color: var(--btn-hover-color) !important; +} + +/* intl-tel-input: force wrapper to fill container */ +:host ::ng-deep .iti { + width: 100%; +} + +/* intl-tel-input: prevent flag from overlapping input text */ +:host ::ng-deep .iti input[type='tel'] { + padding-left: 52px !important; +} + +/* intl-tel-input: invalid ring state */ +.invalid-input { + outline: 2px solid var(--proxy-error-40); + outline-offset: -1px; +} + +/* Dark mode — .dark class is on the dialog portal ancestor */ +:host-context(.dark) ::ng-deep .iti .iti__country-list { + background-color: #1f2937; + border-color: #374151; + color: #f9fafb; +} + +:host-context(.dark) ::ng-deep .iti__country { + color: #f9fafb !important; +} + +:host-context(.dark) ::ng-deep .iti__country:hover, +:host-context(.dark) ::ng-deep .iti__country.iti__highlight { + background-color: #312e81 !important; +} + +:host-context(.dark) ::ng-deep .iti__dial-code { + color: #9ca3af; +} + +:host-context(.dark) ::ng-deep .iti__divider { + border-bottom-color: #374151; +} + +:host-context(.dark) ::ng-deep .iti__selected-flag:hover, +:host-context(.dark) ::ng-deep .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { + background-color: rgba(255, 255, 255, 0.08); +} + +:host-context(.dark) ::ng-deep input[type='tel'] { + color: #f9fafb; + background-color: transparent; +} diff --git a/apps/proxy-auth/src/app/otp/component/register/register.component.ts b/apps/36-blocks-widget/src/app/otp/component/register/register.component.ts similarity index 78% rename from apps/proxy-auth/src/app/otp/component/register/register.component.ts rename to apps/36-blocks-widget/src/app/otp/component/register/register.component.ts index 9ebb1824..5615c322 100644 --- a/apps/proxy-auth/src/app/otp/component/register/register.component.ts +++ b/apps/36-blocks-widget/src/app/otp/component/register/register.component.ts @@ -1,18 +1,23 @@ import { cloneDeep } from 'lodash-es'; +import { WidgetTheme } from '@proxy/constant'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MarkAllAsTouchedDirective } from '@proxy/directives/mark-all-as-touched'; import { OtpService } from './../../service/otp.service'; import { environment } from './../../../../environments/environment'; import { AfterViewInit, + ChangeDetectionStrategy, ChangeDetectorRef, Component, - EventEmitter, - Input, OnDestroy, OnInit, - Output, - SimpleChanges, ViewChild, ElementRef, + effect, + inject, + input, + output, } from '@angular/core'; import { resetAll, resetAnyState, sendOtpAction, verifyOtpAction } from '../../store/actions/otp.action'; import { BaseComponent } from '@proxy/ui/base-component'; @@ -20,10 +25,11 @@ import { select, Store } from '@ngrx/store'; import { IAppState } from '../../store/app.state'; import { IntlPhoneLib, removeEmptyKeys } from '@proxy/utils'; import { FormControl, FormGroup, Validators } from '@angular/forms'; -import * as _ from 'lodash'; +import { isEqual } from 'lodash-es'; import { EMAIL_REGEX, NAME_REGEX, PASSWORD_REGEX } from '@proxy/regex'; import { CustomValidators } from '@proxy/custom-validator'; import { OtpUtilityService } from '../../service/otp-utility.service'; +import { WidgetThemeService } from '../../service/widget-theme.service'; import { errorResolver } from '@proxy/models/root-models'; import { BehaviorSubject, distinctUntilChanged, Observable, takeUntil, interval, Subscription } from 'rxjs'; import { @@ -40,32 +46,35 @@ import { IGetOtpRes } from '../../model/otp'; @Component({ selector: 'proxy-register', + imports: [CommonModule, ReactiveFormsModule, MarkAllAsTouchedDirective], templateUrl: './register.component.html', styleUrls: ['./register.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class RegisterComponent extends BaseComponent implements AfterViewInit, OnDestroy, OnInit { - @Input() public referenceId: string; - @Input() public serviceData: any; - @Input() public loginServiceData: any; - @Input() public registrationViaLogin: boolean; - @Input() public prefillDetails; - @Input() public showCompanyDetails: boolean = true; - @Input() public firstName: string; - @Input() public lastName: string; - @Input() public email: string; - @Input() public signupServiceId: string | number; - @Input() public isRegisterFormOnly: boolean = false; - @Input() public version: string = 'v1'; - @Input() public theme: string; + public referenceId = input(); + public serviceData = input(); + public loginServiceData = input(); + public registrationViaLogin = input(); + public prefillDetails = input(); + public showCompanyDetails = input(true); + public version = input('v1'); + public theme = input(); + protected readonly WidgetTheme = WidgetTheme; + public firstName = input(); + public lastName = input(); + public email = input(); + public signupServiceId = input(); + public isRegisterFormOnly = input(false); + public isInDialog = input(false); public showPassword: boolean = false; public showConfirmPassword: boolean = false; - @Output() public togglePopUp: EventEmitter = new EventEmitter(); - @Output() public successReturn: EventEmitter = new EventEmitter(); - @Output() public failureReturn: EventEmitter = new EventEmitter(); + public togglePopUp = output(); + public successReturn = output(); + public failureReturn = output(); get showCompanyDetail(): boolean { - // Show company details by default, only hide when explicitly set to false - return this.showCompanyDetails !== false; + return this.showCompanyDetails() !== false; } public registrationForm = new FormGroup({ @@ -138,62 +147,67 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O @ViewChild('otp3', { static: false }) otp3Ref: ElementRef; @ViewChild('otp4', { static: false }) otp4Ref: ElementRef; - constructor( - private store: Store, - private otpService: OtpService, - private otpUtilityService: OtpUtilityService, - private cdr: ChangeDetectorRef - ) { + private store = inject>(Store); + private otpService = inject(OtpService); + private otpUtilityService = inject(OtpUtilityService); + private cdr = inject(ChangeDetectorRef); + private readonly themeService = inject(WidgetThemeService); + get isDarkTheme(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } + + constructor() { super(); + effect(() => this.themeService.setInputTheme(this.theme())); this.selectGetOtpRes$ = this.store.pipe( select(selectGetOtpRes), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectGetOtpInProcess$ = this.store.pipe( select(selectGetOtpInProcess), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectGetOtpSuccess$ = this.store.pipe( select(selectGetOtpSuccess), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectVerifyOtpV2Data$ = this.store.pipe( select(selectVerifyOtpV2Data), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectVerifyOtpV2InProcess$ = this.store.pipe( select(selectVerifyOtpV2InProcess), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectVerifyOtpV2Success$ = this.store.pipe( select(selectVerifyOtpV2Success), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectApiErrorResponse$ = this.store.pipe( select(selectApiErrorResponse), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); this.selectWidgetTheme$ = this.store.pipe( select(selectWidgetTheme), - distinctUntilChanged(_.isEqual), + distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); } ngOnInit(): void { - if (this.isRegisterFormOnly) { - this.registrationForm.get('user.email').disable(); - } this.selectWidgetTheme$.pipe(takeUntil(this.destroy$)).subscribe((theme) => { this.uiPreferences = theme?.ui_preferences || {}; }); + if (this.isRegisterFormOnly()) { + this.registrationForm.get('user.email').disable(); + } this.registrationForm .get('user.mobile') .valueChanges.pipe(takeUntil(this.destroy$)) @@ -216,16 +230,19 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O this.registrationForm.get('user.mobile').setErrors(null); this.otpError = ''; // Clear error on successful verification } + this.cdr.markForCheck(); }); this.selectVerifyOtpV2Data$.pipe(takeUntil(this.destroy$)).subscribe((res) => { this.otpVerificationToken = res?.data?.otp_verification_token; + this.cdr.markForCheck(); }); this.selectGetOtpSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - this.isOtpSent = res; if (res) { + this.isOtpSent = true; this.startResendTimer(); this.lastSentMobileNumber = this.registrationForm.get('user.mobile').value; this.isNumberChanged = true; + this.cdr.markForCheck(); } }); @@ -236,48 +253,38 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O // Clear OTP form to allow user to retry this.otpForm.reset(); } + this.cdr.markForCheck(); }); // Add global paste event listener document.addEventListener('paste', this.handleGlobalPaste.bind(this)); } - ngOnChanges(changes: SimpleChanges) { - if (changes?.prefillDetails?.currentValue) { - this.checkPrefillDetails(); - } - if (changes?.firstName?.currentValue) { - this.registrationForm.get('user.firstName').setValue(changes.firstName.currentValue); - } - if (changes?.lastName?.currentValue) { - this.registrationForm.get('user.lastName').setValue(changes.lastName.currentValue); - } - if (changes?.email?.currentValue) { - this.registrationForm.get('user.email').setValue(changes.email.currentValue); - } - } checkPrefillDetails() { - if (isNaN(Number(this.prefillDetails))) { - this.registrationForm.get('user.email').setValue(this.prefillDetails); + const val = this.prefillDetails(); + if (isNaN(Number(val))) { + this.registrationForm.get('user.email').setValue(val); this.registrationForm.get('user.mobile').setValue(null); } else { this.registrationForm.get('user.email').setValue(null); - this.prefilledNumber = this.prefillDetails; - this.registrationForm.get('user.mobile').setValue(this.prefillDetails); + this.prefilledNumber = val; + this.registrationForm.get('user.mobile').setValue(val); } } ngAfterViewInit(): void { - this.initIntl('user'); - let count = 0; - const userIntlWrapper = document - ?.querySelector('proxy-auth') - ?.shadowRoot?.querySelector('#init-contact-wrapper-user'); - const interval = setInterval(() => { - if (count > 6 || userIntlWrapper?.querySelector('.iti__selected-flag')?.getAttribute('title')) { - this.initIntl('company'); - clearInterval(interval); - } - count += 1; - }, 500); + setTimeout(() => { + this.initIntl('user'); + let count = 0; + const interval = setInterval(() => { + const userIntlWrapper = + document.querySelector('proxy-auth')?.shadowRoot?.querySelector('#init-contact-wrapper-user') || + document.getElementById('init-contact-wrapper-user'); + if (count > 6 || userIntlWrapper?.querySelector('.iti__selected-flag')?.getAttribute('title')) { + this.initIntl('company'); + clearInterval(interval); + } + count += 1; + }, 500); + }); } public ngOnDestroy(): void { @@ -328,7 +335,7 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O this.store.dispatch( sendOtpAction({ request: { - referenceId: this.referenceId, + referenceId: this.referenceId(), mobile: mobileControl.value, authkey: environment.sendOtpAuthKey, }, @@ -338,11 +345,11 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O } public initIntl(key: string): void { - const parentDom = document.querySelector('proxy-auth')?.shadowRoot; - const input = document.querySelector('proxy-auth')?.shadowRoot?.getElementById('init-contact-' + key); - const customCssStyleURL = `${environment.baseUrl}/assets/utils/intl-tel-input-custom.css`; + const input = (document.querySelector('proxy-auth')?.shadowRoot?.getElementById('init-contact-' + key) || + document.getElementById('init-contact-' + key)) as HTMLElement; + const customCssStyleURL = `${window.location.origin}/assets/utils/intl-tel-input-custom.css`; if (input) { - this.intlClass[key] = new IntlPhoneLib(input, parentDom, customCssStyleURL); + this.intlClass[key] = new IntlPhoneLib(input, document.head, customCssStyleURL); if (this.prefilledNumber) { input.setAttribute('value', `+${this.prefilledNumber}`); } @@ -364,28 +371,6 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O } } - private resetFormState(): void { - // Reset OTP verification states - this.isOtpVerified = false; - this.isOtpSent = false; - this.isNumberChanged = false; - this.otpError = ''; - this.lastSentMobileNumber = ''; - - // Reset forms - this.registrationForm.reset(); - this.otpForm.reset(); - - // Reset timer - this.stopResendTimer(); - - // Reset API errors - this.apiError.next(null); - } - - /** - * Reset only OTP-specific store states, preserving widgetData and other non-OTP states - // */ private resetOtpStoreState(): void { this.store.dispatch( resetAnyState({ @@ -408,6 +393,50 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O }) ); } + private resetFormState(): void { + // Reset OTP verification states + this.isOtpVerified = false; + this.isOtpSent = false; + this.isNumberChanged = false; + this.otpError = ''; + this.lastSentMobileNumber = ''; + + // Reset forms + this.registrationForm.reset(); + this.otpForm.reset(); + + // Reset timer + this.stopResendTimer(); + + // Reset API errors + this.apiError.next(null); + } + + /** + * Reset only OTP-specific store states, preserving widgetData and other non-OTP states + // */ + // private resetOtpStoreState(): void { + // this.store.dispatch( + // resetAnyState({ + // request: { + // otpGenerateData: null, + // getOtpInProcess: false, + // getOtpSuccess: false, + // verifyOtpV2Data: null, + // verifyOtpV2InProcess: false, + // verifyOtpV2Success: false, + // resendOtpInProcess: false, + // resendOtpSuccess: false, + // verifyOtpData: null, + // verifyOtpInProcess: false, + // verifyOtpSuccess: false, + // resendCount: 0, + // apiErrorResponse: null, + // errors: null, + // }, + // }) + // ); + // } public returnSuccess(successResponse: any) { this.successReturn.emit(successResponse); @@ -422,7 +451,7 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O const formData = removeEmptyKeys(cloneDeep(this.registrationForm.getRawValue()), true); const state = JSON.parse( this.otpUtilityService.aesDecrypt( - this.registrationViaLogin ? this.loginServiceData.state : this.serviceData?.state ?? '', + this.registrationViaLogin() ? this.loginServiceData().state : this.serviceData()?.state ?? '', environment.uiEncodeKey, environment.uiIvKey, true @@ -440,11 +469,13 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O formData.company['meta'] = {}; } const payload = { - reference_id: this.referenceId, - service_id: this.registrationViaLogin ? this.loginServiceData.service_id : this.serviceData.service_id, + reference_id: this.referenceId(), + service_id: this.registrationViaLogin() + ? this.loginServiceData().service_id + : this.serviceData().service_id, url_unique_id: state?.url_unique_id, request_data: formData, - ...(this.signupServiceId && { signup_service_id: this.signupServiceId }), + ...(this.signupServiceId() && { signup_service_id: this.signupServiceId() }), }; const encodedData = this.otpUtilityService.aesEncrypt( JSON.stringify(payload), @@ -452,7 +483,9 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O environment.uiIvKey, true ); - const registrationState = this.registrationViaLogin ? this.loginServiceData.state : this.serviceData.state; + const registrationState = this.registrationViaLogin() + ? this.loginServiceData().state + : this.serviceData().state; this.otpService .register({ proxy_state: encodedData, @@ -484,7 +517,7 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O this.store.dispatch( sendOtpAction({ request: { - referenceId: this.referenceId, + referenceId: this.referenceId(), mobile: mobileControl.value, authkey: environment.sendOtpAuthKey, }, @@ -503,7 +536,7 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O this.store.dispatch( verifyOtpAction({ request: { - referenceId: this.referenceId, + referenceId: this.referenceId(), mobile: mobileControl.value, otp: otpString, authkey: environment.sendOtpAuthKey, @@ -623,17 +656,17 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O } public get primaryColor(): string | null { - if (this.version !== 'v2') { + if (this.version() !== 'v2') { return null; } - const isDark = this.theme === 'dark'; + const isDark = this.themeService.isDark(); return isDark ? this.uiPreferences?.dark_theme_primary_color || null : this.uiPreferences?.light_theme_primary_color || null; } public get borderRadiusValue(): string | null { - if (this.version !== 'v2') { + if (this.version() !== 'v2') { return null; } switch (this.uiPreferences?.border_radius) { @@ -651,21 +684,17 @@ export class RegisterComponent extends BaseComponent implements AfterViewInit, O } public get buttonColor(): string | null { - if (this.version !== 'v2') return null; + if (this.version() !== 'v2') return null; return this.uiPreferences?.button_color || null; } public get buttonHoverColor(): string | null { - if (this.version !== 'v2') return null; + if (this.version() !== 'v2') return null; return this.uiPreferences?.button_hover_color || null; } public get buttonTextColor(): string | null { - if (this.version !== 'v2') return null; + if (this.version() !== 'v2') return null; return this.uiPreferences?.button_text_color || null; } - - public get isDarkTheme(): boolean { - return this.theme === 'dark'; - } } diff --git a/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.html b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.html new file mode 100644 index 00000000..36502c69 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.html @@ -0,0 +1,629 @@ + +@if (isUserProxyContainer()) { +
+

Click Here to preview this Reference ID: {{ referenceId() }}

+ +
+} + + +@if (!isUserProxyContainer()) { + +@if (!hideInlineHeader()) { + +} + +
+ +
+} + + + + @if (selectWidgetData$ | async; as widgetDataArray) { + + + @for (widgetData of widgetDataArray; track widgetData.service_id) { @if (widgetData?.service_id === + featureServiceIds.PasswordAuthentication && version() === 'v2' && loginStep === 1) { @if (selectWidgetTheme$ | + async; as widgetTheme) { @if (widgetTheme?.ui_preferences?.logo_url) { +
+ Logo +
+ } } +

+ {{ titleText }} +

+ } } + + + @if (input_fields() === 'top') { + + + + } + + + @if (input_fields() === 'bottom') { + + + + } + + + @if (loginStep === 1 && widgetDataArray?.length && isCreateAccountLink()) { +

+ Are you a new User? + {{ signUpButtonText }} +

+ } @if (!widgetDataArray?.length) { +

No Service Enabled

+ } } +
+ + +@if (dialogOpen()) { + +
+ + + + +
+ +
+ + @if (showRegistrationInDialog() || loginStep === 2 || loginStep === 3) { + + } @else { + + } + + +

+ @if (showRegistrationInDialog()) { Create Account } @else if (loginStep === 2 || loginStep === 3) { + Forgot Password } @else { Sign In } +

+ + + +
+ + +
+ + @if (!showRegistrationInDialog()) { +
+ +
+ } + + + @if (showRegistrationInDialog()) { + + } +
+
+
+} + + + + @if (!showPassword) { + + } @else { + + } + + + + + @for (widgetData of widgetDataArray; track widgetData.service_id) { @if (widgetData?.service_id === + featureServiceIds.PasswordAuthentication && version() === 'v2' && loginStep === 1) { @if + (hasOtherAuthOptions(widgetDataArray)) { +
+
+ Or continue with +
+
+ } } } +
+ + + + @for (widgetData of widgetDataArray; track widgetData.service_id) { @if (widgetData?.service_id === + featureServiceIds.PasswordAuthentication && version() === 'v2') { + + + @if (loginStep === 1) { +
+ + @if (loginForm.get('username'); as userNameControl) { +
+ + +

+ Note: Enter Mobile number with country code (e.g. 91) +

+ @if (userNameControl.touched && userNameControl.errors?.['required']) { + + } +
+ } + + + @if (loginForm.get('password'); as passwordControl) { +
+ +
+ + +
+ @if (passwordControl.touched && passwordControl.errors?.['required']) { + + } @if (passwordControl.touched && passwordControl.errors?.['cannotContainSpace']) { + + } +
+ } + + +
+ @if (isDarkTheme) { + + } @if (!isDarkTheme) { + + } +
+ + @if (loginError) { + + } + + +
+

+ Forgot Password? +

+ +
+
+ } + + + @if (loginStep === 2) { +
+ @if (!hideInlineHeader()) { +

+ Reset Password +

+ } + +
+ + + @if (sendOtpLoginForm.get('userDetails')?.touched && + sendOtpLoginForm.get('userDetails')?.errors?.['required']) { + + } @if (sendOtpLoginForm.get('userDetails')?.touched && + sendOtpLoginForm.get('userDetails')?.errors?.['pattern']) { + + } +
+ + @if (loginError) { + + } + + +
+ } + + + @if (loginStep === 3) { +
+

+ Change Password +

+ +

+ {{ sendOtpLoginForm.get('userDetails')?.value }} + Change +

+ + + + +
+ + + @if (resetPasswordForm.get('otp')?.touched && resetPasswordForm.get('otp')?.errors?.['required']) { + + } +
+ + + @if (resetPasswordForm.get('password'); as passwordControl) { +
+ +
+ + +
+ @if (passwordControl.touched && passwordControl.errors?.['required']) { + + } @if (passwordControl.touched && passwordControl.errors?.['minlength']; as minLengthError) { + + } @if (passwordControl.touched && passwordControl.errors?.['pattern']) { + + } +
+ } + + + @if (resetPasswordForm.get('confirmPassword'); as confirmPasswordControl) { +
+ + + @if (confirmPasswordControl.touched && confirmPasswordControl.errors?.['required']) { + + } @if (confirmPasswordControl.touched && confirmPasswordControl.errors?.['minlength']; as minLengthError) { + + } @if (confirmPasswordControl.touched && confirmPasswordControl.errors?.['pattern']) { + + } @if (confirmPasswordControl.touched && confirmPasswordControl.errors?.['valueSameAsControl']) { + + } +
+ } @if (loginError) { + + } + + +
+ } } } +
+ + + + @if (loginStep === 1) { + + + @if (show_social_login_icons()) { +
+ @for (widgetData of widgetDataArray; track widgetData.service_id) { @if (widgetData?.service_id !== + featureServiceIds.PasswordAuthentication || (widgetData?.service_id === featureServiceIds.PasswordAuthentication + && version() === 'v1')) { @if (widgetData?.service_id !== featureServiceIds.Msg91OtpService || + !(otpScriptLoading | async)) { + + } } } +
+ } + + + @if (!show_social_login_icons()) { +
+ @for (widgetData of widgetDataArray; track widgetData.service_id) { @if (widgetData?.service_id !== + featureServiceIds.PasswordAuthentication || (widgetData?.service_id === featureServiceIds.PasswordAuthentication + && version() === 'v1')) { @if (widgetData?.service_id !== featureServiceIds.Msg91OtpService || + !(otpScriptLoading | async)) { + + } } } +
+ } } +
diff --git a/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.scss b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.scss new file mode 100644 index 00000000..7ce9555d --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.scss @@ -0,0 +1,21 @@ +// :host { +// display: flex; +// flex-direction: column; +// justify-content: center; +// position: relative; +// } + +// /* API-driven button hover color override */ +// .has-hover-color:hover { +// background-color: var(--btn-hover-color) !important; +// } + +// /* intl-tel-input: force wrapper to fill container */ +// :host ::ng-deep .iti { +// width: 100%; +// } + +// /* intl-tel-input: prevent flag from overlapping input text */ +// :host ::ng-deep .iti input[type='tel'] { +// padding-left: 52px !important; +// } diff --git a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.ts b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.ts similarity index 82% rename from apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.ts rename to apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.ts index a255acbd..d8574c7d 100644 --- a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.ts +++ b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/send-otp-center.component.ts @@ -1,18 +1,25 @@ import { OtpWidgetService } from './../../service/otp-widget.service'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { NgHcaptchaModule } from 'ng-hcaptcha'; import { AfterViewInit, + ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, - EventEmitter, - Input, OnDestroy, OnInit, - Output, ViewChild, + effect, + inject, + input, + output, + signal, } from '@angular/core'; +import { WidgetPortalRef, WidgetPortalService } from '../../service/widget-portal.service'; import { NgHcaptchaComponent } from 'ng-hcaptcha'; -import { FormControl, FormGroup, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; import { select, Store } from '@ngrx/store'; import { CustomValidators } from '@proxy/custom-validator'; import { BaseComponent } from '@proxy/ui/base-component'; @@ -46,60 +53,57 @@ import { debounceTime, distinctUntilChanged, skip, take, takeUntil } from 'rxjs/ import { EMAIL_REGEX, EMAIL_OR_MOBILE_REGEX, ONLY_INTEGER_REGEX, PASSWORD_REGEX } from '@proxy/regex'; import { IGetOtpRes, IlogInData, IOtpData, IResetPassword, IWidgetResponse } from '../../model/otp'; import { IntlPhoneLib } from '@proxy/utils'; -import { META_TAG_ID } from '@proxy/constant'; -import { environment } from 'apps/proxy-auth/src/environments/environment'; +import { META_TAG_ID, WidgetTheme } from '@proxy/constant'; +import { environment } from 'apps/36-blocks-widget/src/environments/environment'; import { FeatureServiceIds } from '@proxy/models/features-model'; import { LoginComponentStore } from '../login/login.store'; import { OtpUtilityService } from '../../service/otp-utility.service'; - -export enum OtpErrorCodes { - VerifyLimitReached = 704, - InvalidOtp = 703, -} - -export enum SendOtpCenterVersion { - V1 = 'v1', - V2 = 'v2', -} - -export enum InputFields { - TOP = 'top', - BOTTOM = 'bottom', -} +import { WidgetThemeService } from '../../service/widget-theme.service'; +import { InputFields, OtpErrorCodes, WidgetVersion } from './utility/model'; +import { RegisterComponent } from '../register/register.component'; @Component({ - selector: 'proxy-send-otp-center', + selector: 'authorization', + imports: [CommonModule, ReactiveFormsModule, NgHcaptchaModule, RegisterComponent], templateUrl: './send-otp-center.component.html', styleUrls: ['./send-otp-center.component.scss'], providers: [LoginComponentStore], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnDestroy, AfterViewInit { @ViewChild('initContact') initContact: ElementRef; @ViewChild(NgHcaptchaComponent) hCaptchaComponent: NgHcaptchaComponent; - @Input() public referenceId: string; - @Input() public serviceData: any; - @Input() public tokenAuth: string; - @Input() public target: string; - @Input() public version: SendOtpCenterVersion = SendOtpCenterVersion.V1; - @Input() public input_fields: string = InputFields.TOP; - @Input() public show_social_login_icons: boolean = false; - @Input() public isCreateAccountLink: boolean; - @Input() public theme: string; - @Input() public isUserProxyContainer: boolean = true; - @Output() public togglePopUp: EventEmitter = new EventEmitter(); - @Output() public successReturn: EventEmitter = new EventEmitter(); - @Output() public failureReturn: EventEmitter = new EventEmitter(); - @Output() public openPopUp: EventEmitter = new EventEmitter(); - @Output() public closePopUp: EventEmitter = new EventEmitter(); - + @ViewChild('dialogWrap') dialogWrapRef: ElementRef; + public referenceId = input(); + public serviceData = input(); + public tokenAuth = input(); + public target = input(); + public version = input(WidgetVersion.V1); + public input_fields = input(InputFields.TOP); + public show_social_login_icons = input(false); + public isCreateAccountLink = input(); + public theme = input(); + protected readonly WidgetTheme = WidgetTheme; + public isUserProxyContainer = input(true); + public hideInlineHeader = input(false); + public togglePopUp = output(); + public successReturn = output(); + public failureReturn = output(); + public openPopUp = output(); + public closePopUp = output(); + + private readonly themeService = inject(WidgetThemeService); + get isDarkTheme(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } public steps = 1; - public phoneForm = new UntypedFormGroup({ - phone: new UntypedFormControl('', [Validators.required]), + public phoneForm = new FormGroup({ + phone: new FormControl('', [Validators.required]), }); - public otpControl = new UntypedFormControl(undefined, [ + public otpControl = new FormControl(undefined, [ Validators.required, Validators.pattern(ONLY_INTEGER_REGEX), ]); - public emailControl = new UntypedFormControl('', [Validators.required, Validators.pattern(EMAIL_REGEX)]); + public emailControl = new FormControl('', [Validators.required, Validators.pattern(EMAIL_REGEX)]); public errors$: Observable; public selectGetOtpInProcess$: Observable; @@ -117,6 +121,8 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD public selectApiErrorResponse$: Observable; public closeWidgetApiFailed$: Observable; + private otpWidgetService = inject(OtpWidgetService); + public otpScriptLoading: BehaviorSubject = this.otpWidgetService.scriptLoading; public timerSubscription: Subscription; @@ -181,15 +187,20 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD public uiPreferences: any = {}; - constructor( - private store: Store, - private cdr: ChangeDetectorRef, - private _elemRef: ElementRef, - private otpWidgetService: OtpWidgetService, - private loginComponentStore: LoginComponentStore, - private otpUtilityService: OtpUtilityService - ) { + public readonly dialogOpen = signal(false); + public readonly showRegistrationInDialog = signal(false); + private dialogPortalRef: WidgetPortalRef | null = null; + + private store = inject>(Store); + private cdr = inject(ChangeDetectorRef); + private _elemRef = inject(ElementRef); + private loginComponentStore = inject(LoginComponentStore); + private otpUtilityService = inject(OtpUtilityService); + private readonly widgetPortal = inject(WidgetPortalService); + + constructor() { super(); + effect(() => this.themeService.setInputTheme(this.theme())); this.errors$ = this.store.pipe(select(errors), distinctUntilChanged(isEqual), takeUntil(this.destroy$)); this.selectGetOtpInProcess$ = this.store.pipe( select(selectGetOtpInProcess), @@ -403,7 +414,7 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD sendOtpAction({ request: { // variables: {}, - referenceId: this.referenceId, + referenceId: this.referenceId(), mobile: this.mobileNumber, }, }) @@ -427,8 +438,8 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD this.store.dispatch( getOtpResendAction({ request: { - tokenAuth: this.tokenAuth, - referenceId: this.referenceId, + tokenAuth: this.tokenAuth(), + referenceId: this.referenceId(), reqId: this.otpRes.reqId, retryChannel: channel, }, @@ -441,9 +452,9 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD this.store.dispatch( getOtpVerifyAction({ request: { - tokenAuth: this.tokenAuth, + tokenAuth: this.tokenAuth(), otp: this.otpControl.value, - referenceId: this.referenceId, + referenceId: this.referenceId(), reqId: this.otpRes.reqId, // identifier: this.sendOTPMode === '1' ? this.mobileNumber : this.emailControl.value, }, @@ -459,7 +470,7 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD public close(closeByUser: boolean = false) { document.getElementById(META_TAG_ID)?.remove(); - if (this.isUserProxyContainer) { + if (this.isUserProxyContainer()) { this.resetStore(); } this.togglePopUp.emit(); @@ -514,7 +525,7 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD } private openLink(link: string): void { - window.open(link, this.target); + window.open(link, this.target()); } public onVerificationBtnClick(widgetData: any): void { @@ -523,7 +534,7 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD } else if (widgetData?.service_id === FeatureServiceIds.Msg91OtpService) { this.otpWidgetService.openWidget(); } else if (widgetData?.service_id === FeatureServiceIds.PasswordAuthentication) { - if (this.version === SendOtpCenterVersion.V2) { + if (this.version() === WidgetVersion.V2) { this.login(); } else { this.otpWidgetService.openLogin(true); @@ -590,7 +601,33 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD } public showRegistration(prefillDetails?: string) { - this.openPopUp.emit(prefillDetails || this.loginForm.get('username')?.value); + if (this.isUserProxyContainer()) { + this.showRegistrationInDialog.set(true); + } else { + this.openPopUp.emit(prefillDetails || this.loginForm.get('username')?.value); + } + } + + public openPreviewDialog(): void { + this.dialogOpen.set(true); + this.showRegistrationInDialog.set(false); + setTimeout(() => { + if (this.dialogWrapRef?.nativeElement) { + this.dialogPortalRef = this.widgetPortal.attach(this.dialogWrapRef.nativeElement); + } + }); + } + + public closePreviewDialog(): void { + this.dialogPortalRef?.detach(); + this.dialogPortalRef = null; + this.dialogOpen.set(false); + this.showRegistrationInDialog.set(false); + this.changeLoginStep(1); + } + + public goBackFromRegistration(): void { + this.showRegistrationInDialog.set(false); } public hasOtherAuthOptions(widgetDataArray: any[]): boolean { @@ -638,24 +675,24 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD } public get titleText(): string { - if (this.version === SendOtpCenterVersion.V2 && this.uiPreferences?.title) { + if (this.version() === WidgetVersion.V2 && this.uiPreferences?.title) { return this.uiPreferences.title; } return 'Login'; } public get primaryColor(): string | null { - if (this.version !== SendOtpCenterVersion.V2) { + if (this.version() !== WidgetVersion.V2) { return null; } - const isDark = this.theme === 'dark'; + const isDark = this.themeService.isDark(); return isDark ? this.uiPreferences?.dark_theme_primary_color || null : this.uiPreferences?.light_theme_primary_color || null; } public get borderRadiusValue(): string | null { - if (this.version !== SendOtpCenterVersion.V2) { + if (this.version() !== WidgetVersion.V2) { return null; } switch (this.uiPreferences?.border_radius) { @@ -673,24 +710,20 @@ export class SendOtpCenterComponent extends BaseComponent implements OnInit, OnD } public get buttonColor(): string | null { - if (this.version !== SendOtpCenterVersion.V2) return null; + if (this.version() !== WidgetVersion.V2) return null; return this.uiPreferences?.button_color || null; } public get buttonHoverColor(): string | null { - if (this.version !== SendOtpCenterVersion.V2) return null; + if (this.version() !== WidgetVersion.V2) return null; return this.uiPreferences?.button_hover_color || null; } public get buttonTextColor(): string | null { - if (this.version !== SendOtpCenterVersion.V2) return null; + if (this.version() !== WidgetVersion.V2) return null; return this.uiPreferences?.button_text_color || null; } - public get isDarkTheme(): boolean { - return this.theme === 'dark'; - } - public get signUpButtonText(): string { return this.uiPreferences?.sign_up_button_text || 'Create an account'; } diff --git a/apps/36-blocks-widget/src/app/otp/component/send-otp-center/utility/model.ts b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/utility/model.ts new file mode 100644 index 00000000..6f64c595 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/send-otp-center/utility/model.ts @@ -0,0 +1,6 @@ +export { WidgetVersion, InputFields } from '../../../widget/utility/model'; + +export enum OtpErrorCodes { + VerifyLimitReached = 704, + InvalidOtp = 703, +} diff --git a/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.html b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.html new file mode 100644 index 00000000..7781d887 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.html @@ -0,0 +1,125 @@ + diff --git a/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.scss b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.scss new file mode 100644 index 00000000..57d5f6f2 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.scss @@ -0,0 +1,398 @@ +// @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + +// .container { +// background: #ffffff !important; +// padding: 20px; +// text-align: left; +// position: relative; +// height: 100vh; +// width: 100vw; +// font-family: 'Outfit', sans-serif; +// z-index: 1; +// flex-direction: column; +// overflow-y: auto; +// box-sizing: border-box; +// } + +// /* When used in dialog, override the positioning */ +// :host-context(.subscription-center-dialog) .container { +// position: relative !important; +// top: auto !important; +// left: auto !important; +// right: auto !important; +// bottom: auto !important; +// height: 100% !important; +// width: 100% !important; +// max-height: 700px !important; +// max-width: 900px !important; +// } + +// /* Dialog-specific styling for better layout */ +// :host-context(.subscription-center-dialog) { +// .subscription-plans-container { +// padding: 10px !important; +// height: calc(100% - 40px) !important; +// } + +// .plans-grid { +// justify-content: space-around !important; +// // align-items: flex-start !important; +// } + +// .plan-card { +// flex: 0 0 280px !important; +// margin: 10px !important; +// } +// } + +// // Subscription Plans Styles +// .subscription-plans-container { +// flex: 1; +// display: flex; +// flex-direction: column; +// align-items: stretch; +// justify-content: flex-start; +// padding: 20px; +// min-height: auto; +// overflow-y: visible; +// font-family: 'Outfit', sans-serif; +// } + +// .plans-grid { +// display: flex; +// flex-direction: row; +// gap: 20px; +// width: 100%; +// max-width: 100%; +// margin: 0; +// align-items: flex-start; +// padding: 0 0 0 20px; +// overflow-x: auto; +// // overflow-y: hidden; + +// // Custom scrollbar styling +// &::-webkit-scrollbar { +// height: 8px; +// } + +// &::-webkit-scrollbar-track { +// background: #f1f1f1; +// border-radius: 4px; +// } + +// &::-webkit-scrollbar-thumb { +// background: #c1c1c1; +// border-radius: 4px; + +// &:hover { +// background: #a8a8a8; +// } +// } + +// // Responsive behavior for smaller screens +// @media (max-width: 1200px) { +// gap: 15px; +// padding: 15px; +// } + +// @media (max-width: 768px) { +// flex-direction: column; +// align-items: center; +// gap: 20px; +// overflow-x: visible; +// overflow-y: auto; +// } +// } + +// // Ensure highlighted border is always visible +// .plan-card.highlighted { +// border: 2px solid #000000 !important; +// box-shadow: 0 0 0 0px #000000 !important; +// } + +// .plan-card { +// background: #ffffff; +// border: 2px solid #e6e6e6; +// border-radius: 4px; +// padding: 26px 24px; +// transition: all 0.3s ease; +// box-shadow: none; +// min-width: 250px; +// max-width: 350px; +// width: 350px; +// flex: 1; +// display: flex; +// flex-direction: column; +// justify-content: flex-start; +// min-height: auto; +// max-height: none; +// overflow: visible; +// min-height: 348px; +// font-family: 'Outfit', sans-serif; +// } + +// // Dark mode support for plan cards +// // :host-context(.dark-theme) .plan-card { +// // background: var(--color-common-slate); +// // border: 1px solid var(--color-common-border); +// // color: var(--color-common-text); + +// // &:hover { +// // transform: translateY(-8px); +// // box-shadow: none; +// // } + +// // &.popular { +// // transform: scale(1.02); + +// // &:hover { +// // transform: scale(1.02) translateY(-8px); +// // } +// // } + +// // &.highlighted { +// // border: 2px solid #000000 !important; +// // box-shadow: 0 0 0 0px #000000 !important; +// // } +// // } + +// // Dark mode support for highlighted cards +// // :host-context(.dark-theme) .plan-card.highlighted { +// // border: 2px solid var(--color-common-text) !important; +// // box-shadow: 0 0 0 2px var(--color-common-text) !important; + +// // // Mobile responsive +// // @media (max-width: 768px) { +// // min-width: 100%; +// // max-width: 400px; +// // width: 100%; +// // padding: 30px 20px; + +// // &.popular { +// // transform: none; + +// // &:hover { +// // transform: translateY(-8px); +// // } +// // } +// // } +// // } + +// .popular-badge { +// position: absolute; +// top: -12px; +// right: 20px; +// background: #4d4d4d; +// color: #ffffff; +// padding: 6px 16px; +// border-radius: 20px; +// font-size: var(--font-size-12); +// font-weight: 600; +// text-transform: uppercase; +// letter-spacing: 0.5px; +// } + +// .plan-title { +// font-size: var(--font-size-28); +// font-weight: 700; +// color: var(--color-common-slate); +// @media (max-width: 768px) { +// font-size: 24px; +// } +// } + +// .plan-price { +// .price-container { +// display: flex; +// align-items: flex-start; +// gap: 6px; +// } + +// .price-number { +// font-size: 39px; +// font-weight: 700; +// color: #4d4d4d; +// line-height: 1; + +// @media (max-width: 768px) { +// font-size: 42px; +// } +// } + +// .price-currency { +// font-size: 16px; +// font-weight: 400; +// color: #666666; +// line-height: 1; +// margin-top: 4px; +// margin-left: 4px; + +// @media (max-width: 768px) { +// font-size: 14px; +// } +// } + +// .price-period { +// font-size: 18px; +// color: #666666; +// font-weight: 500; + +// @media (max-width: 768px) { +// font-size: 16px; +// } +// } +// } + +// .plan-description { +// .description-text { +// font-size: 14px; +// color: #666666; +// font-style: italic; +// } +// } + +// .included-resources { +// .resource-boxes { +// display: flex; +// flex-direction: column; +// gap: 8px; +// margin-top: 6px; +// } + +// .resource-box { +// border-radius: 4px; +// padding: 4px 2px; +// font-size: 14px; +// font-weight: 600; +// color: #4d4d4d; +// text-align: left; +// } +// } + +// .section-title { +// font-size: 18px; +// font-weight: 600; +// color: #333333; +// margin: 0 0 8px 0; +// } + +// .plan-features { +// list-style: none; + +// .feature-item { +// padding: 4px 0 !important; +// margin-bottom: 0px !important; +// color: #4d4d4d; +// font-size: 14px; +// font-weight: 600; +// // padding-left: 20px; + +// .feature-icon { +// font-weight: bold; +// font-size: 14px; +// color: #22c55e; +// } +// } +// } + +// .plan-button { +// width: 65%; +// padding: 6px 6px; +// border-radius: 4px; +// font-size: 15px; +// font-weight: 400; +// font-family: 'Outfit', sans-serif; +// cursor: pointer; +// transition: all 0.3s ease; +// border: 1px solid; +// margin-top: auto; + +// &.primary { +// background: #4d4d4d; +// color: #ffffff; +// border-color: #4d4d4d; +// font-weight: 700; + +// &:hover { +// background: #333333; +// border-color: #333333; +// } +// } + +// &.secondary { +// background: #ffffff; +// color: #4d4d4d; +// border-color: #4d4d4d; + +// &:hover { +// background: #f8f9fa; +// } +// } + +// @media (max-width: 768px) { +// padding: 14px 28px; +// font-size: 16px; +// } +// } + +// .plan-button-hidden { +// padding: 16px 32px; +// border-radius: 12px; +// font-size: 18px; +// font-weight: 600; +// font-family: 'Outfit', sans-serif; +// background: #f8f9fa; +// color: #6c757d; +// border: 2px solid #e9ecef; +// margin-top: auto; +// cursor: not-allowed; + +// @media (max-width: 768px) { +// padding: 14px 28px; +// font-size: 16px; +// } +// } + +// .close-dialog { +// position: absolute; +// top: 16px; +// right: 16px; +// z-index: 1000; + +// svg { +// width: 12px; +// height: 12px; +// } +// } + +// .divider { +// height: 1px; +// background: #e0e0e0; +// } +// :host { +// min-height: 100px; +// display: flex; +// flex-direction: column; +// justify-content: center; +// .close-dialog { +// position: absolute; +// right: 16px; +// top: 16px; +// width: 20px; +// height: 20px; +// line-height: 20px; +// @media only screen and (max-width: 768px) { +// position: fixed; +// } +// } +// .input-filed-wrapper { +// display: flex; +// justify-content: center; +// flex-direction: column; +// position: relative; +// } +// .login-toggle { +// margin-top: 24px; +// font-size: 13px; +// } +// } diff --git a/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.ts b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.ts new file mode 100644 index 00000000..bf583359 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/component/subscription-center/subscription-center.component.ts @@ -0,0 +1,146 @@ +import { ChangeDetectionStrategy, Component, OnInit, inject, input, output } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SpinnerComponent } from '../../ui/spinner.component'; +import { select, Store } from '@ngrx/store'; +import { IAppState } from '../../store/app.state'; +import { BaseComponent } from '@proxy/ui/base-component'; +import { distinctUntilChanged, Observable, takeUntil } from 'rxjs'; +import { isEqual } from 'lodash-es'; +import { subscriptionPlansData } from '../../store/selectors'; +import { getSubscriptionPlans } from '../../store/actions/otp.action'; + +// export interface SubscriptionPlan { +// id: string; +// title: string; +// price: string; +// priceValue: number; +// currency: string; +// period: string; +// buttonText: string; +// buttonStyle: string; +// isPopular?: boolean; +// isSelected?: boolean; +// features?: string[]; +// notIncludedFeatures?: string[]; +// metrics?: string[]; +// extraFeatures?: string[]; +// status?: string; +// subscribeButtonLink?: string; +// subscribeButtonHidden?: boolean; +// } + +@Component({ + selector: 'proxy-subscription-center', + // imports: [CommonModule, SpinnerComponent], + templateUrl: './subscription-center.component.html', + styleUrls: ['./subscription-center.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class SubscriptionCenterComponent extends BaseComponent implements OnInit { + // public referenceId = input(); + // public closeEvent = output(); + // public planSelected = output(); + // public isPreview = input(false); + // public togglePopUp = output(); + // public isLogin = input(); + // public loginRedirectUrl = input(); + + // public subscriptionPlans$: Observable; + // public subscriptionPlans: any[] = []; + + // private store = inject>(Store); + + // constructor() { + // super(); + + // this.subscriptionPlans$ = this.store.pipe( + // select(subscriptionPlansData), + // distinctUntilChanged(isEqual), + // takeUntil(this.destroy$) + // ); + // } + + ngOnInit(): void { + // this.subscriptionPlans$.pipe(takeUntil(this.destroy$)).subscribe((res: any) => { + // if (res && res.data && Array.isArray(res.data)) { + // this.subscriptionPlans = this.formatSubscriptionPlans(res.data); + // } else { + // this.subscriptionPlans = []; + // } + // }); + } + + // private formatSubscriptionPlans(plans: any[]): any[] { + // return plans.map((plan, index) => ({ + // id: plan.planName?.toLowerCase().replace(/\s+/g, '-') || `plan-${index}`, + // title: plan.plan_name || 'Unnamed Plan', + // price: plan.plan_price || 'Free', + // priceValue: this.extractPriceValue(plan.plan_price), + // currency: this.extractCurrency(plan.plan_price), + // period: 'per month', + // buttonText: this.isLogin() ? 'Upgrade' : 'Get Started', + // buttonStyle: 'primary', + // isPopular: plan.PlanMeta?.highlight_plan || false, + // tag: plan.plan_meta?.tag || '', + // isSelected: false, + // features: plan.plan_meta?.features?.included || [], + // notIncludedFeatures: plan.plan_meta?.features?.notIncluded || [], + // metrics: plan.plan_meta?.metrics || [], + // extraFeatures: plan.plan_meta?.extra || [], + // status: 'active', + // subscribeButtonLink: this.isLogin() + // ? plan.subscribe_button_link?.replace('{ref_id}', this.referenceId()) + // : this.loginRedirectUrl(), + // subscribeButtonHidden: false, + // })); + // } + + // private extractPriceValue(priceString: string): number { + // if (!priceString) return 0; + // const match = priceString.match(/[\d.]+/); + // return match ? parseFloat(match[0]) : 0; + // } + + // private extractCurrency(priceString: string): string { + // if (!priceString) return ''; + // const match = priceString.match(/[A-Z]{3}/); + // return match ? match[0] : ''; + // } + + // private formatCharges(charges: any[]): string[] { + // if (!charges || !Array.isArray(charges)) return []; + // return charges.map((charge) => { + // const quota = charge.quotas || ''; + // const metricName = charge.billable_metric_name || ''; + // return `${quota} ${metricName}`.trim(); + // }); + // } + + // private getIncludedFeatures(charges: any[]): string[] { + // if (!charges || !Array.isArray(charges)) return []; + // return charges.map((charge) => { + // const quota = charge.quotas || ''; + // const metricName = charge.billable_metric_name || ''; + // return `${quota} ${metricName}`.trim(); + // }); + // } + + // public close(value: boolean): void { + // this.closeEvent.emit(value); + // this.togglePopUp.emit(); + // } + + // public selectPlan(plan: SubscriptionPlan): void { + // // Update selection state + // this.subscriptionPlans.forEach((p) => (p.isSelected = false)); + // plan.isSelected = true; + + // // Emit selected plan + // this.planSelected.emit(plan); + + // // Navigate to subscribe button link if available + // if (plan.subscribeButtonLink) { + // window.open(plan.subscribeButtonLink, '_blank'); + // } + // } +} diff --git a/apps/36-blocks-widget/src/app/otp/index.ts b/apps/36-blocks-widget/src/app/otp/index.ts new file mode 100644 index 00000000..96c1dc0f --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/index.ts @@ -0,0 +1,2 @@ +export { ProxyAuthWidgetComponent } from './widget/widget.component'; +export { OtpModule } from './otp.module'; diff --git a/apps/proxy-auth/src/app/otp/model/otp.ts b/apps/36-blocks-widget/src/app/otp/model/otp.ts similarity index 92% rename from apps/proxy-auth/src/app/otp/model/otp.ts rename to apps/36-blocks-widget/src/app/otp/model/otp.ts index 0ecadfd2..20cc5e8c 100644 --- a/apps/proxy-auth/src/app/otp/model/otp.ts +++ b/apps/36-blocks-widget/src/app/otp/model/otp.ts @@ -1,3 +1,9 @@ +export enum UserManagementTab { + Members = 'members', + Roles = 'roles', + Permissions = 'permissions', +} + export type CreateMutable = { -readonly [Property in keyof Type]?: Type[Property]; }; diff --git a/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.html b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.html new file mode 100644 index 00000000..ad613b33 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.html @@ -0,0 +1,305 @@ +
+
+ +
+ +
+
+
+ +
+
+

Organization Details

+

Manage your organization information

+
+
+ @if (!isEditing) { + + } +
+ + + @if (!isEditing) { +
+ +
+ +
+

Company Name

+

+ {{ organizationForm.get('companyName')?.value || '—' }} +

+
+
+ +
+ +
+

Email

+

+ {{ organizationForm.get('email')?.value || '—' }} +

+
+
+ +
+ +
+

Phone Number

+

+ {{ organizationForm.get('phoneNumber')?.value || '—' }} +

+
+
+ +
+ +
+

Timezone

+

+ {{ organizationForm.get('timeZoneName')?.value || '—' }} +

+
+
+
+ } +
+
+ + + @if (isEditing) { +
+ + +
+ } +
+
+ +
diff --git a/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.scss b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.scss new file mode 100644 index 00000000..76c0be11 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.scss @@ -0,0 +1 @@ +// Styles migrated to Tailwind CSS — no custom classes needed. diff --git a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.ts b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.ts similarity index 66% rename from apps/proxy-auth/src/app/otp/organization-details/organization-details.component.ts rename to apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.ts index c6bbee37..08b3bed5 100644 --- a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.ts +++ b/apps/36-blocks-widget/src/app/otp/organization-details/organization-details.component.ts @@ -1,29 +1,51 @@ -import { Input, OnDestroy, OnInit } from '@angular/core'; - -import { Component, ViewEncapsulation } from '@angular/core'; +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + OnDestroy, + OnInit, + ViewChild, + effect, + inject, + input, +} from '@angular/core'; +import { WidgetPortalRef, WidgetPortalService } from '../service/widget-portal.service'; +import { ToastService } from '../service/toast.service'; +import { ToastComponent } from '../service/toast.component'; +import { WidgetTheme } from '@proxy/constant'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { BaseComponent } from 'libs/ui/base-component/src/lib/base-component/base.component'; import { OtpService } from '../service/otp.service'; +import { WidgetThemeService } from '../service/widget-theme.service'; import { finalize, takeUntil } from 'rxjs'; -import { MatSnackBar } from '@angular/material/snack-bar'; import { EMAIL_REGEX } from '@proxy/regex'; @Component({ selector: 'organization-details', + imports: [CommonModule, ReactiveFormsModule, ToastComponent], templateUrl: './organization-details.component.html', - encapsulation: ViewEncapsulation.ShadowDom, - styleUrls: ['../../../styles.scss', './organization-details.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, + styleUrls: ['./organization-details.component.scss'], }) -export class OrganizationDetailsComponent extends BaseComponent implements OnInit, OnDestroy { - @Input() public authToken: string; - @Input() public theme: string; +export class OrganizationDetailsComponent extends BaseComponent implements OnInit, AfterViewInit, OnDestroy { + public authToken = input(); + public theme = input(); + protected readonly WidgetTheme = WidgetTheme; + private readonly themeService = inject(WidgetThemeService); + get isDark(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } public organizationForm = new FormGroup({ companyName: new FormControl('', [Validators.required, Validators.minLength(3)]), email: new FormControl('', [Validators.required, Validators.pattern(EMAIL_REGEX)]), phoneNumber: new FormControl('', [Validators.pattern(/^$|^[0-9]{10,15}$/)]), - timezone: new FormControl('', [Validators.required]), - timeZoneName: new FormControl('', [Validators.required]), + timezone: new FormControl(''), + timeZoneName: new FormControl(''), }); public updateInProgress = false; @@ -46,16 +68,28 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni // Snapshot taken when the user clicks Edit, so Cancel can restore it private editSnapshot: typeof this.initialFormValue = null; - constructor(private otpService: OtpService, private snackBar: MatSnackBar) { + private otpService = inject(OtpService); + private cdr = inject(ChangeDetectorRef); + readonly toastService = inject(ToastService); + private readonly widgetPortal = inject(WidgetPortalService); + + @ViewChild('editDialogPortal') private editDialogPortalEl?: ElementRef; + @ViewChild('toastPortal') private toastPortalEl?: ElementRef; + + private editDialogRef: WidgetPortalRef | null = null; + private toastPortalRef: WidgetPortalRef | null = null; + + constructor() { super(); + effect(() => this.themeService.setInputTheme(this.theme())); } public allowedUpdatePermissions: boolean = false; ngOnInit(): void { - if (this.authToken) { + if (this.authToken()) { this.otpService - .getOrganizationDetails(this.authToken) + .getOrganizationDetails(this.authToken()) .pipe(takeUntil(this.destroy$)) .subscribe({ next: (res) => { @@ -76,13 +110,14 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni }; this.organizationForm.patchValue(value); this.initialFormValue = value; + this.cdr.markForCheck(); } }, error: () => {}, }); this.otpService - .getTimezones(this.authToken) + .getTimezones(this.authToken()) .pipe(takeUntil(this.destroy$)) .subscribe({ next: (res) => { @@ -104,19 +139,37 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni }); } + ngAfterViewInit(): void { + if (this.toastPortalEl?.nativeElement) { + this.toastPortalRef = this.widgetPortal.attach(this.toastPortalEl.nativeElement); + } + } + ngOnDestroy(): void { + this.editDialogRef?.detach(); + this.toastPortalRef?.detach(); super.ngOnDestroy(); } + private showToast(message: string | undefined, type: 'success' | 'error'): void { + if (!message) return; + type === 'success' ? this.toastService.success(message) : this.toastService.error(message); + } + // ── NEW: enter edit mode ────────────────────────────────────── public startEdit(): void { - // Snapshot current values so Cancel can restore them this.editSnapshot = { ...this.organizationForm.value } as typeof this.initialFormValue; this.isEditing = true; + this.cdr.detectChanges(); + if (this.editDialogPortalEl?.nativeElement) { + this.editDialogRef = this.widgetPortal.attach(this.editDialogPortalEl.nativeElement); + } } // ── NEW: cancel and restore form to pre-edit state ──────────── public cancelEdit(): void { + this.editDialogRef?.detach(); + this.editDialogRef = null; if (this.editSnapshot) { this.organizationForm.patchValue(this.editSnapshot); } @@ -134,7 +187,7 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni } public onSubmit(): void { - if (!this.organizationForm.valid || !this.authToken || this.updateInProgress) { + if (!this.organizationForm.valid || !this.authToken() || this.updateInProgress) { this.organizationForm.markAllAsTouched(); return; } @@ -157,13 +210,16 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni this.initialFormValue.timezone === current.timezone && this.initialFormValue.timeZoneName === current.timeZoneName ) { - this.isEditing = false; // just close edit mode silently + this.editDialogRef?.detach(); + this.editDialogRef = null; + this.isEditing = false; return; } this.updateInProgress = true; + this.cdr.markForCheck(); this.otpService - .updateCompany(this.authToken, { + .updateCompany(this.authToken(), { name: organizationDetails.companyName ?? '', email: organizationDetails.email ?? '', mobile: organizationDetails.phoneNumber ?? '', @@ -172,18 +228,19 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni }) .pipe( takeUntil(this.destroy$), - finalize(() => (this.updateInProgress = false)) + finalize(() => { + this.updateInProgress = false; + this.cdr.markForCheck(); + }) ) .subscribe({ next: (res) => { this.initialFormValue = { ...current }; - this.isEditing = false; // ← close edit mode on success - // this.snackBar.open(res?.data?.message ?? 'Information successfully updated', '✕', { - // duration: 3000, - // horizontalPosition: 'center', - // verticalPosition: 'top', - // panelClass: ['success-snackbar'], - // }); + this.editDialogRef?.detach(); + this.editDialogRef = null; + this.isEditing = false; + this.showToast(res?.data?.message, 'success'); + this.cdr.markForCheck(); window.dispatchEvent( new CustomEvent('organizationDetailsUpdateResponse', { bubbles: true, @@ -193,13 +250,8 @@ export class OrganizationDetailsComponent extends BaseComponent implements OnIni ); }, error: (error) => { - // Stay in edit mode so user can retry - // this.snackBar.open('Something went wrong', '✕', { - // duration: 3000, - // horizontalPosition: 'center', - // verticalPosition: 'top', - // panelClass: ['error-snackbar'], - // }); + this.showToast(undefined, 'error'); + this.cdr.markForCheck(); window.dispatchEvent( new CustomEvent('organizationDetailsUpdateResponse', { bubbles: true, diff --git a/apps/proxy-auth/src/app/otp/service/otp-utility.service.ts b/apps/36-blocks-widget/src/app/otp/service/otp-utility.service.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/service/otp-utility.service.ts rename to apps/36-blocks-widget/src/app/otp/service/otp-utility.service.ts diff --git a/apps/proxy-auth/src/app/otp/service/otp-widget.service.ts b/apps/36-blocks-widget/src/app/otp/service/otp-widget.service.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/service/otp-widget.service.ts rename to apps/36-blocks-widget/src/app/otp/service/otp-widget.service.ts diff --git a/apps/proxy-auth/src/app/otp/service/otp.service.ts b/apps/36-blocks-widget/src/app/otp/service/otp.service.ts similarity index 99% rename from apps/proxy-auth/src/app/otp/service/otp.service.ts rename to apps/36-blocks-widget/src/app/otp/service/otp.service.ts index 20d7df94..7eb1beda 100644 --- a/apps/proxy-auth/src/app/otp/service/otp.service.ts +++ b/apps/36-blocks-widget/src/app/otp/service/otp.service.ts @@ -6,7 +6,7 @@ import { map } from 'rxjs/operators'; import { OtpResModel, ISendOtpReq, IRetryOtpReq, IVerifyOtpReq, IWidgetResponse, IGetWidgetData } from '../model/otp'; import { otpVerificationUrls } from './urls/otp-urls'; import { HttpWrapperService } from '@proxy/services/http-wrapper-no-auth'; -import { environment } from 'apps/proxy-auth/src/environments/environment'; +import { environment } from 'apps/36-blocks-widget/src/environments/environment'; @Injectable({ providedIn: 'root', diff --git a/apps/36-blocks-widget/src/app/otp/service/proxy-auth-dom-builder.service.ts b/apps/36-blocks-widget/src/app/otp/service/proxy-auth-dom-builder.service.ts new file mode 100644 index 00000000..749004d5 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/proxy-auth-dom-builder.service.ts @@ -0,0 +1,130 @@ +import { Injectable, Renderer2 } from '@angular/core'; +import { WidgetTheme } from '@proxy/constant'; + +@Injectable({ providedIn: 'root' }) +export class ProxyAuthDomBuilderService { + createLogoElement(renderer: Renderer2, logoUrl: string): HTMLElement | null { + if (!logoUrl) return null; + const wrapper: HTMLElement = renderer.createElement('div'); + wrapper.style.cssText = 'width:316px;display:flex;justify-content:center;margin:0 8px 12px 8px;'; + const img: HTMLImageElement = renderer.createElement('img'); + img.src = logoUrl; + img.alt = 'Logo'; + img.loading = 'lazy'; + img.style.cssText = 'max-height:48px;max-width:200px;object-fit:contain;'; + renderer.appendChild(wrapper, img); + return wrapper; + } + + appendSkeletonLoader(renderer: Renderer2, element: HTMLElement): void { + if (element.querySelector('#skeleton-loader')) return; + const container = renderer.createElement('div'); + container.id = 'skeleton-loader'; + container.style.cssText = 'display:block;width:100%;'; + if (!document.getElementById('skeleton-animation')) { + const style = renderer.createElement('style'); + style.id = 'skeleton-animation'; + style.textContent = + '@keyframes skeleton-loading{0%{background-position:200% 0}100%{background-position:-200% 0}}'; + document.head.appendChild(style); + } + for (let i = 0; i < 3; i++) { + const bone = renderer.createElement('div'); + bone.style.cssText = + 'width:230px;height:40px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px;margin:8px 8px 16px 8px;display:block;box-sizing:border-box;'; + renderer.appendChild(container, bone); + } + renderer.appendChild(element, container); + } + + removeSkeletonLoader(renderer: Renderer2, element: HTMLElement): void { + element.querySelectorAll('#skeleton-loader').forEach((loader) => { + if (loader.parentNode) renderer.removeChild(element, loader); + }); + this.forceRemoveAllSkeletonLoaders(renderer, element); + } + + forceRemoveAllSkeletonLoaders(renderer: Renderer2, referenceElement: HTMLElement | null): void { + if (referenceElement) { + referenceElement.querySelectorAll('#skeleton-loader').forEach((loader) => { + renderer.removeChild(referenceElement, loader); + }); + } + document.querySelectorAll('#skeleton-loader').forEach((loader) => { + if (loader.parentNode) loader.parentNode.removeChild(loader); + }); + } + + addPasswordVisibilityToggle( + renderer: Renderer2, + input: HTMLInputElement, + container: HTMLElement, + theme: string + ): void { + let visible = false; + const iconColor = theme === WidgetTheme.Dark ? '#e5e7eb' : '#5d6164'; + const toggleBtn: HTMLButtonElement = renderer.createElement('button'); + toggleBtn.type = 'button'; + toggleBtn.style.cssText = + 'position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;cursor:pointer;padding:0;margin:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1;'; + const hiddenIcon = ``; + const visibleIcon = ``; + const renderIcon = () => { + toggleBtn.innerHTML = visible ? visibleIcon : hiddenIcon; + }; + renderIcon(); + toggleBtn.addEventListener('click', () => { + visible = !visible; + input.type = visible ? 'text' : 'password'; + renderIcon(); + }); + renderer.appendChild(container, toggleBtn); + } + + inputStyle(theme: string, borderRadius: string, paddingRight = false): string { + const isDark = theme === WidgetTheme.Dark; + return `width:100%;height:44px;padding:0 ${paddingRight ? '44px' : '16px'} 0 16px;border:1px solid ${ + isDark ? '#ffffff' : '#cbd5e1' + };border-radius:${borderRadius};background:${isDark ? 'transparent' : '#ffffff'};color:${ + isDark ? '#ffffff' : '#1f2937' + };font-size:14px;outline:none;box-sizing:border-box;`; + } + + setInlineError(errorEl: HTMLElement, message: string): void { + errorEl.textContent = message; + errorEl.style.display = message ? 'block' : 'none'; + } + + createErrorElement(renderer: Renderer2): HTMLElement { + const el: HTMLElement = renderer.createElement('div'); + el.style.cssText = 'color:#d14343;font-size:14px;min-height:16px;display:none;margin-top:-4px;'; + return el; + } + + createBackButton(renderer: Renderer2): HTMLButtonElement { + const btn: HTMLButtonElement = renderer.createElement('button'); + btn.type = 'button'; + btn.innerHTML = ``; + btn.style.cssText = + 'background:transparent;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;margin-bottom:8px;'; + return btn; + } + + createOrDivider(renderer: Renderer2, primaryColor: string): HTMLElement { + const container: HTMLElement = renderer.createElement('div'); + container.setAttribute('data-or-divider', 'true'); + container.style.cssText = 'display:flex;align-items:center;margin:8px 8px 12px 8px;width:316px;'; + const lineStyle = 'flex:1;height:1px;background-color:#e0e0e0;'; + const left: HTMLElement = renderer.createElement('div'); + left.style.cssText = lineStyle; + const right: HTMLElement = renderer.createElement('div'); + right.style.cssText = lineStyle; + const text: HTMLElement = renderer.createElement('span'); + text.textContent = 'Or continue with'; + text.style.cssText = `padding:0 12px;font-size:12px;color:${primaryColor};font-weight:500;letter-spacing:0.5px;`; + renderer.appendChild(container, left); + renderer.appendChild(container, text); + renderer.appendChild(container, right); + return container; + } +} diff --git a/apps/36-blocks-widget/src/app/otp/service/subscription-renderer.service.ts b/apps/36-blocks-widget/src/app/otp/service/subscription-renderer.service.ts new file mode 100644 index 00000000..bf984cfc --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/subscription-renderer.service.ts @@ -0,0 +1,160 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ providedIn: 'root' }) +export class SubscriptionRendererService { + // ─── Styles injection ───────────────────────────────────────────────────── + + injectSubscriptionStyles(isDark: boolean): void { + if (document.getElementById('subscription-styles')) return; + const style = document.createElement('style'); + style.id = 'subscription-styles'; + style.textContent = this.buildSubscriptionCSS(isDark); + document.head.appendChild(style); + } + + private buildSubscriptionCSS(isDark: boolean): string { + return ` + @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + .position-relative{position:relative!important} + .d-flex{display:flex!important} + .d-block{display:block!important} + .flex-row{flex-direction:row!important} + .flex-column{flex-direction:column!important} + .align-items-center{align-items:center!important} + .align-items-stretch{align-items:stretch!important} + .justify-content-start{justify-content:flex-start!important} + .w-100{width:100%!important} + .p-0{padding:0!important} + .py-3{padding-top:1rem!important;padding-bottom:1rem!important} + .m-0{margin:0!important} + .mt-0{margin-top:0!important} + .mb-2{margin-bottom:.5rem!important} + .mb-3{margin-bottom:1rem!important} + .mb-4{margin-bottom:1.5rem!important} + .my-3{margin-top:1rem!important;margin-bottom:1rem!important} + .text-left{text-align:left!important} + .gap-2{gap:.5rem!important} + .gap-3{gap:1rem!important} + .gap-4{gap:1.5rem!important} + + .subscription-plans-container{flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:20px;font-family:'Outfit',sans-serif} + .plans-grid{gap:20px;max-width:100%;margin:0;align-items:flex-start;padding:20px 0 0 20px;overflow-x:auto;overflow-y:visible} + .plans-grid::-webkit-scrollbar{height:8px} + .plans-grid::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px} + .plans-grid::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px} + @media(max-width:768px){.plans-grid{flex-direction:column;align-items:center;gap:20px;overflow-x:visible;overflow-y:auto}} + + .plan-card{background:${isDark ? 'transparent' : '#ffffff'};border:${ + isDark ? '1px solid #e6e6e6' : '2px solid #e6e6e6' + };border-radius:4px;padding:26px 24px;min-width:290px;max-width:350px;width:350px;flex:1;min-height:348px;font-family:'Outfit',sans-serif;position:relative;margin-top:30px} + .plan-card.highlighted{border:${isDark ? '2px solid #ffffff' : '2px solid #000000'}} + @media(max-width:768px){.plan-card{min-width:50%;max-width:400px;width:100%;padding:30px 20px}} + + .popular-badge{position:absolute;top:-12px;right:20px;background:#4d4d4d;color:#fff;padding:6px 16px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;z-index:100} + .plan-title{font-size:28px;font-weight:700;color:#333} + .plan-price .price-number{font-size:39px;font-weight:700;color:#4d4d4d;line-height:1} + .plan-price .price-currency{font-size:16px;font-weight:400;color:#666;line-height:1;margin-top:4px;margin-left:4px} + .included-resources .resource-box{border-radius:4px;padding:4px 2px;font-size:14px;font-weight:600;color:#4d4d4d;text-align:left} + .section-title{font-size:18px;font-weight:600;color:#333;margin:0 0 8px 0} + .plan-features{list-style:none} + .plan-features .feature-item{padding:4px 0!important;margin-bottom:0!important;color:#4d4d4d;font-size:14px;font-weight:600} + .plan-button{width:65%;padding:6px;border-radius:4px;font-size:15px;font-weight:400;font-family:'Outfit',sans-serif;cursor:pointer;transition:all .3s ease;border:1px solid;margin-top:auto} + .plan-button.primary{background:#4d4d4d;color:#fff;border-color:#4d4d4d;font-weight:700} + .plan-button.primary:hover{background:#333;border-color:#333} + .plan-button.plan-button-disabled,.plan-button:disabled{opacity:.7!important;cursor:not-allowed!important;pointer-events:none!important} + .divider{height:1px;background:#e0e0e0} + *{box-sizing:border-box;font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;color:${ + isDark ? '#ffffff' : '' + }!important} + `; + } + + // ─── HTML string builders ───────────────────────────────────────────────── + + buildContainerHTML(plans: any[], isDark: boolean, isLogin: boolean): string { + if (plans.length === 0) { + return `
No subscription plans available
`; + } + const plansHTML = plans.map((p) => this.buildPlanCardHTML(p, isDark, isLogin)).join(''); + return `
${plansHTML}
`; + } + + buildPlanCardHTML(plan: any, isDark: boolean, isLogin: boolean): string { + const isPopular = plan.plan_meta?.highlight_plan || false; + const popularBadge = plan.plan_meta?.tag ? `` : ''; + const priceMatch = plan.plan_price?.match(/(\d+)\s+(.+)/); + const priceValue = priceMatch ? priceMatch[1] : '0'; + const currency = priceMatch ? priceMatch[2] : 'USD'; + const iconFill = isDark ? '#ffffff' : '#4d4d4d'; + const isDisabled = !!plan.isSubscribed; + const cardClasses = `plan-card d-flex flex-column gap-3 position-relative${ + isPopular ? ' popular highlighted' : '' + }${plan.isSelected ? ' selected' : ''}`; + const buttonLabel = isLogin + ? plan.isSubscribed + ? 'Your current plan' + : 'Get ' + plan.plan_name + : 'Get Started'; + const disabledAttrs = isDisabled ? 'disabled aria-disabled="true"' : ''; + const disabledStyle = isDisabled ? 'cursor:not-allowed;pointer-events:none;' : ''; + + return `
+ ${popularBadge} +
+

${plan.plan_name}

+
${priceValue}${currency}
+ +
+
+ ${this.buildMetricsHTML(plan)} + ${this.buildFeaturesHTML(plan, iconFill)} + ${this.buildExtraFeaturesHTML(plan, iconFill)} +
`; + } + + private buildMetricsHTML(plan: any): string { + if (!plan.plan_meta?.metrics?.length) return ''; + const rows = plan.plan_meta.metrics.map((m: string) => `
${m}
`).join(''); + return `

Included

${rows}
`; + } + + private buildFeaturesHTML(plan: any, iconFill: string): string { + const included: string[] = plan.plan_meta?.features?.included || []; + const notIncluded: string[] = plan.plan_meta?.features?.notIncluded || []; + if (!included.length && !notIncluded.length) return ''; + + const checkSvg = ``; + const crossSvg = ``; + + const includedItems = included + .map( + (f: string) => + `
  • ${checkSvg}${f}
  • ` + ) + .join(''); + const notIncludedItems = notIncluded + .map( + (f: string) => + `
  • ${crossSvg}${f}
  • ` + ) + .join(''); + + return `

    Features

      ${includedItems}${notIncludedItems}
    `; + } + + private buildExtraFeaturesHTML(plan: any, iconFill: string): string { + if (!plan.plan_meta?.extra?.length) return ''; + const starSvg = ``; + const items = plan.plan_meta.extra + .map( + (f: string) => + `
  • ${starSvg}${f}
  • ` + ) + .join(''); + return `

    Extra

      ${items}
    `; + } +} diff --git a/apps/36-blocks-widget/src/app/otp/service/toast.component.ts b/apps/36-blocks-widget/src/app/otp/service/toast.component.ts new file mode 100644 index 00000000..530bdfec --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/toast.component.ts @@ -0,0 +1,123 @@ +import { ChangeDetectionStrategy, Component, effect, inject, input } from '@angular/core'; +import { WidgetTheme } from '@proxy/constant'; +import { ToastService } from './toast.service'; +import { WidgetThemeService } from './widget-theme.service'; + +@Component({ + selector: 'proxy-toast', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + @if (toastService.toast()) { +
    +
    +
    +
    +
    + @if (toastService.toast()!.type === 'success') { + + } @else if (toastService.toast()!.type === 'info') { + + } @else { + + } +
    +
    +

    + {{ + toastService.toast()!.type === 'success' + ? 'Success' + : toastService.toast()!.type === 'info' + ? 'Info' + : 'Error' + }} +

    +

    + {{ toastService.toast()!.message }} +

    +
    +
    + +
    +
    +
    +
    +
    + } + `, +}) +export class ToastComponent { + readonly theme = input(); + readonly toastService = inject(ToastService); + private readonly themeService = inject(WidgetThemeService); + get isDark(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } + + constructor() { + effect(() => this.themeService.setInputTheme(this.theme())); + } +} diff --git a/apps/36-blocks-widget/src/app/otp/service/toast.service.ts b/apps/36-blocks-widget/src/app/otp/service/toast.service.ts new file mode 100644 index 00000000..7418872f --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/toast.service.ts @@ -0,0 +1,36 @@ +import { Injectable, signal } from '@angular/core'; + +export interface ToastConfig { + message: string; + type: 'success' | 'error' | 'info'; + duration?: number; +} + +@Injectable({ providedIn: 'root' }) +export class ToastService { + readonly toast = signal(null); + private timer: ReturnType | null = null; + + show(config: ToastConfig): void { + if (this.timer) clearTimeout(this.timer); + this.toast.set(config); + this.timer = setTimeout(() => this.dismiss(), config.duration ?? 3000); + } + + success(message: string, duration = 3000): void { + this.show({ message, type: 'success', duration }); + } + + error(message: string, duration = 3000): void { + this.show({ message, type: 'error', duration }); + } + + info(message: string, duration = 3000): void { + this.show({ message, type: 'info', duration }); + } + + dismiss(): void { + if (this.timer) clearTimeout(this.timer); + this.toast.set(null); + } +} diff --git a/apps/proxy-auth/src/app/otp/service/urls/otp-urls.ts b/apps/36-blocks-widget/src/app/otp/service/urls/otp-urls.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/service/urls/otp-urls.ts rename to apps/36-blocks-widget/src/app/otp/service/urls/otp-urls.ts diff --git a/apps/36-blocks-widget/src/app/otp/service/user-management-bridge.service.ts b/apps/36-blocks-widget/src/app/otp/service/user-management-bridge.service.ts new file mode 100644 index 00000000..658587e1 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/user-management-bridge.service.ts @@ -0,0 +1,71 @@ +import { ApplicationRef, EnvironmentInjector, Injectable, inject } from '@angular/core'; +import { Subject } from 'rxjs'; +import { AddUserDialogComponent } from '../user-management/add-user-dialog.component'; + +export interface OpenAddUserConfig { + authToken: string; + theme?: string; +} + +/** + * Bridges the global `openAddUserDialog` window event to the + * UserManagementComponent regardless of whether the component is + * currently mounted. + * + * If UserManagementComponent IS mounted it delegates directly to it. + * If it is NOT mounted, a standalone AddUserDialogComponent is created + * dynamically and appended directly to document.body — no parent + * component required, no z-index issues. + * + * Event usage from client page: + * window.dispatchEvent(new CustomEvent('openAddUserDialog', { + * detail: { authToken: 'xxx', theme: 'dark' } + * })); + */ +@Injectable({ providedIn: 'root' }) +export class UserManagementBridgeService { + /** Emits every time `openAddUserDialog` fires while UserManagementComponent IS mounted. */ + readonly openAddUser$ = new Subject(); + + /** Buffered config when event fires before component mounts. */ + private _pendingConfig: OpenAddUserConfig | null = null; + + private readonly _appRef = inject(ApplicationRef); + private readonly _injector = inject(EnvironmentInjector); + + constructor() { + if (typeof window === 'undefined') return; + window.addEventListener('openAddUserDialog', (e: Event) => { + const config: OpenAddUserConfig = { + authToken: (e as CustomEvent).detail?.authToken ?? '', + theme: (e as CustomEvent).detail?.theme ?? '', + }; + + if (this.openAddUser$.observed) { + // UserManagementComponent is subscribed — deliver to it directly + this.openAddUser$.next(); + } else { + // Component not mounted — open standalone dialog immediately + this._openStandaloneDialog(config); + } + }); + } + + /** + * Called by UserManagementComponent in its constructor. + * Returns any buffered config so the component can open the dialog on first render. + */ + consumePending(): OpenAddUserConfig | null { + const cfg = this._pendingConfig; + this._pendingConfig = null; + return cfg; + } + + private _openStandaloneDialog(config: OpenAddUserConfig): void { + // Direct call - no dynamic import to avoid ES6 module chunks in bundle + AddUserDialogComponent.open(this._appRef, this._injector, { + authToken: config.authToken, + theme: config.theme ?? '', + }); + } +} diff --git a/apps/36-blocks-widget/src/app/otp/service/widget-portal.service.ts b/apps/36-blocks-widget/src/app/otp/service/widget-portal.service.ts new file mode 100644 index 00000000..028a47ad --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/widget-portal.service.ts @@ -0,0 +1,116 @@ +import { ApplicationRef, Injectable, Injector, inject } from '@angular/core'; +import { DomPortal, DomPortalOutlet } from '@angular/cdk/portal'; +import { environment } from '../../../environments/environment'; + +const STYLE_ELEMENT_ID = 'widget-overlay-styles'; + +/** + * Injects the compiled widget styles.css into document.head so that w-* + * utility classes work on elements teleported outside the Shadow DOM. + * + * The CSS is inlined into proxy-auth.js at build time by build-elements.js + * and stored in window.__proxyAuth.inlinedStyles. This ensures the widget + * works as a single self-contained JS file without external style dependencies. + */ +export function ensureAddUserDialogStyles(): void { + ensureOverlayStyles(); +} + +function ensureOverlayStyles(): void { + if (document.getElementById(STYLE_ELEMENT_ID)) return; + + // Get inlined CSS from global object (injected by build-elements.js) + const inlinedCSS = (window as any).__proxyAuth?.inlinedStyles; + + if (!inlinedCSS) { + console.warn('[proxy-auth] Widget overlay styles not found in bundle. Dialogs may not render correctly.'); + return; + } + + const style = document.createElement('style'); + style.id = STYLE_ELEMENT_ID; + style.textContent = inlinedCSS; + document.head.appendChild(style); +} + +/** + * Handle returned by WidgetPortalService.attach(). + * Call detach() to move the element back to its original DOM position. + */ +export class WidgetPortalRef { + constructor( + private readonly _portal: DomPortal, + private readonly _outlet: DomPortalOutlet, + private readonly _placeholder: Comment + ) {} + + detach(): void { + if (this._outlet.hasAttached()) { + this._outlet.detach(); + } + // Move element back next to its placeholder in the Shadow DOM + this._placeholder.parentNode?.insertBefore(this._portal.element, this._placeholder); + this._placeholder.parentNode?.removeChild(this._placeholder); + this._outlet.dispose(); + } +} + +/** + * Teleports an existing DOM element (already rendered inside Shadow DOM) + * to document.body so it escapes any stacking-context constraints imposed + * by the client page's container hierarchy. + * + * This mirrors how Angular CDK Overlay / Angular Material Dialog works + * internally — the Angular view stays attached to the original component + * tree (all template bindings continue to work), only the DOM node moves. + * + * Usage in a component: + * + * @ViewChild('dialogWrap') dialogWrapRef!: ElementRef; + * private portalRef: WidgetPortalRef | null = null; + * + * openDialog() { + * this.showDialog.set(true); + * // Wait one tick for Angular to render the @if block + * setTimeout(() => { + * this.portalRef = this.widgetPortal.attach(this.dialogWrapRef.nativeElement); + * }); + * } + * + * closeDialog() { + * this.portalRef?.detach(); + * this.portalRef = null; + * this.showDialog.set(false); + * } + */ +@Injectable({ providedIn: 'root' }) +export class WidgetPortalService { + private readonly _appRef = inject(ApplicationRef); + private readonly _injector = inject(Injector); + + /** + * Moves `element` from wherever it currently lives (inside Shadow DOM) + * to a new host div that is a direct child of document.body. + * + * Returns a WidgetPortalRef whose detach() moves the element back. + */ + attach(element: HTMLElement): WidgetPortalRef { + ensureOverlayStyles(); + + // Leave a comment node as a placeholder so we know where to reinsert + const placeholder = document.createComment('widget-portal-placeholder'); + element.parentNode!.insertBefore(placeholder, element); + + // Host container appended directly to body + const host = document.createElement('div'); + host.setAttribute('data-widget-overlay', ''); + host.classList.add('proxy-widget-portal'); + document.body.appendChild(host); + + const outlet = new DomPortalOutlet(host, this._appRef, this._injector); + const portal = new DomPortal(element); + outlet.attach(portal); + + return new WidgetPortalRef(portal, outlet, placeholder); + } +} diff --git a/apps/36-blocks-widget/src/app/otp/service/widget-theme.service.ts b/apps/36-blocks-widget/src/app/otp/service/widget-theme.service.ts new file mode 100644 index 00000000..6dc6b021 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/service/widget-theme.service.ts @@ -0,0 +1,51 @@ +import { Injectable, OnDestroy, signal, computed } from '@angular/core'; +import { WidgetTheme } from '@proxy/constant'; + +@Injectable() +export class WidgetThemeService implements OnDestroy { + private readonly _systemDark = signal( + typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: dark)').matches + ); + + private readonly _themeOverride = signal(undefined); + private readonly _inputTheme = signal(undefined); + + readonly resolvedTheme = computed(() => this._themeOverride() ?? this._inputTheme()); + + readonly isDark$ = computed(() => { + const t = this._themeOverride() ?? this._inputTheme(); + if (t === WidgetTheme.Dark) return true; + if (t === WidgetTheme.Light) return false; + return this._systemDark(); + }); + + readonly isDark = (theme?: WidgetTheme): boolean => { + if (theme === WidgetTheme.Dark) return true; + if (theme === WidgetTheme.Light) return false; + if (theme !== undefined) return this._systemDark(); + return this.isDark$(); + }; + + private _mediaQueryCleanup?: () => void; + + constructor() { + if (typeof window !== 'undefined') { + const mq = window.matchMedia('(prefers-color-scheme: dark)'); + const handler = (e: MediaQueryListEvent) => this._systemDark.set(e.matches); + mq.addEventListener('change', handler); + this._mediaQueryCleanup = () => mq.removeEventListener('change', handler); + } + } + + public setInputTheme(theme: string | undefined): void { + this._inputTheme.set(theme); + } + + public setThemeOverride(theme: string | undefined): void { + this._themeOverride.set(theme); + } + + ngOnDestroy(): void { + this._mediaQueryCleanup?.(); + } +} diff --git a/apps/proxy-auth/src/app/otp/store/actions/index.ts b/apps/36-blocks-widget/src/app/otp/store/actions/index.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/actions/index.ts rename to apps/36-blocks-widget/src/app/otp/store/actions/index.ts diff --git a/apps/proxy-auth/src/app/otp/store/actions/otp.action.ts b/apps/36-blocks-widget/src/app/otp/store/actions/otp.action.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/actions/otp.action.ts rename to apps/36-blocks-widget/src/app/otp/store/actions/otp.action.ts diff --git a/apps/proxy-auth/src/app/otp/store/app.state.ts b/apps/36-blocks-widget/src/app/otp/store/app.state.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/app.state.ts rename to apps/36-blocks-widget/src/app/otp/store/app.state.ts diff --git a/apps/proxy-auth/src/app/otp/store/effects/index.ts b/apps/36-blocks-widget/src/app/otp/store/effects/index.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/effects/index.ts rename to apps/36-blocks-widget/src/app/otp/store/effects/index.ts diff --git a/apps/proxy-auth/src/app/otp/store/effects/otp.effects.ts b/apps/36-blocks-widget/src/app/otp/store/effects/otp.effects.ts similarity index 94% rename from apps/proxy-auth/src/app/otp/store/effects/otp.effects.ts rename to apps/36-blocks-widget/src/app/otp/store/effects/otp.effects.ts index aedb91f2..533b5cc5 100644 --- a/apps/proxy-auth/src/app/otp/store/effects/otp.effects.ts +++ b/apps/36-blocks-widget/src/app/otp/store/effects/otp.effects.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { errorResolver } from '@proxy/models/root-models'; import { Actions, createEffect, ofType } from '@ngrx/effects'; import { of } from 'rxjs'; @@ -7,15 +7,13 @@ import { OtpResModel } from '../../model/otp'; import { OtpService } from '../../service/otp.service'; import { otpActions } from '../actions/index'; import { OtpUtilityService } from '../../service/otp-utility.service'; -import { environment } from 'apps/proxy-auth/src/environments/environment'; +import { environment } from 'apps/36-blocks-widget/src/environments/environment'; @Injectable() export class OtpEffects { - constructor( - private actions$: Actions, - private otpService: OtpService, - private otpUtilityService: OtpUtilityService - ) {} + private actions$ = inject(Actions); + private otpService = inject(OtpService); + private otpUtilityService = inject(OtpUtilityService); getWidgetData$ = createEffect(() => this.actions$.pipe( @@ -24,20 +22,32 @@ export class OtpEffects { return this.otpService.getWidgetData(p.referenceId, p.payload).pipe( map((res: any) => { if (res) { + console.log( + '[ProxyAuth] API response received, ciphered length:', + res?.data?.ciphered?.length + ); + const decrypted = this.otpUtilityService.aesDecrypt( + res?.data?.ciphered ?? '', + environment.apiEncodeKey, + environment.apiIvKey, + true + ); + console.log( + '[ProxyAuth] Decrypted result:', + decrypted ? 'OK (' + decrypted.length + ' chars)' : 'EMPTY' + ); + const parsed = JSON.parse(decrypted); + console.log('[ProxyAuth] Parsed widget data:', parsed); return otpActions.getWidgetDataComplete({ - response: JSON.parse( - this.otpUtilityService.aesDecrypt( - res?.data?.ciphered ?? '', - environment.apiEncodeKey, - environment.apiIvKey, - true - ) - ), + response: parsed, theme: res?.data, }); } }), catchError((err) => { + console.error('[ProxyAuth] getWidgetData failed:', err); + console.error('[ProxyAuth] apiEncodeKey defined:', !!environment.apiEncodeKey); + console.error('[ProxyAuth] apiIvKey defined:', !!environment.apiIvKey); return of( otpActions.getWidgetDataError({ errors: errorResolver(err.errors), @@ -95,7 +105,6 @@ export class OtpEffects { }); }), catchError((err) => { - console.log('err', err); return of( otpActions.verifyOtpActionError({ errors: errorResolver(err.errors), diff --git a/apps/proxy-auth/src/app/otp/store/reducers/otp.reducer.ts b/apps/36-blocks-widget/src/app/otp/store/reducers/otp.reducer.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/reducers/otp.reducer.ts rename to apps/36-blocks-widget/src/app/otp/store/reducers/otp.reducer.ts diff --git a/apps/proxy-auth/src/app/otp/store/selectors/index.ts b/apps/36-blocks-widget/src/app/otp/store/selectors/index.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/selectors/index.ts rename to apps/36-blocks-widget/src/app/otp/store/selectors/index.ts diff --git a/apps/proxy-auth/src/app/otp/store/selectors/otp.selector.ts b/apps/36-blocks-widget/src/app/otp/store/selectors/otp.selector.ts similarity index 100% rename from apps/proxy-auth/src/app/otp/store/selectors/otp.selector.ts rename to apps/36-blocks-widget/src/app/otp/store/selectors/otp.selector.ts diff --git a/apps/36-blocks-widget/src/app/otp/ui/confirm-dialog.component.ts b/apps/36-blocks-widget/src/app/otp/ui/confirm-dialog.component.ts new file mode 100644 index 00000000..06a6ad8e --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/ui/confirm-dialog.component.ts @@ -0,0 +1,94 @@ +import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'; + +/** + * Reusable destructive confirm dialog. + * Usage: + * + */ +@Component({ + selector: 'proxy-confirm-dialog', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + +
    +
    + +
    +

    + {{ title() }} +

    +

    + {{ message() }} +

    +
    +
    +
    + + +
    +
    + `, +}) +export class ConfirmDialogComponent { + readonly title = input('Confirm Action'); + readonly message = input('Are you sure?'); + readonly confirmLabel = input('Confirm'); + readonly cancelLabel = input('Cancel'); + readonly isDark = input(false); + + readonly confirmed = output(); + readonly cancelled = output(); + + readonly _id = Math.random().toString(36).slice(2, 8); +} diff --git a/apps/36-blocks-widget/src/app/otp/ui/index.ts b/apps/36-blocks-widget/src/app/otp/ui/index.ts new file mode 100644 index 00000000..a1051b0d --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/ui/index.ts @@ -0,0 +1,3 @@ +export { SpinnerComponent } from './spinner.component'; +export { ProgressBarComponent } from './progress-bar.component'; +export { ConfirmDialogComponent } from './confirm-dialog.component'; diff --git a/apps/36-blocks-widget/src/app/otp/ui/progress-bar.component.ts b/apps/36-blocks-widget/src/app/otp/ui/progress-bar.component.ts new file mode 100644 index 00000000..4623b60b --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/ui/progress-bar.component.ts @@ -0,0 +1,38 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +/** + * Usage: + * Indeterminate loading bar, replaces mat-progress-bar. + */ +@Component({ + selector: 'proxy-progress-bar', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` +
    +
    +
    + `, + styles: [ + ` + @keyframes indeterminate { + 0% { + transform: translateX(-100%) scaleX(0.3); + } + 50% { + transform: translateX(25%) scaleX(0.6); + } + 100% { + transform: translateX(100%) scaleX(0.3); + } + } + `, + ], +}) +export class ProgressBarComponent {} diff --git a/apps/36-blocks-widget/src/app/otp/ui/spinner.component.ts b/apps/36-blocks-widget/src/app/otp/ui/spinner.component.ts new file mode 100644 index 00000000..51edb5aa --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/ui/spinner.component.ts @@ -0,0 +1,31 @@ +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; + +/** + * Usage: + * sizes: sm (16px) | md (24px) | lg (32px) + */ +@Component({ + selector: 'proxy-spinner', + standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + `, +}) +export class SpinnerComponent { + readonly size = input<'sm' | 'md' | 'lg'>('md'); + + sizeClass(): string { + return { sm: 'size-4', md: 'size-6', lg: 'size-8' }[this.size()]; + } +} diff --git a/apps/36-blocks-widget/src/app/otp/user-management/add-user-dialog.component.ts b/apps/36-blocks-widget/src/app/otp/user-management/add-user-dialog.component.ts new file mode 100644 index 00000000..0cb613c9 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/user-management/add-user-dialog.component.ts @@ -0,0 +1,289 @@ +import { + ApplicationRef, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ComponentRef, + DestroyRef, + EnvironmentInjector, + OnDestroy, + OnInit, + computed, + createComponent, + inject, + signal, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { Store, select } from '@ngrx/store'; +import { distinctUntilChanged } from 'rxjs'; +import { isEqual } from 'lodash-es'; +import { IAppState } from '../store/app.state'; +import { otpActions } from '../store/actions'; +import { rolesData, addUserData } from '../store/selectors'; +import { WidgetTheme } from '@proxy/constant'; +import { ensureAddUserDialogStyles } from '../service/widget-portal.service'; + +/** + * Fully standalone Add-User dialog that mounts itself directly onto + * document.body so it is never blocked by a parent stacking context. + * + * Lifecycle: + * 1. Call AddUserDialogComponent.open(appRef, injector, config) to create. + * 2. The dialog appends its own host
    to document.body. + * 3. On close the host is removed and the ComponentRef is destroyed. + */ +@Component({ + selector: 'add-user-dialog', + standalone: true, + imports: [CommonModule, ReactiveFormsModule], + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + + `, +}) +export class AddUserDialogComponent implements OnInit, OnDestroy { + /** Config passed by the bridge service before the component is attached. */ + authToken = ''; + theme = ''; + + readonly roles = signal([]); + form!: FormGroup; + + private readonly store = inject>(Store); + private readonly fb = inject(FormBuilder); + private readonly cdr = inject(ChangeDetectorRef); + private readonly destroyRef = inject(DestroyRef); + + /** The host element appended to document.body. */ + private _hostEl: HTMLDivElement | null = null; + /** Self-reference so we can destroy from within. */ + private _selfRef: ComponentRef | null = null; + + private readonly _systemDark = signal( + typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: dark)').matches + ); + readonly isDark = computed(() => { + if (this.theme === WidgetTheme.Dark) return true; + if (this.theme === WidgetTheme.Light) return false; + return this._systemDark(); + }); + + ngOnInit(): void { + this.form = this.fb.group({ + name: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + mobileNumber: ['', [Validators.pattern(/^(\+?[1-9]\d{1,14}|[0-9]{10})$/)]], + role: [''], + }); + + // Keep host element dark class in sync + if (this._hostEl) { + this._hostEl.classList.toggle('dark', this.isDark()); + } + + // Fetch roles for the dropdown + this.store.dispatch(otpActions.getRoles({ authToken: this.authToken, itemsPerPage: 1000 })); + + this.store + .pipe(select(rolesData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res?.data?.data) { + this.roles.set(res.data.data); + this.cdr.markForCheck(); + } + }); + + // Close on success + this.store + .pipe(select(addUserData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.close(); + } + }); + + // System dark mode changes + if (typeof window !== 'undefined') { + const mq = window.matchMedia('(prefers-color-scheme: dark)'); + const listener = (e: MediaQueryListEvent) => { + this._systemDark.set(e.matches); + if (this._hostEl) { + this._hostEl.classList.toggle('dark', this.isDark()); + } + this.cdr.markForCheck(); + }; + mq.addEventListener('change', listener); + this.destroyRef.onDestroy(() => mq.removeEventListener('change', listener)); + } + } + + ngOnDestroy(): void { + this._hostEl?.remove(); + this._hostEl = null; + } + + save(): void { + if (!this.form.valid) { + this.form.markAllAsTouched(); + return; + } + const v = this.form.value; + this.store.dispatch( + otpActions.addUser({ + payload: { + user: { name: v.name, email: v.email, mobile: v.mobileNumber || '' }, + role_id: v.role, + }, + authToken: this.authToken, + }) + ); + } + + close(): void { + if (this._selfRef) { + this._selfRef.destroy(); + this._selfRef = null; + } + } + + /** + * Factory: dynamically creates the component, appends it to body, and returns the ref. + */ + static open( + appRef: ApplicationRef, + injector: EnvironmentInjector, + config: { authToken: string; theme: string } + ): ComponentRef { + ensureAddUserDialogStyles(); + + const host = document.createElement('div'); + host.setAttribute('data-widget-overlay', ''); + host.classList.toggle( + 'dark', + (() => { + if (config.theme === WidgetTheme.Dark) return true; + if (config.theme === WidgetTheme.Light) return false; + return window.matchMedia('(prefers-color-scheme: dark)').matches; + })() + ); + document.body.appendChild(host); + + const ref = createComponent(AddUserDialogComponent, { + environmentInjector: injector, + hostElement: host, + }); + + ref.instance.authToken = config.authToken; + ref.instance.theme = config.theme; + ref.instance._hostEl = host; + ref.instance._selfRef = ref; + + appRef.attachView(ref.hostView); + ref.changeDetectorRef.detectChanges(); + + return ref; + } +} diff --git a/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.html b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.html new file mode 100644 index 00000000..2b938b7b --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.html @@ -0,0 +1,922 @@ +
    + + @if (hasMultipleTabs()) { +
    +
    +
    +
    + +
    +

    Team Settings

    +
    +
    +
    + } + + +
    +
    + + @if (hasMultipleTabs()) { + + +
    + +
    + + + + + } + + +
    + + @if (activeTab === UserManagementTab.Members) { +
    + +
    +
    +

    Team members

    +

    Manage who has access to this workspace.

    +
    + @if (canAddUser) { + + } +
    + + +
    + + +
    + + + @if (isUsersLoading && !skipSkeletonLoading) { +
    + @for (s of [1,2,3]; track s) { +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + } +
    + } + + + @if (!isUsersLoading || skipSkeletonLoading) { @if (userData.length === 0) { +
    + + + +

    No team members yet

    +

    Invite someone to get started.

    +
    + } + + +
    + @for (user of userData; track user; let i = $index) { +
    +
    +
    + {{ (user.name || user.email || '?').charAt(0).toUpperCase() }} +
    +
    +

    + {{ user.name || '—' }} +

    +

    + + + + + {{ user.email }} +

    +
    +
    +
    + + {{ user.role || 'Member' }} + + @if (canEditUser) { + + } @if (canRemoveUser) { + + } +
    +
    + } +
    + } + + + @if (totalUsers > currentPageSize) { + + } +
    + } + + + @if (activeTab === UserManagementTab.Roles && pass()) { +
    + +
    +
    +

    Roles

    +

    Define roles and their associated permissions.

    +
    + +
    + + +
    + + +
    + + + @if (isRolesLoading) { +
    + @for (s of [1,2,3]; track s) { +
    +
    +
    +
    +
    +
    +
    +
    +
    + @for (t of [1,2,3,4,5]; track t) { +
    + } +
    +
    + } +
    + } + + + @if (!isRolesLoading) { @if (filteredRolesData.length === 0) { +
    No roles found
    + } +
    + @for (role of filteredRolesData; track role; let i = $index) { +
    +
    +
    + {{ + role.name + }} + @if (role.is_default) { + Default + Default + } +
    + +
    + @if (role.c_permissions?.length) { +
    + @for (p of role.c_permissions; track p.id; let pi = $index) { + + + + + {{ p.name }} + + } +
    + } @else { +

    No permissions assigned

    + } +
    + } +
    + } +
    + } + + + @if (activeTab === UserManagementTab.Permissions && pass()) { +
    + +
    +
    +

    Permissions

    +

    Granular access controls that can be assigned to roles.

    +
    + +
    + + +
    + + +
    + + + @if (isPermissionsLoading) { +
    + @for (s of [1,2,3,4,5]; track s) { +
    +
    +
    +
    +
    +
    +
    + } +
    + } + + + @if (!isPermissionsLoading) { @if (filteredPermissionsData.length === 0) { +
    No permissions found
    + } +
    + @for (permission of filteredPermissionsData; track permission; let i = $index) { +
    +
    +
    + + + +
    +

    + {{ permission.name }} +

    +
    + +
    + } +
    + } +
    + } +
    +
    +
    + + + @if (showDialog()) { +
    + + +
    + } + + + @if (showConfirmDialog()) { +
    + +
    +
    + +
    +

    + Remove member +

    +

    + Are you sure you want to remove + {{ pendingDeleteUser?.name }}? This action cannot be undone. +

    +
    +
    +
    + + +
    +
    +
    + } +
    +
    + +
    diff --git a/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.scss b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.scss new file mode 100644 index 00000000..403805bd --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.scss @@ -0,0 +1,153 @@ +// ── Hover-reveal actions (cannot be done in Tailwind without JS) ───────────── +.hover-actions { + opacity: 0; + transition: opacity 0.15s ease; + position: absolute; + top: 6px; + right: 12px; + z-index: 10; +} + +.table-row:hover .hover-actions { + opacity: 1; +} + +.user-item:hover .user-actions { + opacity: 1; + visibility: visible; +} + +// ── Skeleton shimmer (keyframe animation — not in Tailwind) ─────────────────── +@keyframes shimmer { + 0% { + background-position: 200% 0; + } + 100% { + background-position: -200% 0; + } +} + +.skeleton-avatar, +.skeleton-text, +.skeleton-button { + border-radius: 4px; + background: linear-gradient( + 90deg, + var(--proxy-neutral-90) 25%, + var(--proxy-neutral-95) 50%, + var(--proxy-neutral-90) 75% + ); + background-size: 200% 100%; + animation: shimmer 1.5s infinite; +} + +.skeleton-avatar { + width: 40px; + height: 40px; + border-radius: 50%; +} + +.skeleton-name { + width: 120px; + height: 16px; + margin-bottom: 6px; +} +.skeleton-email { + width: 180px; + height: 14px; +} +.skeleton-role { + width: 80px; + height: 14px; +} +.skeleton-button { + width: 60px; + height: 32px; +} + +// .dark-theme .skeleton-avatar, +// .dark-theme .skeleton-text, +// .dark-theme .skeleton-button { +// background: linear-gradient( +// 90deg, +// var(--proxy-neutral-30) 25%, +// var(--proxy-neutral-20) 50%, +// var(--proxy-neutral-30) 75% +// ); +// background-size: 200% 100%; +// animation: shimmer 1.5s infinite; +// } + +// ── Angular Material table cell resets ─────────────────────────────────────── +table { + box-shadow: none !important; +} + +th, +td { + border: 1px solid var(--proxy-neutral-90); + padding: 14px; + text-align: left; +} +td.mat-cell { + padding: 10px; +} +th { + font-weight: 600; + height: 22px; + padding-left: 12px !important; +} +td { + font-size: 12px; + height: 22px; +} + +.role-column { + width: 25% !important; +} +.permissions-column { + width: 70% !important; + overflow: visible; + position: relative; +} +.permission-column { + overflow: visible; +} +.permissions-cell-content { + min-height: 40px; + padding-right: 60px; +} + +// ── ::ng-deep for Material overlay/tooltip (cannot scope otherwise) ─────────── +::ng-deep .btn-danger { + background-color: var(--proxy-error-40) !important; + color: var(--proxy-neutral-100) !important; + + &:hover, + &:focus { + background-color: var(--proxy-error-40) !important; + filter: brightness(0.85); + } +} + +::ng-deep .permissions-tooltip, +::ng-deep .email-tooltip { + background-color: rgba(0, 0, 0, 0.9) !important; + color: var(--proxy-neutral-100) !important; + font-size: 12px !important; + white-space: pre-line !important; + border-radius: 4px !important; + padding: 10px !important; + line-height: 1.4 !important; + text-align: left !important; +} + +// ── Mobile overrides for mat-form-field hint ────────────────────────────────── +.mobile-number-field { + @media (max-width: 600px) { + margin-bottom: 16px; + } + @media (max-width: 380px) { + margin-bottom: 30px; + } +} diff --git a/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.ts b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.ts new file mode 100644 index 00000000..a0a24428 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/user-management/user-management.component.ts @@ -0,0 +1,808 @@ +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + DestroyRef, + ElementRef, + OnDestroy, + OnInit, + ViewChild, + computed, + effect, + inject, + input, + signal, +} from '@angular/core'; +import { WidgetPortalRef, WidgetPortalService } from '../service/widget-portal.service'; +import { UserManagementBridgeService } from '../service/user-management-bridge.service'; +import { CommonModule } from '@angular/common'; +import { ToastService } from '../service/toast.service'; +import { ToastComponent } from '../service/toast.component'; +import { WidgetTheme } from '@proxy/constant'; +import { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { select, Store } from '@ngrx/store'; +import { IAppState } from '../store/app.state'; +import { otpActions } from '../store/actions'; +import { debounceTime, distinctUntilChanged, Subject } from 'rxjs'; +import { + addUserData, + companyUsersData, + companyUsersDataInProcess, + permissionCreateData, + permissionData, + roleCreateData, + rolesData, + updateCompanyUserData, + updatePermissionData, + updateRoleData, + updateUserPermissionData, + updateUserRoleData, +} from '../store/selectors'; +import { isEqual } from 'lodash-es'; +import { WidgetThemeService } from '../service/widget-theme.service'; +import { UserData, Role, UserManagementTab } from '../model/otp'; + +interface PageEvent { + pageIndex: number; + pageSize: number; + length: number; +} + +@Component({ + selector: 'user-management', + imports: [CommonModule, FormsModule, ReactiveFormsModule, ToastComponent], + templateUrl: './user-management.component.html', + styleUrls: ['./user-management.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class UserManagementComponent implements OnInit, AfterViewInit, OnDestroy { + readonly userToken = input(); + readonly pass = input(false); + readonly theme = input(); + protected readonly WidgetTheme = WidgetTheme; + protected readonly UserManagementTab = UserManagementTab; + protected readonly ariaCurrent = ['p', 'a', 'g', 'e'].join(''); + readonly exclude_role_ids = input([]); + readonly include_role_ids = input([]); + readonly isHidden = signal(false); + readonly showDialog = signal(false); + readonly showConfirmDialog = signal(false); + private readonly themeService = inject(WidgetThemeService); + get isDark(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } + readonly availableTabs = computed(() => { + const tabs = [UserManagementTab.Members]; + if (this.pass()) { + tabs.push(UserManagementTab.Roles, UserManagementTab.Permissions); + } + return tabs; + }); + readonly hasMultipleTabs = computed(() => this.availableTabs().length > 1); + public pendingDeleteUser: any = null; + private pendingDeleteIndex: number = -1; + private pendingEditUser: UserData | null = null; + public roles: any[] = []; + public permissions: any[] = []; + public searchTerm: string = ''; + private searchSubject = new Subject(); + + public roleSearchTerm: string = ''; + public filteredRolesData: any[] = []; + public defaultRoles: any; + + public permissionSearchTerm: string = ''; + public filteredPermissionsData: any[] = []; + public emailVisibility: { [key: number]: boolean } = {}; + public expandedRoles: { [key: number]: boolean } = {}; + public addUserForm: FormGroup; + public addRoleForm: FormGroup; + public addPermissionTabForm: FormGroup; + public isEditRole: boolean = false; + public isEditPermission: boolean = false; + public isEditUser: boolean = false; + public currentEditingUser: UserData | null = null; + public currentEditingPermission: UserData | null = null; + public userData: any[] = []; + public canRemoveUser: boolean = false; + public canEditUser: boolean = false; + public canAddUser: boolean = false; + public totalUsers: number = 0; + public currentPageIndex: number = 0; + public currentPageSize: number = 50; + public isUsersLoading: boolean = true; + public isRolesLoading: boolean = false; + public isPermissionsLoading: boolean = false; + public skipSkeletonLoading: boolean = false; + public activeTab: UserManagementTab = UserManagementTab.Members; + private readonly destroyRef = inject(DestroyRef); + private readonly fb = inject(FormBuilder); + private readonly cdr = inject(ChangeDetectorRef); + private readonly store = inject>(Store); + readonly toastService = inject(ToastService); + private readonly widgetPortal = inject(WidgetPortalService); + private readonly bridge = inject(UserManagementBridgeService); + + @ViewChild('mainDialogPortal') private mainDialogPortalEl?: ElementRef; + @ViewChild('confirmDialogPortal') private confirmDialogPortalEl?: ElementRef; + @ViewChild('toastPortal') private toastPortalEl?: ElementRef; + + private mainDialogRef: WidgetPortalRef | null = null; + private confirmDialogRef: WidgetPortalRef | null = null; + private toastPortalRef: WidgetPortalRef | null = null; + + constructor() { + effect(() => this.themeService.setInputTheme(this.theme())); + this.store + .pipe(select(rolesData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.roles = res.data?.data; + this.defaultRoles = res.data?.default_roles; + this.filteredRolesData = [...this.roles]; + this.isRolesLoading = false; + if (this.pendingEditUser) { + this.patchEditUserForm(this.pendingEditUser); + this.pendingEditUser = null; + } + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(permissionData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.permissions = res.data.data; + this.filteredPermissionsData = [...this.permissions]; + this.isPermissionsLoading = false; + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(companyUsersData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.totalUsers = res.data?.totalEntityCount || 0; + this.canRemoveUser = res.data?.permissionToRemoveUser; + this.canAddUser = res.data?.permissionToAddUser; + this.canEditUser = res.data?.permissionToEditUser; + this.userData = res.data?.users || []; + const pageNo = res.data?.pageNo; + const itemsPerPage = res.data?.itemsPerPage; + if (pageNo !== undefined) { + this.currentPageIndex = pageNo - 1; + } + if (itemsPerPage !== undefined) { + this.currentPageSize = parseInt(itemsPerPage, 10) || 10; + } + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(companyUsersDataInProcess), takeUntilDestroyed(this.destroyRef)) + .subscribe((isLoaded) => { + this.isUsersLoading = !isLoaded; + this.cdr.markForCheck(); + }); + + this.store + .pipe(select(addUserData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getCompanyUsers(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(roleCreateData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getRoles(); + this.refreshFormData(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(permissionCreateData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getPermissions(); + this.refreshFormData(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(updatePermissionData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getPermissions(); + this.refreshFormData(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(updateRoleData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getRoles(); + this.refreshFormData(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(updateCompanyUserData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getCompanyUsers(); + this.skipSkeletonLoading = false; + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(updateUserRoleData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getCompanyUsers(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.store + .pipe(select(updateUserPermissionData), distinctUntilChanged(isEqual), takeUntilDestroyed(this.destroyRef)) + .subscribe((res) => { + if (res) { + this.getCompanyUsers(); + if (res?.data?.message) this.toastService.success(res.data.message); + this.cdr.markForCheck(); + } + }); + + this.searchSubject + .pipe(debounceTime(300), distinctUntilChanged(), takeUntilDestroyed(this.destroyRef)) + .subscribe((searchTerm) => { + this.getCompanyUsers(searchTerm); + this.cdr.markForCheck(); + }); + + this.addUserForm = this.fb.group({ + name: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + mobileNumber: ['', [Validators.pattern(/^(\+?[1-9]\d{1,14}|[0-9]{10})$/)]], + role: [''], + permission: [[]], + }); + + // Subscribe to role changes to update permissions + this.addUserForm + .get('role') + ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)) + .subscribe((roleId) => { + this.onRoleChange(roleId); + }); + + this.addRoleForm = this.fb.group({ + roleName: ['', Validators.required], + description: [''], + permission: [[], Validators.required], + }); + + this.addPermissionTabForm = this.fb.group({ + permission: ['', Validators.required], + description: [''], + }); + const showMgmt = () => this.isHidden.set(false); + const hideMgmt = () => this.isHidden.set(true); + + // openAddUserDialog is handled via UserManagementBridgeService + // (works even when the event fires before this component mounts) + this.bridge.openAddUser$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.addUser()); + + // Consume any event that was buffered before this component mounted + if (this.bridge.consumePending() !== null) { + Promise.resolve().then(() => this.addUser()); + } + + window.addEventListener('showUserManagement', showMgmt); + window.addEventListener('hideUserManagement', hideMgmt); + + this.destroyRef.onDestroy(() => { + window.removeEventListener('showUserManagement', showMgmt); + window.removeEventListener('hideUserManagement', hideMgmt); + this.mainDialogRef?.detach(); + this.confirmDialogRef?.detach(); + this.toastPortalRef?.detach(); + this.showDialog.set(false); + this.showConfirmDialog.set(false); + }); + } + + ngOnInit(): void { + this.getCompanyUsers(); + } + + ngAfterViewInit(): void { + // Teleport the toast to body immediately (always visible, not conditional) + if (this.toastPortalEl?.nativeElement) { + this.toastPortalRef = this.widgetPortal.attach(this.toastPortalEl.nativeElement); + } + } + + ngOnDestroy(): void { + // handled via destroyRef.onDestroy above + } + + public tabChange(tab: UserManagementTab): void { + this.activeTab = tab; + if (tab === UserManagementTab.Roles) { + this.isRolesLoading = true; + this.getRoles(); + } else if (tab === UserManagementTab.Permissions) { + this.isPermissionsLoading = true; + this.getPermissions(); + } else if (tab === UserManagementTab.Members) { + this.getCompanyUsers(); + } + } + + public deleteUser(user: any, index: number): void { + this.pendingDeleteUser = user; + this.pendingDeleteIndex = index; + this.showConfirmDialog.set(true); + this.cdr.detectChanges(); + if (this.confirmDialogPortalEl?.nativeElement) { + this.confirmDialogRef = this.widgetPortal.attach(this.confirmDialogPortalEl.nativeElement); + } + } + + public confirmDelete(): void { + if (this.pendingDeleteUser) { + const userId = (this.pendingDeleteUser as any).user_id; + this.userData = this.userData.filter((u: any) => u.user_id !== userId); + this.totalUsers = Math.max(0, this.totalUsers - 1); + this.store.dispatch(otpActions.deleteUser({ companyId: userId, authToken: this.userToken() })); + } + this.cancelDelete(); + } + + public cancelDelete(): void { + this.confirmDialogRef?.detach(); + this.confirmDialogRef = null; + this.pendingDeleteUser = null; + this.pendingDeleteIndex = -1; + this.showConfirmDialog.set(false); + } + + public editUser(user: UserData, index: number): void { + this.skipSkeletonLoading = true; + this.isEditUser = true; + this.isEditRole = false; + this.isEditPermission = false; + this.currentEditingUser = user; + this.pendingEditUser = user; + this.getRoles(); + this.openDialog(); + } + + private patchEditUserForm(user: UserData): void { + const roleId = this.getRoleIdByName(user.role); + const userPermissionIds = this.getPermissionIdsByName(user.additionalpermissions || []); + this.addUserForm.patchValue({ + name: user.name, + email: user.email, + mobileNumber: (user as any).mobile || '', + role: roleId ? roleId.toString() : user.role || '', + permission: userPermissionIds, + }); + this.cdr.markForCheck(); + } + + public getPermissionsTooltip(user: UserData): string { + let tooltip = user?.permissions?.length + ? `Permissions:\n• ${user.permissions.join('\n• ')}` + : 'No permissions assigned'; + if (user?.additionalpermissions?.length) { + tooltip += `\n\nAdditional Permissions:\n+ ${user.additionalpermissions.join('\n+ ')}`; + } + return tooltip; + } + + public applyFilter(): void { + this.searchSubject.next(this.searchTerm); + } + + public clearSearch(): void { + this.searchTerm = ''; + this.applyFilter(); + } + + public isEmailVisible(index: number): boolean { + return this.emailVisibility[index] || false; + } + + public toggleEmailVisibility(index: number): void { + this.emailVisibility[index] = !this.emailVisibility[index]; + } + + public getRoleIdByName(roleName: string): number | undefined { + return this.roles?.find((r) => r.name === roleName)?.id; + } + + public getRoleNameById(roleId: number): string { + return (roleId && this.roles?.find((r) => r.id === roleId)?.name) || ''; + } + + public onRoleChange(roleId: number): void { + const perms = roleId ? this.roles.find((r) => r.id === roleId)?.c_permissions?.map((p: any) => p.id) ?? [] : []; + this.addUserForm.get('permission')?.setValue(perms); + } + + public getPermissionIdsByName(permissionNames: string[]): number[] { + return permissionNames + .map((permissionName) => { + const permission = this.permissions.find((p) => p.name === permissionName); + return permission?.id; + }) + .filter((id) => id !== undefined) as number[]; + } + + public getPermissionNamesByIds(permissionIds: number[]): string[] { + return permissionIds + .map((permissionId) => { + const permission = this.permissions.find((p) => p.id === permissionId); + return permission?.name; + }) + .filter((name) => name !== undefined) as string[]; + } + + private openDialog(): void { + this.showDialog.set(true); + this.cdr.detectChanges(); + if (this.mainDialogPortalEl?.nativeElement) { + this.mainDialogRef = this.widgetPortal.attach(this.mainDialogPortalEl.nativeElement); + } + } + + public addUser(): void { + // Call Add role api to get role to show in dropdown list + this.getRoles(); + this.isEditUser = false; + this.isEditRole = false; + this.isEditPermission = false; + this.currentEditingUser = null; + this.addUserForm.reset(); + + if (this.defaultRoles?.default_member_role) { + this.addUserForm.patchValue({ role: this.defaultRoles.default_member_role }); + } + + this.openDialog(); + } + + public closeDialog(): void { + this.mainDialogRef?.detach(); + this.mainDialogRef = null; + this.showDialog.set(false); + this.isEditUser = false; + this.isEditRole = false; + this.isEditPermission = false; + this.currentEditingUser = null; + this.currentEditingPermission = null; + } + + public saveUser(): void { + if (this.addUserForm.valid) { + const formValue = this.addUserForm.value; + const selectedRole = formValue.role ? this.getRoleById(formValue.role) : null; + const roleName = selectedRole?.name || formValue.role || 'User'; + + if ((this.isEditUser || this.isEditRole) && this.currentEditingUser) { + // Update existing user + const userIndex = this.userData.findIndex((u) => u.userId === this.currentEditingUser!.userId); + if (userIndex !== -1) { + const originalMobile = (this.currentEditingUser as any).mobile || ''; + const newMobile = formValue.mobileNumber || ''; + + // Build user object with only changed fields + const userPayload: any = { + id: (this.currentEditingUser as any).user_id, + name: formValue.name, + }; + + // Only include mobile if it has changed + if (originalMobile !== newMobile) { + userPayload.mobile = newMobile; + } + + const rolePayload = { + id: userPayload.id, + role_id: formValue.role, + }; + const permissionPayload = { + id: userPayload.id, + cpermissions: formValue.permission, + }; + this.store.dispatch( + otpActions.updateUserRole({ payload: rolePayload, authToken: this.userToken() }) + ); + this.store.dispatch( + otpActions.updateUserPermission({ payload: permissionPayload, authToken: this.userToken() }) + ); + } + } else { + // Add new user + const newUser: UserData = { + userId: (this.userData.length + 1).toString().padStart(3, '0'), + name: formValue.name, + email: formValue.email, + mobileNumber: formValue.mobileNumber || '', + role: roleName, + permissions: this.getDefaultPermissions(roleName), + }; + const payload = { + user: { + name: newUser.name, + email: newUser.email, + mobile: newUser.mobileNumber, + }, + role_id: formValue.role, + }; + + this.store.dispatch(otpActions.addUser({ payload, authToken: this.userToken() })); + } + + this.closeDialog(); + } + } + + public getRoleById(roleId: number): Role | undefined { + return this.roles.find((role) => role.id === roleId); + } + + public getVisiblePermissions(role: any): any[] { + if (!role || !role.c_permissions || role.c_permissions.length === 0) { + return []; + } + const isExpanded = this.expandedRoles[role.id] || false; + return isExpanded ? role.c_permissions : role.c_permissions.slice(0, 3); + } + + public getDefaultPermissions(role: string): string[] { + switch (role) { + case 'Admin': + return ['Full Access', 'User Management', 'System Settings', 'Reports']; + case 'Manager': + return ['User Management', 'Reports', 'View Settings']; + case 'User': + return ['Read Only', 'View Reports']; + default: + return ['Read Only']; + } + } + + public addRole(): void { + this.isEditRole = true; + this.isEditPermission = false; + this.currentEditingUser = null; + this.addRoleForm.reset(); + this.openDialog(); + } + + public saveAddRole(): void { + if (!this.addRoleForm.valid) return; + const formValue = this.addRoleForm.value; + if (this.isEditRole && this.currentEditingUser) { + this.store.dispatch( + otpActions.updateRole({ + payload: { + id: (this.currentEditingUser as any).id, + name: formValue.roleName, + cpermissions: formValue.permission, + }, + authToken: this.userToken(), + }) + ); + } else { + this.store.dispatch( + otpActions.createRole({ + name: formValue.roleName, + permissions: this.getPermissionNamesByIds(formValue.permission), + authToken: this.userToken(), + }) + ); + } + this.addRoleForm.reset(); + this.closeDialog(); + } + + public saveAddPermissionTab(): void { + if (!this.addPermissionTabForm.valid) return; + const formValue = this.addPermissionTabForm.value; + if (this.isEditPermission && this.currentEditingPermission) { + this.store.dispatch( + otpActions.updatePermission({ + payload: { id: (this.currentEditingPermission as any).id, name: formValue.permission }, + authToken: this.userToken(), + }) + ); + } else { + this.store.dispatch( + otpActions.createPermission({ name: formValue.permission, authToken: this.userToken() }) + ); + } + this.addPermissionTabForm.reset(); + this.closeDialog(); + } + public onPermissionCheckboxChange(formName: 'addRoleForm' | 'addUserForm', permId: number, event: Event): void { + const checked = (event.target as HTMLInputElement).checked; + const form = this[formName]; + const current: number[] = form.get('permission')?.value ?? []; + const updated = checked ? [...current, permId] : current.filter((id) => id !== permId); + form.get('permission')?.setValue(updated); + form.get('permission')?.markAsTouched(); + } + + public getCompanyUsers(search?: string): void { + const pageSize = this.currentPageSize; + const pageIndex = this.currentPageIndex; + const searchTerm = search?.trim() || undefined; + this.store.dispatch( + otpActions.getCompanyUsers({ + authToken: this.userToken(), + itemsPerPage: pageSize, + pageNo: pageIndex, + search: searchTerm, + exclude_role_ids: this.exclude_role_ids(), + include_role_ids: this.include_role_ids(), + }) + ); + } + + public onUsersPageChange(event: PageEvent): void { + this.currentPageIndex = event.pageIndex; + this.currentPageSize = event.pageSize; + const searchTerm = this.searchTerm?.trim() || undefined; + // API expects 1-based page number + this.store.dispatch( + otpActions.getCompanyUsers({ + authToken: this.userToken(), + itemsPerPage: event.pageSize, + pageNo: event.pageIndex, + search: searchTerm, + }) + ); + } + public getRoles(): void { + this.store.dispatch(otpActions.getRoles({ authToken: this.userToken(), itemsPerPage: 1000 })); + } + + public onRolesPageChange(event: PageEvent): void { + this.store.dispatch(otpActions.getRoles({ authToken: this.userToken(), itemsPerPage: event.pageSize })); + } + public getPermissions(): void { + const pageSize = 1000; + this.store.dispatch(otpActions.getPermissions({ authToken: this.userToken(), itemsPerPage: pageSize })); + } + + public refreshFormData(): void { + setTimeout(() => { + this.filteredPermissionsData = [...this.permissions]; + this.filteredRolesData = [...this.roles]; + this.cdr.markForCheck(); + }, 100); + } + + // Role management methods + public applyRoleFilter(): void { + const q = this.roleSearchTerm.toLowerCase().trim(); + this.filteredRolesData = q + ? this.roles.filter( + (role) => + role.name.toLowerCase().includes(q) || + role.c_permissions?.some((p: any) => p.name.toLowerCase().includes(q)) + ) + : [...this.roles]; + } + + public editRole(role: any, index: number): void { + this.currentEditingUser = role; + this.isEditRole = true; + this.isEditPermission = false; + this.isEditUser = false; + + const permissionIds = role.c_permissions ? role.c_permissions.map((p: any) => p.id) : []; + const patchFn = () => { + this.addRoleForm.patchValue({ + roleName: role.name, + description: `Description for ${role.name} role`, + permission: permissionIds, + }); + }; + + this.openDialog(); + if (this.permissions?.length > 0) { + patchFn(); + } else { + setTimeout(patchFn, 500); + } + } + + // Permission management methods + public applyPermissionFilter(): void { + const q = this.permissionSearchTerm.toLowerCase().trim(); + this.filteredPermissionsData = q + ? this.permissions.filter((p) => p.name.toLowerCase().includes(q)) + : [...this.permissions]; + } + + public openAddPermissionDialog(): void { + this.isEditPermission = true; + this.isEditRole = false; + this.currentEditingPermission = null; + this.addPermissionTabForm.reset(); + this.openDialog(); + } + + public editPermission(permission: any, index: number): void { + this.currentEditingPermission = permission; + this.isEditPermission = true; + this.isEditRole = false; + + this.addPermissionTabForm.patchValue({ + permission: permission.name, + description: `Description for ${permission.name} permission`, + }); + + this.openDialog(); + } + + // Dialog helper methods + public getDialogTitle(): string { + if (this.isEditPermission) return this.currentEditingPermission ? 'Edit Permission' : 'Add New Permission'; + if (this.isEditRole) return this.currentEditingUser ? 'Edit Role' : 'Add New Role'; + return this.isEditUser ? 'Edit member' : 'Add New member'; + } + + public getSaveAction(): void { + if (this.isEditPermission) this.saveAddPermissionTab(); + else if (this.isEditRole) this.saveAddRole(); + else this.saveUser(); + } + + public getFormInvalid(): boolean { + if (this.isEditPermission) return this.addPermissionTabForm.invalid; + if (this.isEditRole) return this.addRoleForm.invalid; + return this.addUserForm.invalid; + } + + public getSaveButtonText(): string { + if (this.isEditPermission) return this.currentEditingPermission ? 'Update Permission' : 'Add Permission'; + if (this.isEditRole) return this.currentEditingUser ? 'Update Role' : 'Add Role'; + return this.isEditUser ? 'Update member' : 'Add member'; + } + + public getAvailableAdditionalPermissions(): any[] { + if (!this.currentEditingUser) { + return []; + } + const userRole = this.roles.find((role) => role.name === this.currentEditingUser!.role); + const rolePermissionNames: string[] = userRole?.c_permissions?.map((p: any) => p.name) ?? []; + return this.permissions.filter((p) => !rolePermissionNames.includes(p.name)); + } +} diff --git a/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.html b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.html new file mode 100644 index 00000000..a57c6afb --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.html @@ -0,0 +1,353 @@ +
    +
    + +
    +
    +
    +
    + +
    +
    +

    User Details

    +

    Manage your personal information

    +
    +
    + @if (!isEditing) { + + } +
    + + +
    +
    + {{ previousName || 'U' | slice: 0:2 | uppercase }} +
    +
    +

    + {{ previousName || 'User' }} +

    +

    + {{ clientForm.get('email')?.value }} +

    + + + {{ (userDetails$ | async)?.c_companies?.length || 0 }} Organizations + +
    +
    + + + @if (!isEditing) { +
    +
    + +
    +

    Full Name

    +

    + {{ previousName || '—' }} +

    +
    +
    +
    + +
    +

    Mobile

    +

    + {{ + clientForm.get('mobile')?.value === '--Not Provided--' + ? 'Not provided' + : clientForm.get('mobile')?.value || 'Not provided' + }} +

    +
    +
    +
    + +
    +

    Email Address

    +

    + {{ clientForm.get('email')?.value }} +

    +
    +
    +
    + } +
    + + +
    +
    +
    +
    + +
    +
    +

    Organizations

    +

    Workspaces you're a member of

    +
    +
    + {{ (userDetails$ | async)?.c_companies?.length || 0 }} total +
    + + @if ((userDetails$ | async)?.c_companies?.length) { +
    + + @for (org of (userDetails$ | async)?.c_companies; track org.id) { +
    +
    +
    + {{ org.name | slice: 0:2 | uppercase }} +
    +
    +

    + {{ org.name }} +

    + @if (companyDetails?.currentCompany?.company_uname === org.company_uname) { + + ● Current + + } +
    +
    + @if (companyDetails?.currentCompany?.company_uname !== org.company_uname) { + + } +
    + } +
    + } @else { +

    + Nothing here — there are no companies to show +

    + } +
    +
    +
    +@if (isEditing) { +
    + + +
    +} @if (confirmDialogCompanyId()) { +
    + +
    +} +
    + +
    diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.scss b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.scss similarity index 61% rename from apps/proxy-auth/src/app/otp/user-profile/user-profile.component.scss rename to apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.scss index 6d547b5f..e852dfe0 100644 --- a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.scss +++ b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.scss @@ -1,15 +1,7 @@ -// ───────────────────────────────────────────────────────────────────────── -// user-profile.component.scss -// -// ViewEncapsulation.None is set on this component, so these styles are -// injected as global CSS. Everything is scoped under .container to prevent -// leaking into other components. No ::ng-deep needed anywhere. -// ───────────────────────────────────────────────────────────────────────── - -// ── SHARED STRUCTURE ────────────────────────────────────────────────────── - +// Styling handled by Tailwind utility classes in the template. +/* .container { - background: #ffffff; + background: var(--color-common-bg); padding: 15px 60px; text-align: left; position: relative; @@ -108,9 +100,8 @@ justify-content: center; font-size: 20px; font-weight: 700; - color: #ffffff; + color: var(--color-common-white); letter-spacing: -0.5px; - // box-shadow: 0 4px 14px rgba(59,130,246,0.3); } .avatar-status { @@ -120,7 +111,7 @@ width: 13px; height: 13px; border-radius: 50%; - background: #22c55e; + background: var(--color-common-green); } .profile-name { @@ -280,38 +271,6 @@ border-radius: 20px; } - .org-table { - width: 100%; - - th.mat-header-cell { - font-size: 10px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.8px; - padding: 10px 24px; - } - - td.mat-cell { - padding: 10px 24px; - } - .action-column { - text-align: right; - width: 120px; - } - .action-cell { - text-align: right; - .actions { - opacity: 0; - transition: opacity 0.2s ease; - } - } - } - - tr.mat-mdc-row:hover .action-cell .actions, - tr.mat-row:hover .action-cell .actions { - opacity: 1; - } - .org-cell-inner { display: flex; align-items: center; @@ -375,18 +334,17 @@ // LIGHT THEME // ══════════════════════════════════════════════ &.light-theme { - color: #374151; - background-color: white; + color: var(--color-common-text); + background-color: var(--color-common-bg); .profile-card, .org-card { - background: #ffffff; - border: 1px solid #e5e7eb; - // box-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04); + background: var(--color-common-bg); + border: 1px solid var(--color-common-border); } .card-header { - background: #f9fafb; - border-bottom: 1px solid #e5e7eb; + background: var(--color-common-app-bg); + border-bottom: 1px solid var(--color-common-border); } .card-icon.blue { background: #eff6ff; @@ -418,11 +376,11 @@ .profile-banner { background: linear-gradient(135deg, rgba(37, 99, 235, 0.04) 0%, transparent 60%); - border-bottom: 1px solid #e5e7eb; + border-bottom: 1px solid var(--color-common-border); } .avatar-status { - border: 2.5px solid #ffffff; + border: 2.5px solid var(--color-common-white); } .profile-name { color: #111827; @@ -437,10 +395,10 @@ } .view-row { - border-right-color: #e5e7eb; - border-bottom-color: #e5e7eb; + border-right-color: var(--color-common-border); + border-bottom-color: var(--color-common-border); &:hover { - background: #f9fafb; + background: var(--color-common-app-bg); } } .view-field-icon { @@ -464,11 +422,11 @@ } .btn-cancel { - color: #374151 !important; - border-color: #d1d5db !important; - background: #ffffff !important; + color: var(--color-common-text) !important; + border-color: var(--color-common-border) !important; + background: var(--color-common-bg) !important; &:hover { - border-color: #9ca3af !important; + border-color: var(--color-common-grey) !important; } } .btn-save { @@ -479,74 +437,10 @@ } } - // Material form field — light - .mat-mdc-form-field { - .mat-mdc-text-field-wrapper { - background-color: #ffffff; - } - .mat-mdc-input-element { - color: #111827 !important; - } - .mat-mdc-floating-label { - color: #6b7280 !important; - } - .mdc-floating-label { - color: #6b7280 !important; - } - mat-label { - color: #6b7280 !important; - } - } - .mat-mdc-form-field-flex { - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: #d1d5db !important; - } - } - .mdc-text-field--outlined .mdc-notched-outline__leading, - .mdc-text-field--outlined .mdc-notched-outline__notch, - .mdc-text-field--outlined .mdc-notched-outline__trailing { - border-color: #d1d5db !important; - } - .mat-form-field-appearance-outline { - .mat-form-field-outline { - color: #d1d5db !important; - } - &.mat-form-field-disabled .mat-form-field-outline { - background-color: #f9fafb !important; - } - } - .mat-form-field-appearance-outline .mat-form-field-outline-thick { - color: #2563eb !important; - } - .mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick { - color: red !important; - } - - // Org table — light - .org-table { - background: transparent; - // box-shadow: none; - th.mat-header-cell { - background: #f9fafb; - color: #9ca3af; - border-bottom: 1px solid #e5e7eb; - } - td.mat-cell { - color: #374151; - border-bottom: 1px solid #f3f4f6; - } - } - tr.mat-mdc-row:hover, - tr.mat-row:hover { - background: #f8fafd !important; - } - .org-avatar-sm { - background: #f3f4f6; - border: 1px solid #e5e7eb; - color: #9ca3af; + background: var(--color-common-bg-light); + border: 1px solid var(--color-common-border); + color: var(--color-common-grey); &.current { background: #eff6ff; border-color: #dbeafe; @@ -554,7 +448,7 @@ } } .org-name { - color: #374151; + color: var(--color-common-text); } .current-org { color: #111827 !important; @@ -565,26 +459,26 @@ border: 1px solid #a7f3d0; } .btn-leave { - background-color: #fef2f2 !important; - color: #dc2626 !important; - border: 1px solid #fecaca !important; + background-color: rgba(220, 38, 38, 0.06) !important; + color: var(--proxy-error-40) !important; + border: 1px solid rgba(220, 38, 38, 0.2) !important; &:hover { - background-color: #fee2e2 !important; + background-color: rgba(220, 38, 38, 0.12) !important; } } .org-count-badge { - background: #f3f4f6; - color: #6b7280; - border: 1px solid #e5e7eb; + background: var(--color-common-bg-light); + color: var(--color-common-grey); + border: 1px solid var(--color-common-border); } .no-data { - color: #9ca3af; + color: var(--color-common-grey); } .success-message { - color: #059669; + color: var(--color-common-green); } .error-message { - color: #dc2626; + color: var(--proxy-error-40); } } @@ -593,7 +487,6 @@ // No ::ng-deep needed — ViewEncapsulation.None // ══════════════════════════════════════════════ &.dark-theme { - // background: transparent; color: #e5e7eb; h2, @@ -603,9 +496,7 @@ .profile-card, .org-card { - // background: #2C2C2E !important; border: 1px solid rgba(255, 255, 255, 0.08) !important; - // box-shadow: 0 2px 12px rgba(0,0,0,0.3), 0 1px 0 rgba(255,255,255,0.04) inset !important; } .card-header { @@ -699,142 +590,11 @@ .btn-save { background-color: #4a9eff !important; color: #ffffff !important; - // box-shadow: 0 2px 12px rgba(74,158,255,0.3) !important; &:hover { background-color: #5aaeff !important; } } - // Material form field — dark (no ::ng-deep needed with ViewEncapsulation.None) - .mat-mdc-form-field { - .mat-mdc-text-field-wrapper { - background-color: transparent !important; - } - .mat-mdc-input-element { - color: #e0e0e0 !important; - } - .mat-mdc-floating-label { - color: #a0a0a0 !important; - } - .mdc-floating-label { - color: #a0a0a0 !important; - } - mat-label { - color: #a0a0a0 !important; - } - - // hint — "Contact support to update" - .mat-mdc-form-field-hint { - color: #9ca3af !important; - } - .mat-mdc-form-field-hint-wrapper { - color: #9ca3af !important; - } - .mat-mdc-form-field-subscript-wrapper { - color: #9ca3af !important; - } - .mat-hint { - color: #9ca3af !important; - } - - // error text - .mat-mdc-form-field-error { - color: #ff6b6b !important; - } - .mat-error { - color: #ff6b6b !important; - } - - // input placeholder - .mat-mdc-input-element::placeholder { - color: #5a5a6a !important; - } - input::placeholder { - color: #5a5a6a !important; - } - } - - // hint & error also targeted at field level (Material renders them outside wrapper) - .mat-mdc-form-field-hint { - color: #9ca3af !important; - } - .mat-mdc-form-field-subscript-wrapper { - color: #9ca3af !important; - } - .mat-mdc-form-field-bottom-align { - color: #9ca3af !important; - } - .mat-hint { - color: #9ca3af !important; - } - .mat-mdc-form-field-error { - color: #ff6b6b !important; - } - .mat-error { - color: #ff6b6b !important; - } - - .mat-mdc-form-field-flex .mdc-floating-label { - color: #a0a0a0 !important; - } - .mat-mdc-form-field .mat-mdc-floating-label { - color: #a0a0a0 !important; - } - .mdc-text-field--outlined .mdc-floating-label { - color: #a0a0a0 !important; - } - .mat-form-field-label { - color: #ffffff !important; - } - - .mat-mdc-form-field-flex { - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: rgba(255, 255, 255, 0.4) !important; - } - } - .mdc-text-field--outlined .mdc-notched-outline__leading, - .mdc-text-field--outlined .mdc-notched-outline__notch, - .mdc-text-field--outlined .mdc-notched-outline__trailing { - border-color: rgba(255, 255, 255, 0.4) !important; - } - .mat-form-field-appearance-outline { - .mat-form-field-outline { - color: rgba(255, 255, 255, 0.4) !important; - } - &.mat-form-field-disabled .mat-form-field-outline { - background-color: #fafafa26 !important; - } - } - .mat-form-field-appearance-outline .mat-form-field-outline-thick { - color: #ffffff !important; - } - .mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick { - color: red !important; - } - .input-field { - color: #e0e0e0 !important; - } - - // Org table — dark - .org-table { - background-color: transparent !important; - th.mat-header-cell { - background-color: rgba(0, 0, 0, 0.22) !important; - color: #c5c5ca !important; - border-bottom: 1px solid rgba(255, 255, 255, 0.12) !important; - } - td.mat-cell { - color: #e5e7eb !important; - border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important; - } - } - tr.mat-mdc-row:hover, - tr.mat-row:hover { - background-color: rgba(255, 255, 255, 0.07) !important; - } - .org-avatar-sm { background: rgba(255, 255, 255, 0.1) !important; border: 1px solid rgba(255, 255, 255, 0.18) !important; @@ -876,10 +636,10 @@ color: #c5c5ca !important; } .success-message { - color: #4dd96a !important; + color: var(--color-common-green) !important; } .error-message { - color: #ff6b63 !important; + color: var(--proxy-error-80) !important; } } @@ -903,3 +663,4 @@ } } } +*/ diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.ts b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.ts similarity index 50% rename from apps/proxy-auth/src/app/otp/user-profile/user-profile.component.ts rename to apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.ts index 5f0e4f68..d74f29df 100644 --- a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.ts +++ b/apps/36-blocks-widget/src/app/otp/user-profile/user-profile.component.ts @@ -1,10 +1,30 @@ -import { NgStyle } from '@angular/common'; -import { Component, Input, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core'; +import { CommonModule, NgStyle } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + ViewChild, + ViewEncapsulation, + effect, + inject, + input, + signal, +} from '@angular/core'; +import { WidgetPortalRef, WidgetPortalService } from '../service/widget-portal.service'; +import { ToastService } from '../service/toast.service'; +import { ToastComponent } from '../service/toast.component'; +import { ConfirmDialogComponent } from '../ui/confirm-dialog.component'; import { FormControl, FormGroup, Validators } from '@angular/forms'; -import { BehaviorSubject, distinctUntilChanged, map, Observable, of, takeUntil, take, filter } from 'rxjs'; +import { BehaviorSubject, distinctUntilChanged, map, Observable, takeUntil, take, filter } from 'rxjs'; import { IAppState } from '../store/app.state'; import { select, Store } from '@ngrx/store'; -import { getUserDetails, leaveCompany } from '../store/actions/otp.action'; +import { getUserDetails, leaveCompany, updateUser } from '../store/actions/otp.action'; import { error, getUserProfileData, @@ -13,24 +33,28 @@ import { leaveCompanySuccess, } from '../store/selectors'; import { BaseComponent } from '@proxy/ui/base-component'; -import { isEqual } from 'lodash'; -import { Overlay } from '@angular/cdk/overlay'; -import { MatDialog } from '@angular/material/dialog'; -import { MatSnackBar } from '@angular/material/snack-bar'; -import { ConfirmationDialogComponent } from './user-dialog/user-dialog.component'; -import { updateUser } from '../store/actions/otp.action'; +import { isEqual } from 'lodash-es'; import { UPDATE_REGEX } from '@proxy/regex'; +import { WidgetTheme } from '@proxy/constant'; +import { WidgetThemeService } from '../service/widget-theme.service'; @Component({ - selector: 'proxy-user-profile', + selector: 'user-profile', + imports: [CommonModule, ReactiveFormsModule, ToastComponent, ConfirmDialogComponent], templateUrl: './user-profile.component.html', styleUrls: ['./user-profile.component.scss'], encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush, }) -export class UserProfileComponent extends BaseComponent implements OnInit { - @Input() public authToken: string; - @Input() public target: string; - @Input() public showCard: boolean; - @Input() public theme: string; +export class UserProfileComponent extends BaseComponent implements OnInit, AfterViewInit, OnDestroy { + public authToken = input(); + public target = input(); + public showCard = input(); + public theme = input(); + protected readonly WidgetTheme = WidgetTheme; + private readonly themeService = inject(WidgetThemeService); + get isDark(): boolean { + return this.themeService.isDark(this.theme() as WidgetTheme); + } @Input() set css(type: NgStyle['ngStyle']) { this.cssSubject$.next(type); @@ -51,9 +75,9 @@ export class UserProfileComponent extends BaseComponent implements OnInit { : type ) ); - @Input() public successReturn: (arg: any) => any; - @Input() public failureReturn: (arg: any) => any; - @Input() public otherData: { [key: string]: any } = {}; + public successReturn = input<(arg: any) => any>(); + public failureReturn = input<(arg: any) => any>(); + public otherData = input<{ [key: string]: any }>({}); public userDetails$: Observable; public userInProcess$: Observable; public deleteCompany$: Observable; @@ -70,15 +94,25 @@ export class UserProfileComponent extends BaseComponent implements OnInit { email: new FormControl({ value: '', disabled: true }), }); - displayedColumns: string[] = ['companyName', 'action']; public isEditing = false; - constructor( - private store: Store, - public dialog: MatDialog, - private snackBar: MatSnackBar, - private overlay: Overlay - ) { + + private store = inject>(Store); + readonly toastService = inject(ToastService); + private readonly widgetPortal = inject(WidgetPortalService); + private readonly cdr = inject(ChangeDetectorRef); + readonly confirmDialogCompanyId = signal(null); + + @ViewChild('editDialogPortal') private editDialogPortalEl?: ElementRef; + @ViewChild('confirmDialogPortal') private confirmDialogPortalEl?: ElementRef; + @ViewChild('toastPortal') private toastPortalEl?: ElementRef; + + private editDialogRef: WidgetPortalRef | null = null; + private confirmDialogPortalRef: WidgetPortalRef | null = null; + private toastPortalRef: WidgetPortalRef | null = null; + + constructor() { super(); + effect(() => this.themeService.setInputTheme(this.theme())); this.userDetails$ = this.store.pipe( select(getUserProfileData), distinctUntilChanged(isEqual), @@ -98,6 +132,19 @@ export class UserProfileComponent extends BaseComponent implements OnInit { this.error$ = this.store.pipe(select(error), distinctUntilChanged(isEqual), takeUntil(this.destroy$)); } + ngAfterViewInit(): void { + if (this.toastPortalEl?.nativeElement) { + this.toastPortalRef = this.widgetPortal.attach(this.toastPortalEl.nativeElement); + } + } + + ngOnDestroy(): void { + this.editDialogRef?.detach(); + this.confirmDialogPortalRef?.detach(); + this.toastPortalRef?.detach(); + super.ngOnDestroy(); + } + ngOnInit(): void { this.userDetails$.pipe(takeUntil(this.destroy$)).subscribe((res) => { if (res) { @@ -117,32 +164,45 @@ export class UserProfileComponent extends BaseComponent implements OnInit { this.store.dispatch( getUserDetails({ - request: this.authToken, + request: this.authToken(), }) ); } openModal(companyId: number): void { - const dialogRef = this.dialog.open(ConfirmationDialogComponent, { - width: '400px', - data: { companyId: companyId, authToken: this.authToken, theme: this.theme }, - panelClass: this.theme === 'dark' ? 'confirm-dialog-dark' : 'confirm-dialog-light', - // Prevent CDK BlockScrollStrategy from applying left/top on when dialog opens - scrollStrategy: this.overlay.scrollStrategies.noop(), - }); + this.confirmDialogCompanyId.set(companyId); + this.cdr.detectChanges(); + if (this.confirmDialogPortalEl?.nativeElement) { + this.confirmDialogPortalRef = this.widgetPortal.attach(this.confirmDialogPortalEl.nativeElement); + } + } - dialogRef.afterClosed().subscribe((result) => { - if (result === 'confirmed') { - this.store.dispatch( - getUserDetails({ - request: this.authToken, - }) - ); + confirmLeave(): void { + this.confirmDialogPortalRef?.detach(); + this.confirmDialogPortalRef = null; + const companyId = this.confirmDialogCompanyId(); + this.confirmDialogCompanyId.set(null); + if (!companyId) return; + this.store.dispatch(leaveCompany({ companyId, authToken: this.authToken() })); + this.deleteCompany$.pipe(filter(Boolean), take(1)).subscribe((res) => { + if (res) { + window.parent.postMessage({ type: 'proxy', data: { event: 'userLeftCompany', companyId } }, '*'); + this.store.dispatch(getUserDetails({ request: this.authToken() })); } }); } + public openEditDialog(): void { + this.isEditing = true; + this.cdr.detectChanges(); + if (this.editDialogPortalEl?.nativeElement) { + this.editDialogRef = this.widgetPortal.attach(this.editDialogPortalEl.nativeElement); + } + } + public cancelEdit() { + this.editDialogRef?.detach(); + this.editDialogRef = null; this.isEditing = false; this.clientForm.get('name').setValue(this.previousName); } @@ -151,6 +211,8 @@ export class UserProfileComponent extends BaseComponent implements OnInit { const nameControl = this.clientForm.get('name'); const enteredName = nameControl?.value?.trim(); if (enteredName === this.previousName) { + this.editDialogRef?.detach(); + this.editDialogRef = null; this.isEditing = false; return; } @@ -165,42 +227,27 @@ export class UserProfileComponent extends BaseComponent implements OnInit { return; } - this.store.dispatch(updateUser({ name: enteredName, authToken: this.authToken })); + this.store.dispatch(updateUser({ name: enteredName, authToken: this.authToken() })); this.update$.pipe(filter(Boolean), take(1)).subscribe((res) => { if (res) { + this.editDialogRef?.detach(); + this.editDialogRef = null; this.isEditing = false; this.previousName = enteredName; - this.snackBar.open('Information successfully updated', '✕', { - duration: 10000, - horizontalPosition: 'center', - verticalPosition: 'top', - panelClass: ['success-snackbar'], - }); + this.toastService.success('Information successfully updated'); } }); this.error$.pipe(filter(Boolean), take(1)).subscribe((err) => { - if (err) { - this.snackBar.open(err[0], '✕', { - duration: 10000, - horizontalPosition: 'center', - verticalPosition: 'top', - panelClass: ['error-snackbar'], - }); - } + if (err?.[0]) this.toastService.error(err[0]); }); window.parent.postMessage({ type: 'proxy', data: { event: 'userNameUpdated', enteredName: enteredName } }, '*'); } public clear() { - this.snackBar.open('Something went wrong', '✕', { - duration: 3000, - horizontalPosition: 'center', - verticalPosition: 'top', - panelClass: ['error-snackbar'], - }); + this.toastService.error('Something went wrong'); setTimeout(() => { this.errorMessage = ''; }, 3000); diff --git a/apps/36-blocks-widget/src/app/otp/widget/utility/model.ts b/apps/36-blocks-widget/src/app/otp/widget/utility/model.ts new file mode 100644 index 00000000..fe72f6aa --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/widget/utility/model.ts @@ -0,0 +1,17 @@ +// import { PublicScriptType } from '@proxy/constant'; + +export enum WidgetVersion { + V1 = 'v1', + V2 = 'v2', +} +export enum InputFields { + TOP = 'top', + BOTTOM = 'bottom', +} +// export enum ViewMode { +// OtpDialog = 'otp-dialog', +// UserManagement = PublicScriptType.UserManagement, +// Subscription = PublicScriptType.Subscription, +// UserProfile = PublicScriptType.UserProfile, +// OrganizationDetails = PublicScriptType.OrganizationDetails, +// } diff --git a/apps/36-blocks-widget/src/app/otp/widget/widget.component.html b/apps/36-blocks-widget/src/app/otp/widget/widget.component.html new file mode 100644 index 00000000..8941b0c1 --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/widget/widget.component.html @@ -0,0 +1,156 @@ +@if (show()) { +
    + @switch (viewMode()) { @case (PublicScriptType.UserManagement) { + + } @case (PublicScriptType.Subscription) { +
    + +
    + } @case (PublicScriptType.OrganizationDetails) { + + } @case (PublicScriptType.UserProfile) { + + } @case (PublicScriptType.Authorization) { +
    + @if (isOtpLoading()) { + + } + +
    + } } +
    +} @if (showRegistration() || showLogin() || showForgotPassword()) { +
    + + +
    +} + + diff --git a/apps/36-blocks-widget/src/app/otp/widget/widget.component.scss b/apps/36-blocks-widget/src/app/otp/widget/widget.component.scss new file mode 100644 index 00000000..96a1a69b --- /dev/null +++ b/apps/36-blocks-widget/src/app/otp/widget/widget.component.scss @@ -0,0 +1,39 @@ +@use 'intl-tel-input/build/css/intlTelInput.css'; +@use '../../../otp-global' as *; +@use 'tailwindcss'; +@source not inline("group-[aria-current=page]:text-indigo-600"); +@custom-variant dark (&:where(.dark, .dark *)); + +:host { + display: block !important; + height: inherit !important; + min-height: inherit !important; + max-height: inherit !important; + background: transparent !important; + + // Prevent client-page CSS from bleeding into the widget. + // Shadow DOM already blocks inherited styles at the boundary, + // but these resets guard against any CSS that targets :host from outside. + all: initial; + display: block !important; + height: inherit !important; + min-height: inherit !important; + max-height: inherit !important; + background: transparent !important; + + // Establish an independent stacking context so position:fixed children + // (dialogs, backdrops) are positioned relative to the viewport, not clipped + // by a client-side transform or will-change on an ancestor. + isolation: isolate; + + // Ensure base typography is not inherited from the client page. + font-family: Inter, ui-sans-serif, system-ui, sans-serif; + font-size: 16px; + line-height: 1.5; + color: inherit; + box-sizing: border-box; +} + +.authorization-container { + @apply h-full flex justify-center items-center; +} diff --git a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.ts b/apps/36-blocks-widget/src/app/otp/widget/widget.component.ts similarity index 52% rename from apps/proxy-auth/src/app/otp/send-otp/send-otp.component.ts rename to apps/36-blocks-widget/src/app/otp/widget/widget.component.ts index cb8b49dd..faaf15b3 100644 --- a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.ts +++ b/apps/36-blocks-widget/src/app/otp/widget/widget.component.ts @@ -1,13 +1,37 @@ import { OtpService } from './../service/otp.service'; -import { NgStyle } from '@angular/common'; -import { Component, Input, NgZone, OnDestroy, OnInit, Renderer2, ViewEncapsulation } from '@angular/core'; -import { META_TAG_ID } from '@proxy/constant'; +import { CommonModule } from '@angular/common'; +import { ProgressBarComponent } from '../ui/progress-bar.component'; +import { SendOtpCenterComponent } from '../component'; +import { RegisterComponent } from '../component/register/register.component'; +import { LoginComponent } from '../component/login/login.component'; +import { UserProfileComponent } from '../user-profile/user-profile.component'; +import { UserManagementComponent } from '../user-management/user-management.component'; +import { OrganizationDetailsComponent } from '../organization-details/organization-details.component'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Input, + NgZone, + OnChanges, + OnDestroy, + OnInit, + Renderer2, + SimpleChanges, + ViewChild, + ViewEncapsulation, + computed, + effect, + inject, + signal, +} from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { META_TAG_ID, WidgetTheme, PublicScriptType } from '@proxy/constant'; import { BaseComponent } from '@proxy/ui/base-component'; import { select, Store } from '@ngrx/store'; import { isEqual } from 'lodash-es'; -import { BehaviorSubject, Observable, of } from 'rxjs'; -import { distinctUntilChanged, filter, map, skip, take, takeUntil } from 'rxjs/operators'; -import { MatDialog } from '@angular/material/dialog'; +import { distinctUntilChanged, filter, skip, take, takeUntil } from 'rxjs/operators'; import { getSubscriptionPlans, getWidgetData, upgradeSubscription } from '../store/actions/otp.action'; import { IAppState } from '../store/app.state'; @@ -22,150 +46,174 @@ import { } from '../store/selectors'; import { FeatureServiceIds } from '@proxy/models/features-model'; import { OtpWidgetService } from '../service/otp-widget.service'; +import { WidgetThemeService } from '../service/widget-theme.service'; import { OtpUtilityService } from '../service/otp-utility.service'; +import { SubscriptionRendererService } from '../service/subscription-renderer.service'; +import { ProxyAuthDomBuilderService } from '../service/proxy-auth-dom-builder.service'; import { HttpErrorResponse } from '@angular/common/http'; import { SubscriptionCenterComponent } from '../component/subscription-center/subscription-center.component'; -import { environment } from 'apps/proxy-auth/src/environments/environment'; - -export enum Theme { - LIGHT = 'light', - DARK = 'dark', - SYSTEM = 'system', -} -export enum SendOtpCenterVersion { - V1 = 'v1', - V2 = 'v2', -} -export enum InputFields { - TOP = 'top', - BOTTOM = 'bottom', -} - +import { environment } from 'apps/36-blocks-widget/src/environments/environment'; +import { InputFields, WidgetVersion } from './utility/model'; +import { WidgetPortalRef, WidgetPortalService } from '../service/widget-portal.service'; @Component({ - selector: 'proxy-send-otp', - templateUrl: './send-otp.component.html', + selector: 'proxy-auth-widget', + imports: [ + CommonModule, + ProgressBarComponent, + SubscriptionCenterComponent, + SendOtpCenterComponent, + RegisterComponent, + LoginComponent, + UserProfileComponent, + UserManagementComponent, + OrganizationDetailsComponent, + ], + templateUrl: './widget.component.html', encapsulation: ViewEncapsulation.ShadowDom, - styleUrls: ['../../../styles.scss', './send-otp.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, + styleUrls: ['../../../styles.scss', './widget.component.scss'], }) -export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy { +export class ProxyAuthWidgetComponent extends BaseComponent implements OnInit, OnChanges, OnDestroy { @Input() public referenceId: string; - @Input() public type: string; @Input() public target: string; - @Input() public authToken: string; @Input() public showCompanyDetails: boolean; @Input() public userToken: string; - @Input() public isRolePermission: string; - @Input() public isPreview: boolean; - @Input() public isLogin: boolean; + @Input() public isRolePermission: boolean; @Input() public loginRedirectUrl: string; + @Input() public authToken: string; + @Input() public type: string; + @Input() public isPreview: boolean = false; + @Input() public isLogin: boolean = false; @Input() public theme: string; - @Input() public version: string = SendOtpCenterVersion.V1; + + private readonly _authToken$ = signal(undefined); + private readonly _type$ = signal(undefined); + private readonly themeService = inject(WidgetThemeService); + protected readonly WidgetTheme = WidgetTheme; + protected readonly PublicScriptType = PublicScriptType; + + readonly viewMode = computed(() => { + const authToken = this._authToken$(); + const type = this._type$(); + if (authToken && type === PublicScriptType.UserManagement) { + return PublicScriptType.UserManagement; + } + if (authToken && type === PublicScriptType.OrganizationDetails) { + return PublicScriptType.OrganizationDetails; + } + if (authToken && type === PublicScriptType.UserProfile) { + return PublicScriptType.UserProfile; + } + // TODO: Uncomment when subscription is implemented + // if (type === PublicScriptType.Subscription) { + // return PublicScriptType.Subscription; + // } + return PublicScriptType.Authorization; + }); + + get isDarkTheme(): boolean { + return this.themeService.isDark(this.theme as WidgetTheme); + } + + @Input() public version: string = WidgetVersion.V1; @Input() public exclude_role_ids: any[] = []; @Input() public include_role_ids: any[] = []; @Input() public isHidden: boolean = false; @Input() public input_fields: string = InputFields.TOP; @Input() public show_social_login_icons: boolean = false; @Input() public isRegisterFormOnly: boolean = false; - set css(type: NgStyle['ngStyle']) { - this.cssSubject$.next(type); - } - private readonly cssSubject$: NgStyle['ngStyle'] = new BehaviorSubject({ - position: 'absolute', - 'margin-left': '50%', - top: '10px', - }); - readonly css$ = this.cssSubject$.pipe( - map((type) => - !type || !Object.keys(type).length - ? { - position: 'absolute', - 'margin-left': '50%', - top: '10px', - } - : type - ) - ); @Input() public successReturn: (arg: any) => any; @Input() public failureReturn: (arg: any) => any; @Input() public otherData: { [key: string]: any } = {}; - public show$: Observable = of(false); - public selectGetOtpInProcess$: Observable; - public selectWidgetData$: Observable; - public selectResendOtpInProcess$: Observable; - public selectVerifyOtpInProcess$: Observable; - public selectWidgetTheme$: Observable; - public animate: boolean = false; + @ViewChild('dialogPortal') private dialogPortalEl?: ElementRef; + private dialogPortalRef: WidgetPortalRef | null = null; + private readonly widgetPortal = inject(WidgetPortalService); + + public readonly show = signal(false); + public readonly showRegistration = signal(false); + public readonly showForgotPassword = signal(false); + public readonly animate = signal(false); public isCreateAccountTextAppended: boolean = false; public otpWidgetData; public loginWidgetData; - public showRegistration = new BehaviorSubject(false); public registrationViaLogin: boolean = true; public prefillDetails: string; - public cameFromLogin: boolean = false; // Track if user came from login - public cameFromSendOtpCenter: boolean = false; // Track if user came from send-otp-center component + public cameFromLogin: boolean = false; + public cameFromSendOtpCenter: boolean = false; public referenceElement: HTMLElement = null; - public authReference: HTMLElement = null; - public showCard: boolean = false; public subscriptionPlans: any[] = []; - public showLogin: BehaviorSubject = this.otpWidgetService.showlogin; - public showSkeleton: boolean = false; - public upgradeSubscriptionData: any; + + private readonly cdr = inject(ChangeDetectorRef); + + private readonly otpWidgetService = inject(OtpWidgetService); + private readonly store = inject>(Store); + private readonly ngZone = inject(NgZone); + private readonly renderer = inject(Renderer2); + private readonly otpUtilityService = inject(OtpUtilityService); + private readonly subscriptionRenderer = inject(SubscriptionRendererService); + private readonly domBuilder = inject(ProxyAuthDomBuilderService); + private readonly otpService = inject(OtpService); + + readonly isOtpInProcess = toSignal(this.store.pipe(select(selectGetOtpInProcess), distinctUntilChanged(isEqual)), { + initialValue: false, + }); + readonly isResendOtpInProcess = toSignal( + this.store.pipe(select(selectResendOtpInProcess), distinctUntilChanged(isEqual)), + { initialValue: false } + ); + readonly isVerifyOtpInProcess = toSignal( + this.store.pipe(select(selectVerifyOtpInProcess), distinctUntilChanged(isEqual)), + { initialValue: false } + ); + readonly isOtpLoading = computed( + () => this.isOtpInProcess() || this.isResendOtpInProcess() || this.isVerifyOtpInProcess() + ); + readonly showLogin = toSignal(this.otpWidgetService.showlogin, { initialValue: false }); + + readonly widgetTheme = toSignal(this.store.pipe(select(selectWidgetTheme), distinctUntilChanged(isEqual)), { + initialValue: null, + }); + + private showSkeleton: boolean = false; public dialogBorderRadius: string = null; - private createAccountTextAppended: boolean = false; // Flag to track if create account text has been appended + private createAccountTextAppended: boolean = false; private hcaptchaLoading: boolean = false; private hcaptchaRenderQueue: Array<() => void> = []; public isUserProxyContainer: boolean = true; - constructor( - private ngZone: NgZone, - private store: Store, - private renderer: Renderer2, - private otpWidgetService: OtpWidgetService, - private otpUtilityService: OtpUtilityService, - private otpService: OtpService, - private dialog: MatDialog - ) { + constructor() { super(); - this.selectGetOtpInProcess$ = this.store.pipe( - select(selectGetOtpInProcess), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.selectResendOtpInProcess$ = this.store.pipe( - select(selectResendOtpInProcess), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.selectVerifyOtpInProcess$ = this.store.pipe( - select(selectVerifyOtpInProcess), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.selectWidgetData$ = this.store.pipe(select(selectWidgetData), takeUntil(this.destroy$)); - this.selectWidgetTheme$ = this.store.pipe(select(selectWidgetTheme), takeUntil(this.destroy$)); + effect(() => { + const dark = this.themeService.isDark$(); + this.reapplyInjectedButtonTheme(dark); + }); + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes['authToken']) this._authToken$.set(this.authToken); + if (changes['type']) this._type$.set(this.type); + if (changes['theme']) this.themeService.setInputTheme(this.theme); } ngOnInit() { - const prefersDark = window.matchMedia('(prefers-color-scheme: dark)'); - prefersDark.addEventListener('change', (event) => { - this.theme = event?.matches ? Theme.DARK : Theme.LIGHT; - }); - if (!this.theme) { - this.theme = prefersDark.matches ? Theme.DARK : Theme.LIGHT; - } - this.selectWidgetTheme$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((theme) => { - if (theme?.ui_preferences?.theme !== Theme.SYSTEM) { - this.theme = theme?.ui_preferences.theme || theme; - } - this.loginWidgetData = theme?.registerState; - this.version = theme?.ui_preferences?.version || 'v1'; - this.input_fields = theme?.ui_preferences?.input_fields || 'top'; - this.show_social_login_icons = theme?.ui_preferences?.icons || false; - this.isCreateAccountTextAppended = theme?.ui_preferences?.create_account_link || false; - this.dialogBorderRadius = this.getBorderRadiusCssValue(theme?.ui_preferences?.border_radius); - }); - if (this.type === 'subscription') { + this._authToken$.set(this.authToken); + this._type$.set(this.type); + this.themeService.setInputTheme(this.theme); + this.store + .pipe(select(selectWidgetTheme), filter(Boolean), takeUntil(this.destroy$)) + .subscribe((theme: any) => { + if (theme?.ui_preferences?.theme !== WidgetTheme.System) { + this.themeService.setThemeOverride(theme?.ui_preferences?.theme || theme); + } + this.loginWidgetData = theme?.registerState; + this.version = theme?.ui_preferences?.version || 'v1'; + this.input_fields = theme?.ui_preferences?.input_fields || 'top'; + this.show_social_login_icons = theme?.ui_preferences?.icons || false; + this.isCreateAccountTextAppended = theme?.ui_preferences?.create_account_link || false; + this.dialogBorderRadius = this.getBorderRadiusCssValue(theme?.ui_preferences?.border_radius); + }); + if (this.type === PublicScriptType.Subscription) { // Load subscription plans first this.store.dispatch(getSubscriptionPlans({ referenceId: this.referenceId, authToken: this.authToken })); this.store.pipe(select(subscriptionPlansData), takeUntil(this.destroy$)).subscribe((subscriptionPlans) => { @@ -173,7 +221,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy this.subscriptionPlans = subscriptionPlans.data; } if (this.isPreview) { - this.show$ = of(true); + this.show.set(true); } else { this.toggleSendOtp(true); } @@ -182,7 +230,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy // Fallback timeout in case subscription plans don't load setTimeout(() => { if (this.isPreview) { - this.show$ = of(true); + this.show.set(true); } else if (!this.subscriptionPlans || this.subscriptionPlans.length === 0) { this.toggleSendOtp(true); } @@ -195,34 +243,46 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } this.loadExternalFonts(); - this.store.dispatch( - getWidgetData({ - referenceId: this.referenceId, - payload: this.otherData, - }) - ); - this.selectWidgetData$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((widgetData) => { - this.otpWidgetData = widgetData?.find((widget) => widget?.service_id === FeatureServiceIds.Msg91OtpService); - if (this.otpWidgetData) { - this.otpWidgetService.setWidgetConfig( - this.otpWidgetData?.widget_id, - this.otpWidgetData?.token_auth, - this.otpWidgetData?.state + if (!this.authToken) { + if (this.referenceId) { + this.store.dispatch( + getWidgetData({ + referenceId: this.referenceId, + payload: this.otherData, + }) ); - this.otpWidgetService.loadScript(); + } else { + console.error('Reference Id is undefined ! Please provide referenceId in the widget configuration.'); } - if (!this.loginWidgetData) { - this.loginWidgetData = widgetData?.find( - (widget) => widget?.service_id === FeatureServiceIds.PasswordAuthentication + } + this.store + .pipe(select(selectWidgetData), filter(Boolean), takeUntil(this.destroy$)) + .subscribe((widgetData: any[]) => { + this.otpWidgetData = widgetData?.find( + (widget) => widget?.service_id === FeatureServiceIds.Msg91OtpService ); - } - }); + if (this.otpWidgetData) { + this.otpWidgetService.setWidgetConfig( + this.otpWidgetData?.widget_id, + this.otpWidgetData?.token_auth, + this.otpWidgetData?.state + ); + this.otpWidgetService.loadScript(); + } + if (!this.loginWidgetData) { + this.loginWidgetData = widgetData?.find( + (widget) => widget?.service_id === FeatureServiceIds.PasswordAuthentication + ); + } + }); this.otpWidgetService.otpWidgetToken.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((token) => { this.hitCallbackUrl(this.otpWidgetData.callbackUrl, { state: this.otpWidgetData?.state, code: token }); }); } ngOnDestroy() { + this.dialogPortalRef?.detach(); + this.dialogPortalRef = null; if (this.referenceElement) { this.clearSubscriptionPlans(this.referenceElement); } @@ -232,6 +292,22 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy super.ngOnDestroy(); } + public closeOverlayDialog(): void { + this.dialogPortalRef?.detach(); + this.dialogPortalRef = null; + this.ngZone.run(() => { + this.showRegistration.set(false); + this.showForgotPassword.set(false); + this.otpWidgetService.openLogin(false); + this.otpWidgetService.closeForgotPassword(); + if (this.referenceElement) { + this.show.set(false); + } + this.cameFromLogin = false; + this.cameFromSendOtpCenter = false; + }); + } + private loadExternalFonts() { const node = document.querySelector('proxy-auth')?.shadowRoot; const styleElement = document.createElement('link'); @@ -249,36 +325,41 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy public toggleSendOtp(intial: boolean = false) { this.referenceElement = document.getElementById(this.referenceId); if (!this.referenceElement) { - this.show$.pipe(take(1)).subscribe((res) => { - this.ngZone.run(() => { - if (res) { - this.animate = true; - this.setShowLogin(false); - setTimeout(() => { - this.show$ = of(!res); - this.animate = false; - }, 300); - } else { - this.show$ = of(!res); - } - }); + this.ngZone.run(() => { + const current = this.show(); + if (current) { + this.animate.set(true); + this.setShowLogin(false); + setTimeout(() => { + this.show.set(false); + this.animate.set(false); + }, 300); + } else { + this.show.set(true); + } }); } else { this.setShowLogin(false); this.isUserProxyContainer = false; - this.show$ = of(false); - this.animate = false; + this.show.set(false); + this.animate.set(false); this.createAccountTextAppended = false; if (intial) { - if (this.type === 'subscription') { + if (this.type === PublicScriptType.Subscription) { if (!this.isPreview && this.referenceElement) { this.appendSubscriptionButton(this.referenceElement); } } else { this.showSkeleton = true; - this.appendSkeletonLoader(this.referenceElement, 1); + this.domBuilder.appendSkeletonLoader(this.renderer, this.referenceElement); this.addButtonsToReferenceElement(this.referenceElement); + setTimeout(() => { + if (this.showSkeleton) { + this.showSkeleton = false; + this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer, this.referenceElement); + } + }, 10000); } } } @@ -357,552 +438,22 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy }); } - // Method to disable Angular subscription component - public disableAngularSubscription(): void { - this.type = 'custom-subscription'; - } - private createSubscriptionCenterHTML(): string { - const plans = this.subscriptionPlans || []; - - if (plans.length === 0) { - return ` -
    -
    -
    - No subscription plans available -
    -
    -
    - `; - } - - const plansHTML = plans.map((plan) => this.createPlanCardHTML(plan)).join(''); - - const finalHTML = ` -
    -
    -
    - ${plansHTML} -
    -
    -
    - `; - - return finalHTML; - } - - private createPlanCardHTML(plan: any): string { - // Map the hardcoded JSON structure to the expected format - const isPopular = plan.plan_meta?.highlight_plan || false; - const popularClass = isPopular ? 'popular' : ''; - const selectedClass = plan.isSelected ? 'selected' : ''; - const highlightedClass = isPopular ? 'highlighted' : ''; - - const popularBadge = plan.plan_meta?.tag ? `` : ''; - - // Extract price value and currency from "1000 USD" - const priceMatch = plan.plan_price?.match(/(\d+)\s+(.+)/); - const priceValue = priceMatch ? priceMatch[1] : '0'; - const currency = priceMatch ? priceMatch[2] : 'USD'; - - const metricsHTML = - plan.plan_meta?.metrics && plan.plan_meta.metrics.length > 0 - ? ` -
    -

    Included

    -
    - ${plan.plan_meta.metrics.map((metric) => `
    ${metric}
    `).join('')} -
    -
    - ` - : ''; - - const featuresHTML = - (plan.plan_meta?.features?.included && plan.plan_meta.features.included.length > 0) || - (plan.plan_meta?.features?.notIncluded && plan.plan_meta.features.notIncluded.length > 0) - ? ` -
    -

    Features

    -
      - ${ - plan.plan_meta.features.included - ? plan.plan_meta.features.included - .map( - (feature) => ` -
    • - - - - - - ${feature} -
    • - ` - ) - .join('') - : '' - } - ${ - plan.plan_meta.features.notIncluded - ? plan.plan_meta.features.notIncluded - .map( - (feature) => ` -
    • - - - - - - ${feature} -
    • - ` - ) - .join('') - : '' - } -
    -
    - ` - : ''; - - const extraFeaturesHTML = - plan.plan_meta?.extra && plan.plan_meta.extra.length > 0 - ? ` -
    -

    Extra

    -
      - ${plan.plan_meta.extra - .map( - (extraFeature) => ` -
    • - - - - - - ${extraFeature} -
    • - ` - ) - .join('')} -
    -
    - ` - : ''; - - const isDisabled = !!plan.isSubscribed; - const buttonHTML = ` - - `; - - return ` -
    - ${popularBadge} -
    -

    ${plan.plan_name}

    -
    -
    - ${priceValue} - ${currency} -
    -
    - ${buttonHTML} -
    -
    - ${metricsHTML} - ${featuresHTML} - ${extraFeaturesHTML} -
    - `; + return this.subscriptionRenderer.buildContainerHTML( + this.subscriptionPlans || [], + this.themeService.isDark(), + this.isLogin + ); } - /** - * Create a plan card element - */ - - /** - * Add CSS styles for subscription plans - */ private addSubscriptionStyles(): void { - // Check if styles are already added - if (document.getElementById('subscription-styles')) { - return; - } - - const style = this.renderer.createElement('style'); - style.id = 'subscription-styles'; - style.textContent = ` - @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); - - /* Bootstrap-like utility classes */ - .position-relative { position: relative !important; } - .d-flex { display: flex !important; } - .d-block { display: block !important; } - .flex-row { flex-direction: row !important; } - .flex-column { flex-direction: column !important; } - .align-items-center { align-items: center !important; } - .align-items-stretch { align-items: stretch !important; } - .justify-content-start { justify-content: flex-start !important; } - .justify-content-between { justify-content: space-between !important; } - .w-100 { width: 100% !important; } - .p-0 { padding: 0 !important; } - .p-3 { padding: 1rem !important; } - .pt-3, .py-3 { padding-top: 1rem !important; } - .pb-3, .py-3 { padding-bottom: 1rem !important; } - .m-0 { margin: 0 !important; } - .mt-0, .my-0 { margin-top: 0 !important; } - .mb-0, .my-0 { margin-bottom: 0 !important; } - .mb-2 { margin-bottom: 0.5rem !important; } - .mb-3 { margin-bottom: 1rem !important; } - .mb-4 { margin-bottom: 1.5rem !important; } - .my-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; } - .text-center { text-align: center !important; } - .text-left { text-align: left !important; } - .gap-1 { gap: 0.25rem !important; } - .gap-2 { gap: 0.5rem !important; } - .gap-3 { gap: 1rem !important; } - .gap-4 { gap: 1.5rem !important; } - .gap-5 { gap: 2rem !important; } - - - - /* Subscription Plans Styles */ -.subscription-plans-container { - flex: 1; - display: flex; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; - padding: 20px; - min-height: auto; - overflow-y: visible; - font-family: 'Outfit', sans-serif; -} - -.plans-grid { - gap: 20px; - max-width: 100%; - margin: 0; - align-items: flex-start; - padding: 20px 0 0 20px; - overflow-x: auto; - overflow-y: visible; - } - - .plans-grid::-webkit-scrollbar { - height: 8px; - } - - .plans-grid::-webkit-scrollbar-track { - background: #f1f1f1; - border-radius: 4px; - } - - .plans-grid::-webkit-scrollbar-thumb { - background: #c1c1c1; - border-radius: 4px; - } - - .plans-grid::-webkit-scrollbar-thumb:hover { - background: #a8a8a8; - } - - @media (max-width: 1200px) { - .plans-grid { - gap: 15px; - padding: 15px; - } - } - - @media (max-width: 768px) { - .plans-grid { - flex-direction: column; - align-items: center; - gap: 20px; - overflow-x: visible; - overflow-y: auto; - } -} - - /* Plan Card Styles */ -.plan-card { - background: ${this.theme === Theme.DARK ? 'transparent' : '#ffffff'}; - border: ${this.theme === Theme.DARK ? '1px solid #e6e6e6' : '2px solid #e6e6e6'}; - border-radius: 4px; - padding: 26px 24px; - box-shadow: none; - min-width: 290px; - max-width: 350px; - width: 350px; - flex: 1; - justify-content: flex-start; - min-height: auto; - max-height: none; - overflow: visible; - min-height: 348px; - font-family: 'Outfit', sans-serif; - position: relative; - margin-top :30px - - } - - .plan-card.highlighted { - border: ${this.theme === Theme.DARK ? '2px solid #ffffff' : '2px solid #000000'}; - box-shadow: 0 0 0 0px #000000 !important; - } - - .plan-card:hover { - box-shadow: none; - } - - - @media (max-width: 768px) { - .plan-card { - min-width: 50%; - max-width: 400px; - width: 100%; - padding: 30px 20px; - } - } - - /* Popular Badge */ -.popular-badge { - position: absolute; - top: -12px; - right: 20px; - background: #4d4d4d; - color: #ffffff; - padding: 6px 16px; - border-radius: 20px; - font-size: 12px; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.5px; - z-index: 100; - transition: all 0.3s ease; - pointer-events: none; - } - - /* Popular badge stays in place on hover */ - .plan-card:hover .popular-badge { - z-index: 101; - } - - /* For popular cards, badge scales with the card */ - .plan-card.popular:hover .popular-badge { - transform: scale(1.02); - z-index: 101; - } - - /* Plan Title */ -.plan-title { - font-size: 28px; - font-weight: 700; - color: #333333; - } - - @media (max-width: 768px) { - .plan-title { - font-size: 24px; - } -} - - /* Plan Price */ - .plan-price .price-container { - gap: 6px; - } - - .plan-price .price-number { - font-size: 39px; - font-weight: 700; - color: #4d4d4d; - line-height: 1; - } - - @media (max-width: 768px) { - .plan-price .price-number { - font-size: 42px; - } - } - - .plan-price .price-currency { - font-size: 16px; - font-weight: 400; - color: #666666; - line-height: 1; - margin-top: 4px; - margin-left: 4px; - } - - @media (max-width: 768px) { - .plan-price .price-currency { - font-size: 14px; - } - } - - .plan-price .price-period { - font-size: 18px; - color: #666666; - font-weight: 500; - } - - @media (max-width: 768px) { - .plan-price .price-period { - font-size: 16px; - } - } - - /* Included Resources */ - .included-resources .resource-boxes { - margin-top: 6px; - } - - .included-resources .resource-box { - border-radius: 4px; - padding: 4px 2px; - font-size: 14px; - font-weight: 600; - color: #4d4d4d; - text-align: left; - } - - /* Section Title */ -.section-title { - font-size: 18px; - font-weight: 600; - color: #333333; - margin: 0 0 8px 0; -} - - /* Plan Features */ -.plan-features { - list-style: none; - } - - .plan-features .feature-item { - padding: 4px 0 !important; - margin-bottom: 0px !important; - color: #4d4d4d; - font-size: 14px; - font-weight: 600; - } - - .plan-features .feature-icon { - font-weight: bold; - font-size: 14px; - color: #22c55e; - } - - /* Plan Button */ -.plan-button { - width: 65%; - padding: 6px 6px; - border-radius: 4px; - font-size: 15px; - font-weight: 400; - font-family: 'Outfit', sans-serif; - cursor: pointer; - transition: all 0.3s ease; - border: 1px solid; - margin-top: auto; - } - - .plan-button.primary { - background: #4d4d4d; - color: #ffffff; - border-color: #4d4d4d; - font-weight: 700; - } - - .plan-button.primary:hover { - background: #333333; - border-color: #333333; - } - - /* Disabled state */ - .plan-button.plan-button-disabled, - .plan-button:disabled { - opacity: 0.7 !important; - cursor: not-allowed !important; - pointer-events: none !important; - } - - .plan-button.secondary { - background: #ffffff; - color: #4d4d4d; - border-color: #4d4d4d; - } - - .plan-button.secondary:hover { - background: #f8f9fa; - } - - @media (max-width: 768px) { - .plan-button { - width: auto; - padding: 8px 28px; - font-size: 16px; - - } -} - - /* Plan Button Hidden */ -.plan-button-hidden { - padding: 16px 32px; - border-radius: 12px; - font-size: 18px; - font-weight: 600; - font-family: 'Outfit', sans-serif; - background: #f8f9fa; - color: #6c757d; - border: 2px solid #e9ecef; - margin-top: auto; - cursor: not-allowed; - } - - @media (max-width: 768px) { - .plan-button-hidden { - padding: 14px 28px; - font-size: 16px; - } -} - *{ - box-sizing: border-box; - font-family: 'Inter', sans-serif; - -webkit-font-smoothing: antialiased; - color: ${this.theme === 'dark' ? '#ffffff' : ''}!important; - } - - /* Divider */ -.divider { - height: 1px; - background: #e0e0e0; -} - - - `; - - document.head.appendChild(style); + this.subscriptionRenderer.injectSubscriptionStyles(this.themeService.isDark()); } private addButtonsToReferenceElement(element): void { - this.selectWidgetData$ + this.store .pipe( + select(selectWidgetData), filter((e) => !!e), take(1) ) @@ -911,16 +462,16 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const totalButtons = widgetDataArray.length; if (totalButtons > 0 && this.showSkeleton) { - this.removeSkeletonLoader(element); - this.appendSkeletonLoader(element, totalButtons); + this.domBuilder.removeSkeletonLoader(this.renderer, element); + this.domBuilder.appendSkeletonLoader(this.renderer, element); } else if (totalButtons > 0 && !this.showSkeleton) { - this.removeSkeletonLoader(element); + this.domBuilder.removeSkeletonLoader(this.renderer, element); } if (totalButtons === 0) { if (this.showSkeleton) { this.showSkeleton = false; - this.removeSkeletonLoader(element); + this.domBuilder.removeSkeletonLoader(this.renderer, element); } if (!this.createAccountTextAppended) { this.appendCreateAccountText(element); @@ -934,7 +485,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const fallbackTimeout = setTimeout(() => { if (this.showSkeleton && !this.createAccountTextAppended) { this.showSkeleton = false; - this.removeSkeletonLoader(element); + this.domBuilder.removeSkeletonLoader(this.renderer, element); const allButtons = element.querySelectorAll('button'); allButtons.forEach((button) => { button.style.visibility = 'visible'; @@ -948,8 +499,8 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const immediateFallback = setTimeout(() => { if (this.showSkeleton && !this.createAccountTextAppended) { this.showSkeleton = false; - this.removeSkeletonLoader(element); - this.forceRemoveAllSkeletonLoaders(); + this.domBuilder.removeSkeletonLoader(this.renderer, element); + this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer, this.referenceElement); const allButtons = element.querySelectorAll('button'); allButtons.forEach((button) => { button.style.visibility = 'visible'; @@ -1060,342 +611,84 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } }); - } - - /** - * Maps ui_preferences.border_radius to CSS value. - * Values: 'none' | 'small' | 'medium' | 'large' -> 0 | 4px | 8px | 12px - */ - private getBorderRadiusCssValue(borderRadius?: string): string { - if (this.version !== SendOtpCenterVersion.V2) { - return '8px'; - } - switch (borderRadius) { - case 'none': - return '0'; - case 'small': - return '4px'; - case 'medium': - return '8px'; - case 'large': - return '12px'; - default: - return '8px'; - } - } - - /** - * Returns primary color from ui_preferences for the current effective theme. - * If theme is 'system', resolves via prefers-color-scheme. - */ - private getPrimaryColorForCurrentTheme(uiPreferences?: { - light_theme_primary_color?: string; - dark_theme_primary_color?: string; - }): string { - const isDark = - this.theme === Theme.DARK || - (this.theme === Theme.SYSTEM && - typeof window !== 'undefined' && - window.matchMedia('(prefers-color-scheme: dark)').matches); - if (this.version !== SendOtpCenterVersion.V2) { - return isDark ? '#FFFFFF' : '#000000'; - } - return isDark - ? uiPreferences?.dark_theme_primary_color ?? '#FFFFFF' - : uiPreferences?.light_theme_primary_color ?? '#000000'; - } - - private createLogoElement(logoUrl: string): HTMLElement | null { - if (!logoUrl) { - return null; - } - const wrapper: HTMLElement = this.renderer.createElement('div'); - wrapper.style.cssText = ` - width: 316px; - display: flex; - justify-content: center; - margin: 0 8px 12px 8px; - `; - const img: HTMLImageElement = this.renderer.createElement('img'); - img.src = logoUrl; - img.alt = 'Logo'; - img.loading = 'lazy'; - img.style.cssText = ` - max-height: 48px; - max-width: 200px; - object-fit: contain; - `; - this.renderer.appendChild(wrapper, img); - return wrapper; - } - - public appendPasswordAuthenticationButtonV2(element, buttonsData, totalButtons: number): void { - if (this.showSkeleton) { - this.showSkeleton = false; - this.removeSkeletonLoader(element); - } - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); - const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); - const primaryColor = this.getPrimaryColorForCurrentTheme(selectWidgetTheme?.ui_preferences); - - const loginContainer: HTMLElement = this.renderer.createElement('div'); - loginContainer.style.cssText = ` - width: 316px; - padding: 0; - margin: 0 8px 16px 8px; - display: flex; - flex-direction: column; - gap: 8px; - box-sizing: border-box; - font-family: 'Inter', sans-serif; - border-radius: ${borderRadius}; - `; - - const title: HTMLElement = this.renderer.createElement('div'); - title.textContent = selectWidgetTheme?.ui_preferences?.title; - title.style.cssText = ` - font-size: 16px; - line-height: 20px; - font-weight: 600; - color: ${primaryColor}; - margin: 0 8px 20px 8px; - text-align: center; - width: 316px; - `; - - const usernameField = this.renderer.createElement('div'); - usernameField.style.cssText = ` - display: flex; - flex-direction: column; - gap: 6px; - `; - - const usernameLabel: HTMLElement = this.renderer.createElement('label'); - usernameLabel.textContent = 'Email or Mobile'; - usernameLabel.style.cssText = ` - font-size: 14px; - font-weight: 500; - color: ${this.theme === 'dark' ? '#e5e7eb' : '#5d6164'}; - `; - - const usernameInput: HTMLInputElement = this.renderer.createElement('input'); - usernameInput.type = 'text'; - usernameInput.placeholder = 'Email or Mobile'; - usernameInput.autocomplete = 'off'; - usernameInput.style.cssText = ` - width: 100%; - height: 44px; - padding: 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; - border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; - font-size: 14px; - outline: none; - box-sizing: border-box; - `; - - const usernameNote: HTMLElement = this.renderer.createElement('p'); - usernameNote.textContent = 'Note: Please enter your Mobile number with the country code (e.g. 91)'; - const noteColor = this.version === 'v2' ? primaryColor : this.theme === 'dark' ? '#e5e7eb' : '#5d6164'; - usernameNote.style.cssText = ` - font-size: 12px; - line-height: 18px; - color: ${noteColor}; - margin: 0; - `; - - const passwordField = this.renderer.createElement('div'); - passwordField.style.cssText = ` - display: flex; - flex-direction: column; - gap: 6px; - position: relative; - `; - - const passwordLabel: HTMLElement = this.renderer.createElement('label'); - passwordLabel.textContent = 'Password'; - passwordLabel.style.cssText = usernameLabel.style.cssText; - - const passwordInputWrapper = this.renderer.createElement('div'); - passwordInputWrapper.style.cssText = ` - position: relative; - display: flex; - align-items: center; - `; - - const passwordInput: HTMLInputElement = this.renderer.createElement('input'); - passwordInput.type = 'password'; - passwordInput.placeholder = 'Password'; - passwordInput.autocomplete = 'off'; - passwordInput.style.cssText = ` - width: 100%; - height: 44px; - padding: 0 44px 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; - border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; - font-size: 14px; - outline: none; - box-sizing: border-box; - `; - this.addPasswordVisibilityToggle(passwordInput, passwordInputWrapper); - this.renderer.appendChild(passwordInputWrapper, passwordInput); - - const hcaptchaWrapper: HTMLElement = this.renderer.createElement('div'); - hcaptchaWrapper.style.cssText = ` - width: 100%; - display: flex; - justify-content: center; - padding: 8px 0; - box-sizing: border-box; - background: ${this.theme === 'dark' ? 'transparent' : 'transparent'}; - `; - const hcaptchaPlaceholder: HTMLElement = this.renderer.createElement('div'); - hcaptchaPlaceholder.style.cssText = ` - display: inline-block; - background: ${this.theme === 'dark' ? 'transparent' : 'transparent'}; - border-radius: ${borderRadius}; - `; - this.renderer.appendChild(hcaptchaWrapper, hcaptchaPlaceholder); - - let hCaptchaToken: string = ''; - let hCaptchaWidgetId: any = null; - - const errorText: HTMLElement = this.renderer.createElement('div'); - errorText.style.cssText = ` - color: #d14343; - font-size: 14px; - min-height: 16px; - display: none; - margin-top: -4px; - `; - - const loginButton: HTMLButtonElement = this.renderer.createElement('button'); - loginButton.textContent = 'Sign in'; - const isV2 = this.version === SendOtpCenterVersion.V2; - const buttonColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_color || '#3f51b5' : '#3f51b5'; - const buttonHoverColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_hover_color || '#303f9f' : '#303f9f'; - const buttonTextColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_text_color || '#ffffff' : '#ffffff'; - loginButton.style.cssText = ` - height: 36px; - padding: 0 12px; - background-color: ${buttonColor}; - color: ${buttonTextColor}; - border: none; - border-radius: ${borderRadius}; - font-size: 14px; - font-weight: 600; - cursor: pointer; - width: 100%; - box-shadow: 0 1px 2px rgba(0,0,0,0.08); - margin-top: 4px; - `; - loginButton.addEventListener('mouseenter', () => { - if (buttonHoverColor) loginButton.style.backgroundColor = buttonHoverColor; - }); - loginButton.addEventListener('mouseleave', () => { - if (buttonColor) loginButton.style.backgroundColor = buttonColor; - }); - - const forgotPasswordWrapper: HTMLElement = this.renderer.createElement('div'); - forgotPasswordWrapper.style.cssText = ` - width: 100%; - display: flex; - justify-content: flex-end; - margin-top: 4px; - `; - const forgotPasswordLink: HTMLAnchorElement = this.renderer.createElement('a'); - forgotPasswordLink.href = 'javascript:void(0)'; - forgotPasswordLink.textContent = 'Forgot Password?'; - forgotPasswordLink.style.cssText = ` - font-size: 13px; - font-weight: 400; - color: #007BFF; - text-decoration: none; - `; - - // Forgot password click handler - opens the dialog with forgot password flow - forgotPasswordLink.addEventListener('click', () => { - const userValue = usernameInput.value?.trim() || ''; - this.openForgotPasswordDialog(userValue); - }); - this.renderer.appendChild(forgotPasswordWrapper, forgotPasswordLink); - - const resetHCaptcha = () => { - const instance = this.getHCaptchaInstance(); - if (instance && hCaptchaWidgetId !== null && hCaptchaWidgetId !== undefined) { - instance.reset(hCaptchaWidgetId); - } - hCaptchaToken = ''; - }; - - const renderHCaptcha = () => { - const instance = this.getHCaptchaInstance(); - if (!instance || !environment.hCaptchaSiteKey) { - this.setInlineLoginError(errorText, 'Unable to load hCaptcha. Please refresh and try again.'); - return; - } - hcaptchaPlaceholder.innerHTML = ''; - hCaptchaWidgetId = instance.render(hcaptchaPlaceholder, { - sitekey: environment.hCaptchaSiteKey, - theme: this.theme === 'dark' ? 'dark' : 'light', - callback: (token: string) => { - hCaptchaToken = token; - this.setInlineLoginError(errorText, ''); - }, - 'expired-callback': () => { - hCaptchaToken = ''; - }, - 'error-callback': () => { - hCaptchaToken = ''; - this.setInlineLoginError(errorText, 'hCaptcha verification failed. Please retry.'); - }, - }); - }; + } - this.ensureHCaptchaScriptLoaded(renderHCaptcha); + /** + * Maps ui_preferences.border_radius to CSS value. + * Values: 'none' | 'small' | 'medium' | 'large' -> 0 | 4px | 8px | 12px + */ + private getBorderRadiusCssValue(borderRadius?: string): string { + if (this.version !== WidgetVersion.V2) { + return '8px'; + } + switch (borderRadius) { + case 'none': + return '0'; + case 'small': + return '4px'; + case 'medium': + return '8px'; + case 'large': + return '12px'; + default: + return '8px'; + } + } - const submit = () => - this.handlePasswordAuthenticationLogin( - buttonsData, - usernameInput, - passwordInput, - errorText, - loginButton, - () => hCaptchaToken, - resetHCaptcha - ); + /** + * Returns primary color from ui_preferences for the current effective theme. + * If theme is 'system', resolves via prefers-color-scheme. + */ + private getPrimaryColorForCurrentTheme(uiPreferences?: { + light_theme_primary_color?: string; + dark_theme_primary_color?: string; + }): string { + const isDark = this.themeService.isDark(); + if (this.version !== WidgetVersion.V2) { + return isDark ? '#FFFFFF' : '#000000'; + } + return isDark + ? uiPreferences?.dark_theme_primary_color ?? '#FFFFFF' + : uiPreferences?.light_theme_primary_color ?? '#000000'; + } - loginButton.addEventListener('click', submit); - [usernameInput, passwordInput].forEach((input) => - input.addEventListener('keydown', (event: KeyboardEvent) => { - if (event.key === 'Enter') { - event.preventDefault(); - submit(); - } - }) - ); + public appendPasswordAuthenticationButtonV2(element: HTMLElement, buttonsData: any, totalButtons: number): void { + if (this.showSkeleton) { + this.showSkeleton = false; + this.domBuilder.removeSkeletonLoader(this.renderer, element); + } + const selectWidgetTheme = this.widgetTheme() as any; + const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); + const primaryColor = this.getPrimaryColorForCurrentTheme(selectWidgetTheme?.ui_preferences); + const isV2 = this.version === WidgetVersion.V2; + const buttonColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_color || '#3f51b5' : '#3f51b5'; + const buttonHoverColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_hover_color || '#303f9f' : '#303f9f'; + const buttonTextColor = isV2 ? selectWidgetTheme?.ui_preferences?.button_text_color || '#ffffff' : '#ffffff'; - // this.renderer.appendChild(usernameField, usernameLabel); - this.renderer.appendChild(usernameField, usernameInput); - this.renderer.appendChild(usernameField, usernameNote); - // this.renderer.appendChild(passwordField, passwordLabel); - this.renderer.appendChild(passwordField, passwordInputWrapper); - this.renderer.appendChild(loginContainer, usernameField); - this.renderer.appendChild(loginContainer, passwordField); - this.renderer.appendChild(loginContainer, forgotPasswordWrapper); - this.renderer.appendChild(loginContainer, hcaptchaWrapper); - this.renderer.appendChild(loginContainer, errorText); - this.renderer.appendChild(loginContainer, loginButton); + const loginContainer: HTMLElement = this.renderer.createElement('div'); + loginContainer.style.cssText = `width:316px;padding:0;margin:0 8px 16px 8px;display:flex;flex-direction:column;gap:8px;box-sizing:border-box;font-family:'Inter',sans-serif;border-radius:${borderRadius};`; - // Position login form based on input_fields setting - const isInputFieldsTop = this.input_fields === 'top'; + const title: HTMLElement = this.renderer.createElement('div'); + title.textContent = selectWidgetTheme?.ui_preferences?.title; + title.style.cssText = `font-size:16px;line-height:20px;font-weight:600;color:${primaryColor};margin:0 8px 20px 8px;text-align:center;width:316px;`; + + const loginButton: HTMLButtonElement = this.renderer.createElement('button'); + loginButton.textContent = 'Sign in'; + loginButton.style.cssText = `height:36px;padding:0 12px;background-color:${buttonColor};color:${buttonTextColor};border:none;border-radius:${borderRadius};font-size:14px;font-weight:600;cursor:pointer;width:100%;box-shadow:0 1px 2px rgba(0,0,0,0.08);margin-top:4px;`; + loginButton.addEventListener('mouseenter', () => { + loginButton.style.backgroundColor = buttonHoverColor; + }); + loginButton.addEventListener('mouseleave', () => { + loginButton.style.backgroundColor = buttonColor; + }); + + const onForgotPassword = (email: string) => this.openForgotPasswordDialog(email); + this.buildLoginFields(loginContainer, buttonsData, loginButton, borderRadius, primaryColor, onForgotPassword); - // Insert logo above the title if logo_url is available + const isInputFieldsTop = this.input_fields === 'top'; const logoUrl = selectWidgetTheme?.ui_preferences?.logo_url; - const logoElement = this.createLogoElement(logoUrl); + const logoElement = this.domBuilder.createLogoElement(this.renderer, logoUrl); + if (logoElement) { if (element.firstChild) { this.renderer.insertBefore(element, logoElement, element.firstChild); @@ -1404,7 +697,6 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } - // Always insert the "Login" title at the very top (after logo if present) const logoOrFirst = logoElement ? logoElement.nextSibling : element.firstChild; if (logoOrFirst) { this.renderer.insertBefore(element, title, logoOrFirst); @@ -1413,7 +705,6 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } if (isInputFieldsTop) { - // input_fields = 'top': Login form (input fields) at top (after title), social buttons below const titleNextSibling = title.nextSibling; if (titleNextSibling) { this.renderer.insertBefore(element, loginContainer, titleNextSibling); @@ -1421,43 +712,12 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy this.renderer.appendChild(element, loginContainer); } } else { - // input_fields = 'bottom': Social buttons at top (after title), login form at bottom this.renderer.appendChild(element, loginContainer); } if (totalButtons > 1) { - const dividerContainer: HTMLElement = this.renderer.createElement('div'); - dividerContainer.setAttribute('data-or-divider', 'true'); - dividerContainer.style.cssText = ` - display: flex; - align-items: center; - margin: 8px 8px 12px 8px; - width: 316px; - `; - const dividerLineLeft: HTMLElement = this.renderer.createElement('div'); - dividerLineLeft.style.cssText = ` - flex: 1; - height: 1px; - background-color: #e0e0e0; - `; - const dividerText: HTMLElement = this.renderer.createElement('span'); - dividerText.textContent = 'Or continue with'; - dividerText.style.cssText = ` - padding: 0 12px; - font-size: 12px; - color: ${primaryColor}; - font-weight: 500; - letter-spacing: 0.5px; - `; - const dividerLineRight: HTMLElement = this.renderer.createElement('div'); - dividerLineRight.style.cssText = dividerLineLeft.style.cssText; - - this.renderer.appendChild(dividerContainer, dividerLineLeft); - this.renderer.appendChild(dividerContainer, dividerText); - this.renderer.appendChild(dividerContainer, dividerLineRight); - + const dividerContainer = this.domBuilder.createOrDivider(this.renderer, primaryColor); if (isInputFieldsTop) { - // input_fields = 'top': OR divider goes after login container const nextSibling = loginContainer.nextSibling; if (nextSibling) { this.renderer.insertBefore(element, dividerContainer, nextSibling); @@ -1465,7 +725,6 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy this.renderer.appendChild(element, dividerContainer); } } else { - // input_fields = 'bottom': OR divider goes before login container this.renderer.insertBefore(element, dividerContainer, loginContainer); } } @@ -1485,16 +744,16 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const hCaptchaToken = getHCaptchaToken(); if (!username || !password) { - this.setInlineLoginError(errorText, 'Email/Mobile and password are required.'); + this.domBuilder.setInlineError(errorText, 'Email/Mobile and password are required.'); return; } if (!hCaptchaToken) { - this.setInlineLoginError(errorText, 'Please complete the hCaptcha verification.'); + this.domBuilder.setInlineError(errorText, 'Please complete the hCaptcha verification.'); return; } - this.setInlineLoginError(errorText, ''); + this.domBuilder.setInlineError(errorText, ''); const originalText = loginButton.textContent || 'Login'; loginButton.disabled = true; loginButton.textContent = 'Please wait...'; @@ -1512,7 +771,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy loginButton.textContent = originalText; if (res?.hasError) { - this.setInlineLoginError(errorText, res?.errors?.[0] || 'Unable to login. Please try again.'); + this.domBuilder.setInlineError(errorText, res?.errors?.[0] || 'Unable to login. Please try again.'); resetHCaptcha(); return; } @@ -1534,7 +793,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy return; } - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, error?.error?.errors?.[0] || 'Login failed. Please check your details and try again.' ); @@ -1544,63 +803,19 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy ); } - private setInlineLoginError(errorText: HTMLElement, message: string): void { - errorText.textContent = message; - errorText.style.display = message ? 'block' : 'none'; - } - - private addPasswordVisibilityToggle(input: HTMLInputElement, container: HTMLElement): void { - let visible = false; - const toggleBtn: HTMLButtonElement = this.renderer.createElement('button'); - toggleBtn.type = 'button'; - toggleBtn.style.cssText = ` - position: absolute; - right: 12px; - top: 50%; - transform: translateY(-50%); - border: none; - background: transparent; - cursor: pointer; - padding: 0; - margin: 0; - width: 20px; - height: 20px; - display: flex; - align-items: center; - justify-content: center; - z-index: 1; - `; - - const hiddenIcon = ``; - const visibleIcon = ``; - - const renderIcon = () => { - toggleBtn.innerHTML = visible ? visibleIcon : hiddenIcon; - }; - renderIcon(); - - toggleBtn.addEventListener('click', () => { - visible = !visible; - input.type = visible ? 'text' : 'password'; - renderIcon(); - }); - - this.renderer.appendChild(container, toggleBtn); - } - /** * Opens the forgot password dialog */ private openForgotPasswordDialog(prefillEmail: string = ''): void { - // Open the dialog this.ngZone.run(() => { - this.show$ = of(true); - // Signal to send-otp-center to open in forgot password mode + this.showForgotPassword.set(true); this.otpWidgetService.openForgotPassword(prefillEmail); + this.cdr.detectChanges(); + setTimeout(() => { + if (this.dialogPortalEl?.nativeElement && !this.dialogPortalRef) { + this.dialogPortalRef = this.widgetPortal.attach(this.dialogPortalEl.nativeElement); + } + }); }); } @@ -1611,8 +826,9 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy // Clear the login container loginContainer.innerHTML = ''; - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); + const selectWidgetTheme = this.widgetTheme() as any; const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); + const isDarkFP = this.themeService.isDark(); // Create back button const backButton: HTMLButtonElement = this.renderer.createElement('button'); @@ -1642,7 +858,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy font-size: 16px; line-height: 20px; font-weight: 600; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; + color: ${isDarkFP ? '#ffffff' : '#1f2937'}; margin-bottom: 16px; `; @@ -1658,16 +874,16 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const emailInput: HTMLInputElement = this.renderer.createElement('input'); emailInput.type = 'text'; emailInput.placeholder = 'Email or Mobile'; - emailInput.value = prefillEmail; emailInput.autocomplete = 'off'; + emailInput.value = prefillEmail; emailInput.style.cssText = ` width: 100%; height: 44px; padding: 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; + border: ${isDarkFP ? '1px solid #ffffff' : '1px solid #cbd5e1'}; border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; + background: ${isDarkFP ? 'transparent' : '#ffffff'}; + color: ${isDarkFP ? '#ffffff' : '#1f2937'}; font-size: 14px; outline: none; box-sizing: border-box; @@ -1704,11 +920,11 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const handleSendOtp = () => { const userDetails = emailInput.value?.trim(); if (!userDetails) { - this.setInlineLoginError(errorText, 'Email or Mobile is required.'); + this.domBuilder.setInlineError(errorText, 'Email or Mobile is required.'); return; } - this.setInlineLoginError(errorText, ''); + this.domBuilder.setInlineError(errorText, ''); const originalText = sendOtpButton.textContent || 'Send OTP'; sendOtpButton.disabled = true; sendOtpButton.textContent = 'Please wait...'; @@ -1724,7 +940,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy sendOtpButton.textContent = originalText; if (res?.hasError) { - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, res?.errors?.[0] || 'Unable to send OTP. Please try again.' ); @@ -1737,7 +953,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy (error) => { sendOtpButton.disabled = false; sendOtpButton.textContent = originalText; - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, error?.error?.errors?.[0] || 'Failed to send OTP. Please try again.' ); @@ -1769,8 +985,9 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy // Clear the login container loginContainer.innerHTML = ''; - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); + const selectWidgetTheme = this.widgetTheme() as any; const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); + const isDarkCP = this.themeService.isDark(); let remainingSeconds = 15; let timerInterval: any = null; @@ -1804,7 +1021,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy font-size: 16px; line-height: 20px; font-weight: 600; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; + color: ${isDarkCP ? '#ffffff' : '#1f2937'}; margin-bottom: 8px; `; @@ -1812,7 +1029,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const userInfo: HTMLElement = this.renderer.createElement('p'); userInfo.style.cssText = ` font-size: 14px; - color: ${this.theme === 'dark' ? '#e5e7eb' : '#5d6164'}; + color: ${isDarkCP ? '#e5e7eb' : '#5d6164'}; margin: 0 0 8px 0; `; userInfo.innerHTML = `${userDetails} Change`; @@ -1897,10 +1114,10 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy width: 100%; height: 44px; padding: 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; + border: ${isDarkCP ? '1px solid #ffffff' : '1px solid #cbd5e1'}; border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; + background: ${isDarkCP ? 'transparent' : '#ffffff'}; + color: ${isDarkCP ? '#ffffff' : '#1f2937'}; font-size: 14px; outline: none; box-sizing: border-box; @@ -1927,7 +1144,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy 'Password should contain at least one Capital Letter, one Small Letter, one Digit and one Symbol (min 8 characters)'; passwordHint.style.cssText = ` font-size: 12px; - color: ${this.theme === 'dark' ? '#9ca3af' : '#6b7280'}; + color: ${isDarkCP ? '#9ca3af' : '#6b7280'}; margin: -8px 0 12px 0; `; @@ -1966,30 +1183,30 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const confirmPassword = confirmPasswordInput.value; if (!otp) { - this.setInlineLoginError(errorText, 'OTP is required.'); + this.domBuilder.setInlineError(errorText, 'OTP is required.'); return; } if (!password) { - this.setInlineLoginError(errorText, 'Password is required.'); + this.domBuilder.setInlineError(errorText, 'Password is required.'); return; } if (password.length < 8) { - this.setInlineLoginError(errorText, 'Password must be at least 8 characters.'); + this.domBuilder.setInlineError(errorText, 'Password must be at least 8 characters.'); return; } if (!PASSWORD_REGEX.test(password)) { - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, 'Password should contain at least one Capital Letter, one Small Letter, one Digit and one Symbol.' ); return; } if (password !== confirmPassword) { - this.setInlineLoginError(errorText, 'Passwords do not match.'); + this.domBuilder.setInlineError(errorText, 'Passwords do not match.'); return; } - this.setInlineLoginError(errorText, ''); + this.domBuilder.setInlineError(errorText, ''); const originalText = submitButton.textContent || 'Submit'; submitButton.disabled = true; submitButton.textContent = 'Please wait...'; @@ -2008,7 +1225,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy submitButton.textContent = originalText; if (res?.hasError) { - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, res?.errors?.[0] || 'Unable to reset password. Please try again.' ); @@ -2022,7 +1239,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy (error) => { submitButton.disabled = false; submitButton.textContent = originalText; - this.setInlineLoginError( + this.domBuilder.setInlineError( errorText, error?.error?.errors?.[0] || 'Failed to reset password. Please try again.' ); @@ -2056,159 +1273,103 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy this.buildLoginFormContent(loginContainer, buttonsData); } - /** - * Builds the login form content within the given container - */ private buildLoginFormContent(loginContainer: HTMLElement, buttonsData: any): void { - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); + const selectWidgetTheme = this.widgetTheme() as any; const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); const primaryColor = this.getPrimaryColorForCurrentTheme(selectWidgetTheme?.ui_preferences); const title: HTMLElement = this.renderer.createElement('div'); title.textContent = 'Login'; - title.style.cssText = ` - font-size: 16px; - line-height: 20px; - font-weight: 600; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; - margin-bottom: 0px; - text-align: center; - `; + title.style.cssText = `font-size:16px;line-height:20px;font-weight:600;color:${ + this.themeService.isDark() ? '#ffffff' : '#1f2937' + };margin-bottom:0;text-align:center;`; - const usernameField = this.renderer.createElement('div'); - usernameField.style.cssText = ` - display: flex; - flex-direction: column; - gap: 6px; - `; + const loginButton: HTMLButtonElement = this.renderer.createElement('button'); + loginButton.textContent = 'Login'; + loginButton.style.cssText = `height:44px;padding:0 12px;background-color:#3f51b5;color:#ffffff;border:none;border-radius:${borderRadius};font-size:14px;font-weight:600;cursor:pointer;width:100%;box-shadow:0 1px 2px rgba(0,0,0,0.08);margin-top:4px;`; + + const onForgotPassword = (email: string) => this.showForgotPasswordForm(loginContainer, buttonsData, email); + + const logoUrl = selectWidgetTheme?.ui_preferences?.logo_url; + const logoElement = this.domBuilder.createLogoElement(this.renderer, logoUrl); + if (logoElement) { + this.renderer.appendChild(loginContainer, logoElement); + } + this.renderer.appendChild(loginContainer, title); + + this.buildLoginFields(loginContainer, buttonsData, loginButton, borderRadius, primaryColor, onForgotPassword); + } + + private buildLoginFields( + loginContainer: HTMLElement, + buttonsData: any, + loginButton: HTMLButtonElement, + borderRadius: string, + primaryColor: string, + onForgotPassword: (email: string) => void + ): void { + const isDark = this.themeService.isDark(); + const noteColor = this.version === 'v2' ? primaryColor : isDark ? '#e5e7eb' : '#5d6164'; + + const usernameField: HTMLElement = this.renderer.createElement('div'); + usernameField.style.cssText = 'display:flex;flex-direction:column;gap:6px;'; const usernameInput: HTMLInputElement = this.renderer.createElement('input'); usernameInput.type = 'text'; usernameInput.placeholder = 'Email or Mobile'; usernameInput.autocomplete = 'off'; - usernameInput.style.cssText = ` - width: 100%; - height: 44px; - padding: 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; - border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; - font-size: 14px; - outline: none; - box-sizing: border-box; - `; + usernameInput.style.cssText = `width:100%;height:44px;padding:0 16px;border:1px solid ${ + isDark ? '#ffffff' : '#cbd5e1' + };border-radius:${borderRadius};background:${isDark ? 'transparent' : '#ffffff'};color:${ + isDark ? '#ffffff' : '#1f2937' + };font-size:14px;outline:none;box-sizing:border-box;`; const usernameNote: HTMLElement = this.renderer.createElement('p'); usernameNote.textContent = 'Note: Please enter your Mobile number with the country code (e.g. 91)'; - const noteColor = this.version === 'v2' ? primaryColor : this.theme === 'dark' ? '#e5e7eb' : '#5d6164'; - usernameNote.style.cssText = ` - font-size: 12px; - line-height: 18px; - color: ${noteColor}; - margin: 0; - `; + usernameNote.style.cssText = `font-size:12px;line-height:18px;color:${noteColor};margin:0;`; - const passwordField = this.renderer.createElement('div'); - passwordField.style.cssText = ` - display: flex; - flex-direction: column; - gap: 6px; - position: relative; - `; + const passwordField: HTMLElement = this.renderer.createElement('div'); + passwordField.style.cssText = 'display:flex;flex-direction:column;gap:6px;position:relative;'; - const passwordInputWrapper = this.renderer.createElement('div'); - passwordInputWrapper.style.cssText = ` - position: relative; - display: flex; - align-items: center; - `; + const passwordInputWrapper: HTMLElement = this.renderer.createElement('div'); + passwordInputWrapper.style.cssText = 'position:relative;display:flex;align-items:center;'; const passwordInput: HTMLInputElement = this.renderer.createElement('input'); passwordInput.type = 'password'; passwordInput.placeholder = 'Password'; passwordInput.autocomplete = 'off'; - passwordInput.style.cssText = ` - width: 100%; - height: 44px; - padding: 0 44px 0 16px; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #cbd5e1'}; - border-radius: ${borderRadius}; - background: ${this.theme === 'dark' ? 'transparent' : '#ffffff'}; - color: ${this.theme === 'dark' ? '#ffffff' : '#1f2937'}; - font-size: 14px; - outline: none; - box-sizing: border-box; - `; - this.addPasswordVisibilityToggle(passwordInput, passwordInputWrapper); + passwordInput.style.cssText = `width:100%;height:44px;padding:0 44px 0 16px;border:1px solid ${ + isDark ? '#ffffff' : '#cbd5e1' + };border-radius:${borderRadius};background:${isDark ? 'transparent' : '#ffffff'};color:${ + isDark ? '#ffffff' : '#1f2937' + };font-size:14px;outline:none;box-sizing:border-box;`; + this.domBuilder.addPasswordVisibilityToggle( + this.renderer, + passwordInput, + passwordInputWrapper, + this.themeService.resolvedTheme() + ); this.renderer.appendChild(passwordInputWrapper, passwordInput); const hcaptchaWrapper: HTMLElement = this.renderer.createElement('div'); - hcaptchaWrapper.style.cssText = ` - width: 100%; - display: flex; - justify-content: center; - padding: 8px 0; - box-sizing: border-box; - background: ${this.theme === 'dark' ? 'transparent' : 'transparent'}; - `; + hcaptchaWrapper.style.cssText = + 'width:100%;display:flex;justify-content:center;padding:8px 0;box-sizing:border-box;'; const hcaptchaPlaceholder: HTMLElement = this.renderer.createElement('div'); - hcaptchaPlaceholder.style.cssText = ` - display: inline-block; - background: ${this.theme === 'dark' ? 'transparent' : 'transparent'}; - border-radius: ${borderRadius}; - `; + hcaptchaPlaceholder.style.cssText = `display:inline-block;border-radius:${borderRadius};`; this.renderer.appendChild(hcaptchaWrapper, hcaptchaPlaceholder); - let hCaptchaToken: string = ''; + let hCaptchaToken = ''; let hCaptchaWidgetId: any = null; - const errorText: HTMLElement = this.renderer.createElement('div'); - errorText.style.cssText = ` - color: #d14343; - font-size: 14px; - min-height: 16px; - display: none; - margin-top: -4px; - `; - - const loginButton: HTMLButtonElement = this.renderer.createElement('button'); - loginButton.textContent = 'Login'; - loginButton.style.cssText = ` - height: 44px; - padding: 0 12px; - background-color: #3f51b5; - color: #ffffff; - border: none; - border-radius: ${borderRadius}; - font-size: 14px; - font-weight: 600; - cursor: pointer; - width: 100%; - box-shadow: 0 1px 2px rgba(0,0,0,0.08); - margin-top: 4px; - `; + const errorText: HTMLElement = this.domBuilder.createErrorElement(this.renderer); const forgotPasswordWrapper: HTMLElement = this.renderer.createElement('div'); - forgotPasswordWrapper.style.cssText = ` - width: 100%; - display: flex; - justify-content: flex-end; - margin-top: 4px; - `; + forgotPasswordWrapper.style.cssText = 'width:100%;display:flex;justify-content:flex-end;margin-top:4px;'; const forgotPasswordLink: HTMLAnchorElement = this.renderer.createElement('a'); forgotPasswordLink.href = 'javascript:void(0)'; forgotPasswordLink.textContent = 'Forgot Password?'; - forgotPasswordLink.style.cssText = ` - font-size: 13px; - font-weight: 400; - color: #1976d2; - text-decoration: none; - `; - forgotPasswordLink.addEventListener('click', () => { - const userValue = usernameInput.value?.trim() || ''; - this.showForgotPasswordForm(loginContainer, buttonsData, userValue); - }); + forgotPasswordLink.style.cssText = 'font-size:13px;font-weight:400;color:#1976d2;text-decoration:none;'; + forgotPasswordLink.addEventListener('click', () => onForgotPassword(usernameInput.value?.trim() || '')); this.renderer.appendChild(forgotPasswordWrapper, forgotPasswordLink); const resetHCaptcha = () => { @@ -2222,23 +1383,23 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy const renderHCaptcha = () => { const instance = this.getHCaptchaInstance(); if (!instance || !environment.hCaptchaSiteKey) { - this.setInlineLoginError(errorText, 'Unable to load hCaptcha. Please refresh and try again.'); + this.domBuilder.setInlineError(errorText, 'Unable to load hCaptcha. Please refresh and try again.'); return; } hcaptchaPlaceholder.innerHTML = ''; hCaptchaWidgetId = instance.render(hcaptchaPlaceholder, { sitekey: environment.hCaptchaSiteKey, - theme: this.theme === 'dark' ? 'dark' : 'light', + theme: isDark ? WidgetTheme.Dark : WidgetTheme.Light, callback: (token: string) => { hCaptchaToken = token; - this.setInlineLoginError(errorText, ''); + this.domBuilder.setInlineError(errorText, ''); }, 'expired-callback': () => { hCaptchaToken = ''; }, 'error-callback': () => { hCaptchaToken = ''; - this.setInlineLoginError(errorText, 'hCaptcha verification failed. Please retry.'); + this.domBuilder.setInlineError(errorText, 'hCaptcha verification failed. Please retry.'); }, }); }; @@ -2258,20 +1419,14 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy loginButton.addEventListener('click', submit); [usernameInput, passwordInput].forEach((input) => - input.addEventListener('keydown', (event: KeyboardEvent) => { - if (event.key === 'Enter') { - event.preventDefault(); + input.addEventListener('keydown', (e: KeyboardEvent) => { + if (e.key === 'Enter') { + e.preventDefault(); submit(); } }) ); - const logoUrl = selectWidgetTheme?.ui_preferences?.logo_url; - const logoElement = this.createLogoElement(logoUrl); - if (logoElement) { - this.renderer.appendChild(loginContainer, logoElement); - } - this.renderer.appendChild(loginContainer, title); this.renderer.appendChild(usernameField, usernameInput); this.renderer.appendChild(usernameField, usernameNote); this.renderer.appendChild(passwordField, passwordInputWrapper); @@ -2347,8 +1502,8 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy if (this.showSkeleton) { this.showSkeleton = false; - this.removeSkeletonLoader(element); - this.forceRemoveAllSkeletonLoaders(); + this.domBuilder.removeSkeletonLoader(this.renderer, element); + this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer, this.referenceElement); const allButtons = element.querySelectorAll('button'); allButtons.forEach((button) => { @@ -2365,10 +1520,10 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy private appendButton(element, buttonsData): void { if (this.showSkeleton) { this.showSkeleton = false; - this.removeSkeletonLoader(element); + this.domBuilder.removeSkeletonLoader(this.renderer, element); } - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); + const selectWidgetTheme = this.widgetTheme() as any; const borderRadius = this.getBorderRadiusCssValue(selectWidgetTheme?.ui_preferences?.border_radius); const button: HTMLButtonElement = this.renderer.createElement('button'); @@ -2411,6 +1566,8 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } + button.setAttribute('data-paw-button', 'true'); + button.setAttribute('data-paw-icon-only', 'true'); button.style.cssText = ` outline: none; padding: 12px; @@ -2419,7 +1576,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy justify-content: center; font-size: 14px; background-color: transparent; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #d1d5db'}; + border: ${this.themeService.isDark() ? '1px solid #ffffff' : '1px solid #d1d5db'}; border-radius: ${borderRadius}; cursor: pointer; visibility: ${isOtpButton ? 'hidden' : 'visible'}; @@ -2452,6 +1609,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } else { const span: HTMLSpanElement = this.renderer.createElement('span'); + button.setAttribute('data-paw-button', 'true'); button.style.cssText = ` outline: none; padding: 0 16px; @@ -2461,10 +1619,10 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy ${useDiv ? '' : 'gap: 12px;'} font-size: 14px; background-color: transparent; - border: ${this.theme === 'dark' ? '1px solid #ffffff' : '1px solid #000000'}; + border: ${this.themeService.isDark() ? '1px solid #ffffff' : '1px solid #000000'}; border-radius: ${borderRadius}; height: 44px; - color: ${this.theme === 'dark' ? '#ffffff' : '#111827'}; + color: ${this.themeService.isDark() ? '#ffffff' : '#111827'}; margin: 8px 8px 16px 8px; cursor: pointer; width: ${useDiv ? '316px' : '260px'}; @@ -2477,7 +1635,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy ${invertIcon ? 'filter: invert(1);' : ''} `; span.style.cssText = ` - color: ${this.theme === 'dark' ? '#ffffff' : '#111827'}; + color: ${this.themeService.isDark() ? '#ffffff' : '#111827'}; font-weight: 600; `; image.src = buttonsData.icon; @@ -2505,7 +1663,6 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy align-items: center; justify-content: flex-start; gap: 12px; - width: 180px; `; this.renderer.appendChild(contentDiv, image); this.renderer.appendChild(contentDiv, span); @@ -2547,7 +1704,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } this.createAccountTextAppended = true; - const selectWidgetTheme = this.getValueFromObservable(this.selectWidgetTheme$); + const selectWidgetTheme = this.widgetTheme() as any; const primaryColor = this.getPrimaryColorForCurrentTheme(selectWidgetTheme?.ui_preferences); const paragraph: HTMLParagraphElement = this.renderer.createElement('p'); @@ -2608,7 +1765,7 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy (error: HttpErrorResponse) => { if (error?.status === 403) { this.setShowRegistration(true); - this.show$ = of(true); + this.show.set(true); this.registrationViaLogin = false; } } @@ -2620,22 +1777,25 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy if (this.registrationViaLogin) { if (value) { this.setShowLogin(false); - this.show$ = of(true); + this.show.set(true); } else { + // Detach portal when closing + this.dialogPortalRef?.detach(); + this.dialogPortalRef = null; // When closing registration, go back to where user came from if (this.cameFromLogin) { // If user came from login, go back to login this.setShowLogin(true); - this.show$ = of(true); + this.show.set(true); } else if (this.cameFromSendOtpCenter) { // If user came from send-otp-center, go back to send-otp-center - // Only close login without affecting show$ - avoid race condition + // Only close login without affecting show - avoid race condition this.otpWidgetService.openLogin(false); - this.show$ = of(true); + this.show.set(true); } else { // If user came from dynamically appended buttons, just close without opening anything this.setShowLogin(false); - this.show$ = of(false); + this.show.set(false); } // Reset the flags this.cameFromLogin = false; @@ -2644,21 +1804,36 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } else { this.setShowLogin(false); if (this.referenceElement) { - this.show$ = of(value); + this.show.set(value); } } - this.showRegistration.next(value); + this.showRegistration.set(value); if (data) { this.prefillDetails = data; } + if (value) { + this.cdr.detectChanges(); + if (this.dialogPortalEl?.nativeElement && !this.dialogPortalRef) { + this.dialogPortalRef = this.widgetPortal.attach(this.dialogPortalEl.nativeElement); + } + } }); } public setShowLogin(value: boolean) { this.ngZone.run(() => { if (this.referenceElement) { - this.show$ = of(value); + this.show.set(value); } this.otpWidgetService.openLogin(value); + if (value) { + this.cdr.detectChanges(); + if (this.dialogPortalEl?.nativeElement && !this.dialogPortalRef) { + this.dialogPortalRef = this.widgetPortal.attach(this.dialogPortalEl.nativeElement); + } + } else { + this.dialogPortalRef?.detach(); + this.dialogPortalRef = null; + } }); } @@ -2685,123 +1860,6 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } - private appendSkeletonLoader(element, buttonCount: number): void { - const skeletonContainer = this.renderer.createElement('div'); - skeletonContainer.id = 'skeleton-loader'; - skeletonContainer.style.cssText = ` - display: block; - width: 100%; - `; - - for (let i = 0; i < 3; i++) { - const skeletonButton = this.renderer.createElement('div'); - skeletonButton.style.cssText = ` - width: 230px; - height: 40px; - background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); - background-size: 200% 100%; - animation: skeleton-loading 1.5s infinite; - border-radius: 4px; - margin: 8px 8px 16px 8px; - display: block; - box-sizing: border-box; - `; - - if (!document.getElementById('skeleton-animation')) { - const style = this.renderer.createElement('style'); - style.id = 'skeleton-animation'; - style.textContent = ` - @keyframes skeleton-loading { - 0% { background-position: 200% 0; } - 100% { background-position: -200% 0; } - } - `; - document.head.appendChild(style); - } - - this.renderer.appendChild(skeletonContainer, skeletonButton); - } - - this.renderer.appendChild(element, skeletonContainer); - } - - private removeSkeletonLoader(element): void { - const skeletonLoader = element.querySelector('#skeleton-loader'); - if (skeletonLoader) { - this.renderer.removeChild(element, skeletonLoader); - } - - // Also remove any skeleton loaders that might be in the element - const allSkeletonLoaders = element.querySelectorAll('#skeleton-loader'); - allSkeletonLoaders.forEach((loader) => { - if (loader.parentNode) { - this.renderer.removeChild(element, loader); - } - }); - - this.forceRemoveAllSkeletonLoaders(); - } - - private forceRemoveAllSkeletonLoaders(): void { - // Remove skeleton loaders from the reference element - if (this.referenceElement) { - const skeletonLoaders = this.referenceElement.querySelectorAll('#skeleton-loader'); - skeletonLoaders.forEach((loader, index) => { - this.renderer.removeChild(this.referenceElement, loader); - }); - } - - // Also try to remove from document body (fallback) - const globalSkeletonLoaders = document.querySelectorAll('#skeleton-loader'); - if (globalSkeletonLoaders.length > 0) { - globalSkeletonLoaders.forEach((loader, index) => { - if (loader.parentNode) { - loader.parentNode.removeChild(loader); - } - }); - } - } - private formatSubscriptionPlans(plans: any[]): any[] { - return plans.map((plan, index) => ({ - id: plan.plan_name?.toLowerCase().replace(/\s+/g, '-') || `plan-${index}`, - title: plan.plan_name || 'Unnamed Plan', - priceNumber: this.extractPriceValue(plan.plan_price) || 0, - priceText: - this.extractCurrency(plan.plan_price) || - (plan.plan_price ? plan.plan_price.replace(/[\d.]/g, '').trim() : 'Free'), - priceValue: this.extractPriceValue(plan.plan_price), - currency: this.extractCurrency(plan.plan_price), - buttonText: plan.subscribe_button_hidden ? 'Hidden' : 'Get Started', - buttonStyle: 'secondary', // All plans use secondary style - isPopular: false, // No plan is popular by default - isSelected: false, // No plan is selected by default - features: this.getIncludedFeatures(plan.charges), - status: plan.plan_status, - subscribeButtonLink: this.isLogin - ? plan.subscribe_button_link?.replace('{ref_id}', this.referenceId) - : this.loginRedirectUrl, - subscribeButtonHidden: plan.subscribe_button_hidden, - })); - } - private extractPriceValue(priceString: string): number { - if (!priceString) return 0; - const match = priceString.match(/[\d.]+/); - return match ? parseFloat(match[0]) : 0; - } - - private extractCurrency(priceString: string): string { - if (!priceString) return ''; - const match = priceString.match(/[A-Z]{3}/); - return match ? match[0] : ''; - } - private getIncludedFeatures(charges: any[]): string[] { - if (!charges || !Array.isArray(charges)) return []; - return charges.map((charge) => { - const quota = charge.quotas || ''; - const metricName = charge.billable_metric_name || ''; - return `${quota} ${metricName}`.trim(); - }); - } public handleSubscriptionToggle(event?: any): void { if (this.isPreview) { this.toggleSendOtp(); @@ -2848,9 +1906,43 @@ export class SendOtpComponent extends BaseComponent implements OnInit, OnDestroy } } + private reapplyInjectedButtonTheme(dark: boolean): void { + const container = this.referenceElement; + if (!container) return; + + const selectWidgetTheme = this.widgetTheme() as any; + const primaryColor = this.getPrimaryColorForCurrentTheme(selectWidgetTheme?.ui_preferences); + const textColor = dark ? '#ffffff' : '#111827'; + const border = dark ? '1px solid #ffffff' : '1px solid #000000'; + const borderIconOnly = dark ? '1px solid #ffffff' : '1px solid #d1d5db'; + + container.querySelectorAll('button[data-paw-button]').forEach((btn) => { + const isIconOnly = btn.hasAttribute('data-paw-icon-only'); + if (isIconOnly) { + btn.style.border = borderIconOnly; + } else { + btn.style.border = border; + btn.style.color = textColor; + const span = btn.querySelector('span'); + if (span) span.style.color = textColor; + const img = btn.querySelector('img'); + if (img) { + const isApple = img.alt?.toLowerCase().includes('apple'); + const isPassword = btn.dataset['serviceId'] === String(FeatureServiceIds.PasswordAuthentication); + img.style.filter = dark && (isApple || isPassword) ? 'invert(1)' : ''; + } + } + }); + + const createAccountP = container.querySelector('p[data-create-account="true"]'); + if (createAccountP) { + createAccountP.style.setProperty('color', primaryColor, 'important'); + } + } + private shouldInvertIcon(buttonsData: any): boolean { const isApple = buttonsData?.text?.toLowerCase()?.includes('apple'); const isPassword = buttonsData?.service_id === FeatureServiceIds.PasswordAuthentication; - return this.theme === Theme.DARK && (isApple || isPassword); + return this.themeService.isDark() && (isApple || isPassword); } } diff --git a/apps/proxy-auth-element/src/assets/.gitkeep b/apps/36-blocks-widget/src/assets/.gitkeep similarity index 100% rename from apps/proxy-auth-element/src/assets/.gitkeep rename to apps/36-blocks-widget/src/assets/.gitkeep diff --git a/apps/36-blocks-widget/src/assets/scss/component/_form-field.scss b/apps/36-blocks-widget/src/assets/scss/component/_form-field.scss new file mode 100644 index 00000000..8beb483b --- /dev/null +++ b/apps/36-blocks-widget/src/assets/scss/component/_form-field.scss @@ -0,0 +1,118 @@ +// // Default theme changes +// .mat-form-field { +// .mat-form-field-wrapper { +// .mat-form-field-subscript-wrapper { +// margin-top: 5px; +// padding-left: 0px; +// .mat-error { +// font-size: 12px; +// } +// } +// .mat-form-field-flex { +// font-size: 14px; +// line-height: 1.225; +// .mat-form-field-infix { +// .mat-form-field-label-wrapper { +// .mat-form-field-label { +// color: var(--color-common-slate); +// } +// } +// } +// .mat-form-field-infix { +// padding: 5px 0 10px 0 !important; +// .mat-input-element { +// &::-webkit-input-placeholder { +// /* Chrome/Opera/Safari */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &::-moz-placeholder { +// /* Firefox 19+ */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &:-ms-input-placeholder { +// /* IE 10+ */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &:-moz-placeholder { +// /* Firefox 18- */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// } +// // .mat-form-field-label-wrapper { +// // .mat-form-field-required-marker { +// // display: none; +// // } +// // } +// &.mat-form-field-appearance-outline { +// .mat-form-field-outline { +// background-color: var(--color-common-white) !important; +// } +// } +// } +// .mat-form-field-flex { +// .mat-form-field-outline { +// .mat-form-field-outline-start { +// border-radius: var(--border-common-radius-4) 0 0 var(--border-common-radius-4); +// min-width: var(--border-common-radius-4); +// } +// .mat-form-field-outline-end { +// border-radius: 0 var(--border-common-radius-4) var(--border-common-radius-4) 0; +// } +// } +// } +// } +// .mat-form-field-hint-wrapper { +// .mat-hint { +// color: var(--color-common-slate); +// font-size: 12px; +// line-height: 16px; +// } +// } +// } + +// &.no-space { +// .mat-form-field-wrapper { +// padding-bottom: 0px !important; +// } +// } +// } + +// .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +// .mat-form-field-appearance-outline.mat-form-field-can-float +// .mat-input-server:focus +// + .mat-form-field-label-wrapper +// .mat-form-field-label { +// transform: translateY(-15px) scale(0.7) !important; +// } + +// .mat-form-field-appearance-outline .mat-form-field-label { +// top: 18px !important; +// } + +// /* Firefox hide */ +// input[matinput][type='number'] { +// -moz-appearance: textfield; +// } +// /* Chrome, Safari, Edge, Opera */ +// input[matinput]::-webkit-outer-spin-button, +// input[matinput]::-webkit-inner-spin-button { +// -webkit-appearance: none; +// margin: 0; +// } + +// // Material Form Error +// .mat-error { +// font-size: 12px; +// } + +// // Used to display only first mat-error +// mat-error { +// display: none !important; +// &:first-child { +// display: block !important; +// } +// } diff --git a/apps/36-blocks-widget/src/assets/scss/component/_tabs.scss b/apps/36-blocks-widget/src/assets/scss/component/_tabs.scss new file mode 100644 index 00000000..98889204 --- /dev/null +++ b/apps/36-blocks-widget/src/assets/scss/component/_tabs.scss @@ -0,0 +1,24 @@ +// .user-management-tabs { +// .mat-tab-header { +// .mat-tab-labels { +// .mat-tab-label { +// font-weight: 600 !important; +// color: var(--color-common-black) !important; +// opacity: 1 !important; +// &:focus { +// color: var(--color-common-black) !important; +// } +// } +// } +// } +// } + +// .nested-tabs { +// .mat-tab-header { +// .mat-tab-labels { +// .mat-tab-label { +// font-weight: 500 !important; +// } +// } +// } +// } diff --git a/apps/proxy-auth/src/assets/scss/layout/_display.scss b/apps/36-blocks-widget/src/assets/scss/layout/_display.scss similarity index 100% rename from apps/proxy-auth/src/assets/scss/layout/_display.scss rename to apps/36-blocks-widget/src/assets/scss/layout/_display.scss diff --git a/apps/proxy-auth/src/assets/scss/layout/_spacing.scss b/apps/36-blocks-widget/src/assets/scss/layout/_spacing.scss similarity index 100% rename from apps/proxy-auth/src/assets/scss/layout/_spacing.scss rename to apps/36-blocks-widget/src/assets/scss/layout/_spacing.scss diff --git a/apps/36-blocks-widget/src/assets/scss/widget-ui.scss b/apps/36-blocks-widget/src/assets/scss/widget-ui.scss new file mode 100644 index 00000000..2f99dc2a --- /dev/null +++ b/apps/36-blocks-widget/src/assets/scss/widget-ui.scss @@ -0,0 +1,461 @@ +// ============================================================================= +// Widget UI — Shared Utility Classes +// ============================================================================= +// All classes are prefixed with `w-` (widget) to avoid collisions with +// Tailwind's built-in utilities and global styles. +// +// Usage in templates — replace verbose Tailwind strings with these classes: +// +// BEFORE: class="block w-full rounded-lg border border-gray-200 dark:border-gray-600 +// bg-white dark:bg-gray-800 px-3.5 py-2 text-sm text-gray-900 +// dark:text-white placeholder:text-gray-400 dark:placeholder:text-gray-500 +// focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" +// AFTER: class="w-input" +// +// ============================================================================= + +// ── INPUTS ──────────────────────────────────────────────────────────────────── + +// Standard text / email / tel / number input +.w-input { + @apply block w-full rounded-lg border border-gray-200 bg-white px-3.5 py-2 text-sm + text-gray-900 placeholder:text-gray-400 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white placeholder:text-gray-500; + } +} + +// Input with smaller horizontal padding (px-3 variant used in login / register) +.w-input-sm { + @apply block w-full rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm + text-gray-900 placeholder:text-gray-400 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white placeholder:text-gray-500; + } +} + +// Input with right-side icon padding (password / search-with-icon) +.w-input-icon-right { + @apply block w-full rounded-lg border border-gray-200 bg-white px-3.5 py-2 pr-10 text-sm + text-gray-900 placeholder:text-gray-400 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white placeholder:text-gray-500; + } +} + +// Search input (left-padded for icon, webkit cancel button) +.w-input-search { + @apply block w-full rounded-lg border border-gray-200 bg-white py-2 pl-10 pr-3 text-sm + text-gray-900 placeholder:text-gray-400 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 + [&::-webkit-search-cancel-button]:cursor-pointer; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white placeholder:text-gray-500; + } +} + +// Read-only / disabled input (e.g. pre-filled email, mobile) +.w-input-readonly { + @apply block w-full rounded-lg border border-gray-200 bg-white px-3.5 py-2 text-sm + text-gray-500 cursor-not-allowed + read-only:cursor-default read-only:opacity-60; + + .dark & { + @apply border-gray-600 bg-gray-800 text-gray-400; + } +} + +// Textarea +.w-textarea { + @apply block w-full rounded-lg border border-gray-200 bg-white px-3.5 py-2 text-sm + text-gray-900 placeholder:text-gray-400 resize-none + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white placeholder:text-gray-500; + } +} + +// Select (always paired with a wrapper div.relative for the custom caret) +.w-select { + @apply block w-full appearance-none rounded-lg border border-gray-200 bg-white + pl-3.5 pr-9 py-2 text-sm text-gray-900 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white; + } +} + +// OTP single-character box +.w-input-otp { + @apply w-9 h-9 text-center text-sm font-medium rounded-lg border border-gray-200 + bg-white text-gray-900 + focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500; + + .dark & { + @apply border-gray-600 bg-gray-800 text-white; + } +} + +// Form field label +.w-label { + @apply block text-sm font-medium text-gray-900 mb-1.5; + + .dark & { + @apply text-white; + } +} + +// Inline validation error +.w-field-error { + @apply mt-1.5 text-xs text-red-600; + + .dark & { + @apply text-red-400; + } +} + +// ── BUTTONS ─────────────────────────────────────────────────────────────────── + +// Primary action button (indigo, md size) +.w-btn-primary { + @apply inline-flex items-center gap-1.5 rounded-lg bg-indigo-600 px-4 py-2 text-sm + font-semibold text-white shadow-sm cursor-pointer + hover:bg-indigo-500 active:bg-indigo-700 transition-colors duration-150 + disabled:opacity-50 disabled:cursor-not-allowed + focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-500; +} + +// Primary action button (indigo, sm / xs size — used in card headers) +.w-btn-primary-sm { + @apply inline-flex items-center gap-1.5 rounded-lg bg-indigo-600 px-3 py-1.5 text-xs + font-semibold text-white shadow-sm cursor-pointer + hover:bg-indigo-500 active:bg-indigo-700 transition-colors duration-150 + focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-500 + focus-visible:outline-offset-2; +} + +// Secondary / cancel button (outlined, md size) +.w-btn-secondary { + @apply rounded-lg px-4 py-2 text-sm font-semibold text-gray-700 bg-white + ring-1 ring-inset ring-gray-300 cursor-pointer + hover:bg-gray-50 transition-colors duration-150 + disabled:opacity-50 disabled:cursor-not-allowed + focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-500; + + .dark & { + @apply text-gray-300 bg-gray-800 ring-gray-600 hover:bg-gray-700; + } +} + +// Secondary / outlined button (sm / xs size — used in card row actions) +.w-btn-secondary-sm { + @apply shrink-0 rounded-md px-3 py-1.5 text-xs font-semibold text-gray-700 bg-white + ring-1 ring-inset ring-gray-300 cursor-pointer + hover:bg-gray-50 transition-colors duration-150 + disabled:opacity-40 disabled:cursor-not-allowed + focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-500; + + .dark & { + @apply text-gray-200 bg-gray-800 ring-gray-600 hover:bg-gray-700; + } +} + +// Destructive primary button (red, md size — dialog confirm) +.w-btn-danger { + @apply rounded-lg bg-red-600 px-4 py-2 text-sm font-semibold text-white shadow-sm + cursor-pointer hover:bg-red-500 active:bg-red-700 transition-colors duration-150 + focus-visible:outline focus-visible:outline-2 focus-visible:outline-red-500; +} + +// Destructive outlined button (sm — card row remove) +.w-btn-danger-sm { + @apply shrink-0 rounded-md px-3 py-1.5 text-xs font-semibold text-red-600 bg-white + ring-1 ring-inset ring-gray-300 cursor-pointer + hover:bg-red-50 transition-colors duration-150 + focus-visible:outline focus-visible:outline-2 focus-visible:outline-red-500; + + .dark & { + @apply text-red-400 bg-gray-800 ring-gray-600; + &:hover { + background-color: rgb(127 29 29 / 0.2); + } + } +} + +// Icon-only close / dismiss button (dialog header X) +.w-btn-close { + @apply -m-1 p-1 rounded-md text-gray-400 cursor-pointer transition-colors duration-150 + hover:text-gray-500 + focus-visible:outline focus-visible:outline-2 focus-visible:outline-indigo-500; + + .dark & { + @apply text-gray-500 hover:text-gray-300; + } +} + +// Inline spinner (inside buttons while saving) +.w-spinner { + @apply size-4 animate-spin; +} + +// ── CARDS ───────────────────────────────────────────────────────────────────── + +// Standard list card (user / permission rows) +.w-card { + @apply rounded-xl border border-gray-200 bg-white; + + .dark & { + @apply border-gray-700 bg-gray-900; + } +} + +// Section / feature card (with overflow-hidden + shadow, e.g. profile / org cards) +.w-card-section { + @apply rounded-xl border border-gray-200 bg-white overflow-hidden shadow-sm; + + .dark & { + @apply border-gray-700 bg-gray-900; + } +} + +// ── DIALOGS ─────────────────────────────────────────────────────────────────── + +// Semi-transparent backdrop +// z-index: 2147483646 = max-int - 1 to always appear above any client sidebar/overlay +.w-dialog-backdrop { + @apply fixed inset-0 bg-black/50 backdrop-blur-sm; + z-index: 2147483646; + + .dark & { + @apply bg-black/70; + } +} + +// Dialog panel (centered, responsive) +// z-index: 2147483647 = max-int to always appear above any client sidebar/overlay +.w-dialog-panel { + @apply fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 + flex flex-col max-h-[85vh] + rounded-xl bg-white shadow-2xl ring-1 ring-gray-900/5; + z-index: 2147483647; + + .dark & { + @apply bg-gray-900 ring-white/10; + } +} + +// Dialog header bar +.w-dialog-header { + @apply flex items-center justify-between px-6 py-4 border-b border-gray-200; + + .dark & { + @apply border-gray-700; + } +} + +// Dialog title text +.w-dialog-title { + @apply text-base font-semibold text-gray-900; + + .dark & { + @apply text-white; + } +} + +// Dialog scrollable body +.w-dialog-body { + @apply flex-1 overflow-y-auto min-h-0 px-6 py-5 w-full; +} + +// Forgot-password dialog: hide send-otp-center's own absolute close button + h2 heading +// (both are replaced by the w-dialog-header rendered in widget.component.html) +.fp-dialog-content { + > authorization, + > authorization > send-otp-center { + button[aria-label='Close'] { + display: none !important; + } + h2 { + display: none !important; + } + } +} + +// Dialog footer action bar +.w-dialog-footer { + @apply flex items-center justify-end gap-3 px-6 py-4 border-t border-gray-200; + + .dark & { + @apply border-gray-700; + } +} + +// ── SECTION HEADERS ─────────────────────────────────────────────────────────── + +// Page/tab section heading +.w-section-title { + @apply text-xl font-bold text-gray-900; + + .dark & { + @apply text-white; + } +} + +// Page/tab section subtitle +.w-section-subtitle { + @apply mt-1 text-sm text-gray-500; + + .dark & { + @apply text-gray-400; + } +} + +// ── BADGES / TAGS ───────────────────────────────────────────────────────────── + +// Generic neutral badge (role label, "Default" tag) +.w-badge { + @apply inline-flex items-center rounded-md px-2 py-0.5 text-xs font-medium + bg-gray-100 text-gray-600; + + .dark & { + @apply bg-gray-700 text-gray-300; + } +} + +// Status badge — green (active/admin) +.w-badge-green { + @apply hidden sm:inline-flex items-center rounded-md px-2 py-0.5 text-xs font-medium + bg-green-50 text-green-700; + + .dark & { + @apply text-green-400; + background-color: rgb(20 83 45 / 0.3); + } +} + +// ── DIVIDERS ───────────────────────────────────────────────────────────────── + +.w-divider { + @apply border-t border-gray-100; + + .dark & { + @apply border-gray-800; + } +} + +// ── AVATAR / ICON CONTAINERS ───────────────────────────────────────────────── + +// Round user avatar with initials +.w-avatar { + @apply size-10 flex-none rounded-full bg-indigo-100 flex items-center justify-center + text-sm font-semibold text-indigo-700 select-none; + + .dark & { + @apply text-indigo-300; + background-color: rgb(49 46 129 / 0.6); + } +} + +// Square icon container (card / section header icon) +.w-icon-box { + @apply flex size-8 items-center justify-center rounded-lg bg-indigo-100; + + .dark & { + background-color: rgb(49 46 129 / 0.5); + } +} + +// Icon color inside .w-icon-box +.w-icon-box svg { + @apply text-indigo-600; + + .dark & { + @apply text-indigo-400; + } +} + +// ── INLINE LINKS ────────────────────────────────────────────────────────────── + +// Indigo inline text link (e.g. "Forgot password?", "Resend OTP") +.w-link { + @apply text-xs font-medium text-indigo-600 hover:underline cursor-pointer + disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-150; + + .dark & { + @apply text-indigo-400; + } +} + +// ── NAVIGATION ──────────────────────────────────────────────────────────────── + +// Horizontal tab button (top tab bar) +.w-nav-tab { + @apply inline-flex shrink-0 items-center gap-2 border-b-2 px-3 py-3 + text-sm font-medium cursor-pointer whitespace-nowrap transition-colors duration-150; +} + +// Vertical sidebar nav item +.w-nav-item { + @apply flex w-full items-center gap-x-3 rounded-md px-3 py-2 + text-sm leading-6 text-left cursor-pointer transition-colors duration-150; +} + +// ── CHECKBOX GROUP ──────────────────────────────────────────────────────────── + +// Scrollable checkbox list container +.w-checkbox-group { + @apply rounded-lg border border-gray-200 bg-gray-50 + divide-y divide-gray-200 max-h-44 overflow-y-auto; + + .dark & { + @apply border-gray-700 bg-gray-800 divide-gray-700; + } +} + +// Clickable label row inside a checkbox group +.w-checkbox-row { + @apply flex items-center gap-3 px-3.5 py-2.5 cursor-pointer hover:bg-white; + + .dark & { + @apply hover:bg-gray-700; + } +} + +// Checkbox input inside a .w-checkbox-row +.w-checkbox { + @apply size-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500; + + .dark & { + @apply border-gray-500; + } +} + +// ── MISC HELPERS ────────────────────────────────────────────────────────────── + +// Pointer-events-none icon inside a search / input wrapper +.w-search-icon { + @apply pointer-events-none absolute inset-y-0 left-3 h-full w-4 + text-gray-400; + + .dark & { + @apply text-gray-500; + } +} + +// Micro uppercase label (field meta, e.g. "PHONE", "EMAIL") +.w-micro-label { + @apply text-[10px] font-semibold uppercase tracking-wide text-gray-400 mb-0.5; + + .dark & { + @apply text-gray-500; + } +} diff --git a/apps/proxy-auth/src/environments/environment.prod.ts b/apps/36-blocks-widget/src/environments/environment.prod.ts similarity index 100% rename from apps/proxy-auth/src/environments/environment.prod.ts rename to apps/36-blocks-widget/src/environments/environment.prod.ts diff --git a/apps/proxy-auth/src/environments/environment.stage.ts b/apps/36-blocks-widget/src/environments/environment.stage.ts similarity index 100% rename from apps/proxy-auth/src/environments/environment.stage.ts rename to apps/36-blocks-widget/src/environments/environment.stage.ts diff --git a/apps/proxy-auth/src/environments/environment.test.ts b/apps/36-blocks-widget/src/environments/environment.test.ts similarity index 100% rename from apps/proxy-auth/src/environments/environment.test.ts rename to apps/36-blocks-widget/src/environments/environment.test.ts diff --git a/apps/proxy-auth/src/environments/environment.ts b/apps/36-blocks-widget/src/environments/environment.ts similarity index 83% rename from apps/proxy-auth/src/environments/environment.ts rename to apps/36-blocks-widget/src/environments/environment.ts index fdc600da..57b39a62 100644 --- a/apps/proxy-auth/src/environments/environment.ts +++ b/apps/36-blocks-widget/src/environments/environment.ts @@ -11,6 +11,8 @@ export const environment = { baseUrl: 'https://test.proxy.msg91.com', msgMidProxy: '', ...envVariables, + // hCaptcha official test sitekey — whitelisted for localhost, suppresses the "localhost detected" warning + hCaptchaSiteKey: '10000000-ffff-ffff-ffff-000000000001', }; /* diff --git a/apps/proxy-auth-element/src/favicon.ico b/apps/36-blocks-widget/src/favicon.ico similarity index 100% rename from apps/proxy-auth-element/src/favicon.ico rename to apps/36-blocks-widget/src/favicon.ico diff --git a/apps/proxy-auth/src/index.html b/apps/36-blocks-widget/src/index.html similarity index 94% rename from apps/proxy-auth/src/index.html rename to apps/36-blocks-widget/src/index.html index 738252f8..facdee80 100644 --- a/apps/proxy-auth/src/index.html +++ b/apps/36-blocks-widget/src/index.html @@ -2,7 +2,7 @@ - OtpProvider + 36 Blocks Widget diff --git a/apps/36-blocks-widget/src/main.dev.ts b/apps/36-blocks-widget/src/main.dev.ts new file mode 100644 index 00000000..24039cc2 --- /dev/null +++ b/apps/36-blocks-widget/src/main.dev.ts @@ -0,0 +1,60 @@ +import 'zone.js'; +import { bootstrapApplication } from '@angular/platform-browser'; +import { createCustomElement } from '@angular/elements'; +import { provideHttpClient } from '@angular/common/http'; +import { provideAnimations } from '@angular/platform-browser/animations'; +import { provideStore } from '@ngrx/store'; +import { provideEffects } from '@ngrx/effects'; +import { provideStoreDevtools } from '@ngrx/store-devtools'; +import { provideZoneChangeDetection, importProvidersFrom, Injector } from '@angular/core'; +import { NgHcaptchaModule } from 'ng-hcaptcha'; +import { AppComponent } from './app/app.component'; +import { ProxyAuthWidgetComponent } from './app/otp/widget/widget.component'; +import { reducers } from './app/otp/store/app.state'; +import { OtpEffects } from './app/otp/store/effects'; +import { OtpService } from './app/otp/service/otp.service'; +import { OtpUtilityService } from './app/otp/service/otp-utility.service'; +import { OtpWidgetService } from './app/otp/service/otp-widget.service'; +import { WidgetThemeService } from './app/otp/service/widget-theme.service'; +import { ProxyBaseUrls } from '@proxy/models/root-models'; +import { environment } from './environments/environment'; + +import './app/init-verification'; + +bootstrapApplication(AppComponent, { + providers: [ + provideZoneChangeDetection({ eventCoalescing: true }), + provideHttpClient(), + provideAnimations(), + provideStore(reducers, { + runtimeChecks: { + strictStateImmutability: true, + strictActionImmutability: true, + }, + }), + provideEffects([OtpEffects]), + provideStoreDevtools({ maxAge: 25, serialize: true }), + importProvidersFrom(NgHcaptchaModule.forRoot({ siteKey: environment.hCaptchaSiteKey })), + OtpService, + OtpUtilityService, + OtpWidgetService, + WidgetThemeService, + { provide: ProxyBaseUrls.Env, useValue: environment.env }, + { + provide: ProxyBaseUrls.BaseURL, + useValue: environment.apiUrl + environment.msgMidProxy, + }, + { + provide: ProxyBaseUrls.ClientURL, + useValue: environment.apiUrl + environment.msgMidProxy, + }, + ], +}) + .then((appRef) => { + const injector = appRef.injector.get(Injector); + if (!customElements.get('proxy-auth')) { + const el = createCustomElement(ProxyAuthWidgetComponent, { injector }); + customElements.define('proxy-auth', el); + } + }) + .catch((err) => console.error(err)); diff --git a/apps/36-blocks-widget/src/main.ts b/apps/36-blocks-widget/src/main.ts new file mode 100644 index 00000000..e35c5a78 --- /dev/null +++ b/apps/36-blocks-widget/src/main.ts @@ -0,0 +1,70 @@ +import 'zone.js'; +import { createApplication } from '@angular/platform-browser'; +import { createCustomElement } from '@angular/elements'; +import { provideHttpClient } from '@angular/common/http'; +import { provideAnimations } from '@angular/platform-browser/animations'; +import { provideStore } from '@ngrx/store'; +import { provideEffects } from '@ngrx/effects'; +import { provideStoreDevtools } from '@ngrx/store-devtools'; +import { provideZoneChangeDetection, importProvidersFrom } from '@angular/core'; +import { NgHcaptchaModule } from 'ng-hcaptcha'; +import { ProxyAuthWidgetComponent } from './app/otp/widget/widget.component'; +import { reducers } from './app/otp/store/app.state'; +import { OtpEffects } from './app/otp/store/effects'; +import { OtpService } from './app/otp/service/otp.service'; +import { OtpUtilityService } from './app/otp/service/otp-utility.service'; +import { OtpWidgetService } from './app/otp/service/otp-widget.service'; +import { WidgetThemeService } from './app/otp/service/widget-theme.service'; +import { ProxyBaseUrls } from '@proxy/models/root-models'; +import { environment } from './environments/environment'; + +// Side-effect import — registers window.initVerification, showUserManagement, hideUserManagement +import './app/init-verification'; + +// Double-load protection — prevents duplicate Angular app if script is loaded twice +if ((window as any).__proxyAuthLoaded) { + console.warn('[proxy-auth] Script already loaded — skipping bootstrap.'); +} else { + (window as any).__proxyAuthLoaded = true; + + createApplication({ + providers: [ + provideZoneChangeDetection({ eventCoalescing: true }), + provideHttpClient(), + provideAnimations(), + provideStore(reducers, { + runtimeChecks: { + strictStateImmutability: true, + strictActionImmutability: true, + }, + }), + provideEffects([OtpEffects]), + ...(!environment.production ? [provideStoreDevtools({ maxAge: 25, serialize: true })] : []), + // ng-hcaptcha may not expose standalone providers — use importProvidersFrom as safe fallback + importProvidersFrom(NgHcaptchaModule.forRoot({ siteKey: environment.hCaptchaSiteKey })), + OtpService, + OtpUtilityService, + OtpWidgetService, + WidgetThemeService, + { provide: ProxyBaseUrls.Env, useValue: environment.env }, + { + provide: ProxyBaseUrls.BaseURL, + useValue: environment.apiUrl + environment.msgMidProxy, + }, + { + provide: ProxyBaseUrls.ClientURL, + useValue: environment.apiUrl + environment.msgMidProxy, + }, + ], + }).then((appRef) => { + const injector = appRef.injector; + try { + if (!customElements.get('proxy-auth')) { + const el = createCustomElement(ProxyAuthWidgetComponent, { injector }); + customElements.define('proxy-auth', el); + } + } catch (e) { + console.warn('[proxy-auth] Custom element registration failed:', e); + } + }); +} diff --git a/apps/36-blocks-widget/src/otp-global.scss b/apps/36-blocks-widget/src/otp-global.scss new file mode 100644 index 00000000..160e6605 --- /dev/null +++ b/apps/36-blocks-widget/src/otp-global.scss @@ -0,0 +1,29 @@ +// .otp-verification-dialog { +// width: 380px; +// min-height: 350px; +// font-size: 15px; +// text-align: center; +// display: inherit; +// flex-direction: column; +// align-items: inherit; +// box-shadow: 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024, 0 9px 46px 8px #0000001f; +// background: transparent; +// color: #000000de; +// z-index: 999999 !important; +// border-radius: 10px; +// padding: 25px 32px; +// justify-content: center; +// position: relative; +// overflow-y: auto; +// @media only screen and (max-width: 768px) { +// width: 90% !important; +// height: 80%; +// display: flex; +// align-items: center; +// justify-content: center; +// } +// &.dark-theme { +// background: transparent; +// color: #ffffff !important; +// } +// } diff --git a/apps/proxy-auth/src/polyfills.element.ts b/apps/36-blocks-widget/src/polyfills.element.ts similarity index 100% rename from apps/proxy-auth/src/polyfills.element.ts rename to apps/36-blocks-widget/src/polyfills.element.ts diff --git a/apps/36-blocks-widget/src/styles.scss b/apps/36-blocks-widget/src/styles.scss new file mode 100644 index 00000000..297ec805 --- /dev/null +++ b/apps/36-blocks-widget/src/styles.scss @@ -0,0 +1,69 @@ +/* Layout*/ +@use 'assets/scss/layout/spacing'; +@use 'assets/scss/layout/display'; + +/* Components*/ +@use 'assets/scss/component/form-field'; +@use 'assets/scss/component/tabs'; +@use '../../shared/scss/global'; + +/* Widget shared UI utilities */ +@use 'assets/scss/widget-ui'; + +/* intl-tel-input custom overrides — global so dropdown applies outside Shadow DOM */ +@use '../../shared/assets/utils/intl-tel-input-custom'; + +:root { + color-scheme: light dark; + --color-common-dark: #030712; + --color-common-slate: #333333; + --color-common-rock: #5d6164; + --color-common-grey: #333333; + --color-common-cloud: #c1c5c8; + --color-common-smoke: #d5d9dc; + --color-common-white: #ffffff; + --color-common-black: #000000; + --border-common-radius-4: 4px; + --font-size-12: 12px; + --font-size-14: 14px; + --font-size-16: 16px; + --font-size-18: 18px; + --font-size-24: 24px; + --font-size-28: 28px; + --font-size-30: 30px; + --font-size-36: 36px; + + --custom-mat-form-field-height: 48px; +} + +/* You can add global styles to this file, and also import other style files */ +html, +body { + margin: 0; + width: 100vw; + height: 100vh; + overflow-x: hidden; + &.light-theme { + background-color: var(--color-common-white) !important; + color: var(--color-common-dark); + } + &.dark-theme { + background-color: var(--color-common-dark) !important; + color: var(--color-common-white); + } + &.system-theme { + background-color: light-dark(var(--color-common-white), var(--color-common-dark)) !important; + color: light-dark(var(--color-common-dark), var(--color-common-white)); + } +} + +*, +proxy-auth, +.iti__country-list { + font-family: 'Inter', sans-serif; + -webkit-font-smoothing: antialiased; +} + +* { + box-sizing: border-box; +} diff --git a/apps/36-blocks-widget/tests/contract.spec.ts b/apps/36-blocks-widget/tests/contract.spec.ts new file mode 100644 index 00000000..20a52bb1 --- /dev/null +++ b/apps/36-blocks-widget/tests/contract.spec.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/** + * Widget Public API Contract Tests + * + * These tests verify that the widget's public API contract remains stable: + * - window.initVerification is a function + * - custom element is registered + * - Error handling for missing referenceId and success callback + * - DOM rendering inside provided container + * + * Run after every widget build: npm run test:contract + */ + +export {}; // make this file a module so the declare global works + +declare global { + interface Window { + initVerification: any; + __proxyAuth: any; + __proxyAuthLoaded: boolean; + } +} + +describe('Widget Public API Contract', () => { + it('should register window.initVerification as a function', () => { + expect(window.initVerification).toBeDefined(); + expect(typeof window.initVerification).toBe('function'); + }); + + it('should register custom element', () => { + expect(customElements.get('proxy-auth')).toBeDefined(); + }); + + it('should expose version metadata on window.__proxyAuth', () => { + expect(window.__proxyAuth).toBeDefined(); + expect(window.__proxyAuth.version).toBeDefined(); + expect(typeof window.__proxyAuth.version).toBe('string'); + expect(window.__proxyAuth.buildTime).toBeDefined(); + }); + + it('should throw if referenceId is missing', () => { + expect(() => window.initVerification({})).toThrow('Reference Id is missing!'); + }); + + it('should throw if success callback is missing', () => { + const div = document.createElement('div'); + div.id = 'test-ref'; + document.body.appendChild(div); + expect(() => window.initVerification({ referenceId: 'test-ref' })).toThrow('success callback function missing'); + div.remove(); + }); + + it('should render inside provided container', async () => { + const div = document.createElement('div'); + div.id = 'render-test'; + document.body.appendChild(div); + window.initVerification({ + referenceId: 'render-test', + success: () => {}, + }); + + // Stable polling — avoids flaky setTimeout in CI + const waitForElement = (container: Element, selector: string, timeout = 2000) => + new Promise((resolve, reject) => { + const start = Date.now(); + const interval = setInterval(() => { + const el = container.querySelector(selector); + if (el) { + clearInterval(interval); + resolve(el); + } else if (Date.now() - start > timeout) { + clearInterval(interval); + reject(new Error(`${selector} not found within ${timeout}ms`)); + } + }, 20); + }); + + const el = await waitForElement(div, 'proxy-auth'); + expect(el).not.toBeNull(); + div.remove(); + }); +}); diff --git a/apps/proxy-auth-element/tsconfig.app.json b/apps/36-blocks-widget/tsconfig.app.json similarity index 73% rename from apps/proxy-auth-element/tsconfig.app.json rename to apps/36-blocks-widget/tsconfig.app.json index 18bf7d57..71b9a4d0 100644 --- a/apps/proxy-auth-element/tsconfig.app.json +++ b/apps/36-blocks-widget/tsconfig.app.json @@ -2,9 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "types": [] + "types": ["node"] }, - "files": ["src/main.ts", "src/polyfills.ts"], + "files": ["src/main.ts", "src/main.dev.ts"], "include": ["src/**/*.d.ts"], "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"] } diff --git a/apps/proxy-auth-element/tsconfig.editor.json b/apps/36-blocks-widget/tsconfig.editor.json similarity index 100% rename from apps/proxy-auth-element/tsconfig.editor.json rename to apps/36-blocks-widget/tsconfig.editor.json diff --git a/apps/proxy-auth/tsconfig.json b/apps/36-blocks-widget/tsconfig.json similarity index 78% rename from apps/proxy-auth/tsconfig.json rename to apps/36-blocks-widget/tsconfig.json index 41e85e79..18bea8e2 100644 --- a/apps/proxy-auth/tsconfig.json +++ b/apps/36-blocks-widget/tsconfig.json @@ -8,6 +8,9 @@ }, { "path": "./tsconfig.editor.json" + }, + { + "path": "./tsconfig.spec.json" } ] } diff --git a/libs/shared/tsconfig.spec.json b/apps/36-blocks-widget/tsconfig.spec.json similarity index 63% rename from libs/shared/tsconfig.spec.json rename to apps/36-blocks-widget/tsconfig.spec.json index 59ee35a7..04701c8c 100644 --- a/libs/shared/tsconfig.spec.json +++ b/apps/36-blocks-widget/tsconfig.spec.json @@ -5,5 +5,6 @@ "module": "commonjs", "types": ["jest", "node"] }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] + "files": ["tests/contract.spec.ts"], + "include": ["tests/**/*.spec.ts", "tests/**/*.d.ts"] } diff --git a/apps/proxy-auth/webpack.config.js b/apps/36-blocks-widget/webpack.config.js similarity index 100% rename from apps/proxy-auth/webpack.config.js rename to apps/36-blocks-widget/webpack.config.js diff --git a/apps/proxy-auth/.eslintrc.json b/apps/36-blocks/.eslintrc.json similarity index 100% rename from apps/proxy-auth/.eslintrc.json rename to apps/36-blocks/.eslintrc.json diff --git a/apps/proxy/project.json b/apps/36-blocks/project.json similarity index 58% rename from apps/proxy/project.json rename to apps/36-blocks/project.json index b4875c74..736a734b 100644 --- a/apps/proxy/project.json +++ b/apps/36-blocks/project.json @@ -1,27 +1,41 @@ { - "name": "proxy", + "name": "36-blocks", "$schema": "../../node_modules/nx/schemas/project-schema.json", "projectType": "application", - "sourceRoot": "apps/proxy/src", + "sourceRoot": "apps/36-blocks/src", "prefix": "proxy", "targets": { + "set-env": { + "executor": "nx:run-commands", + "options": { + "command": "node tools/set-env --proxy" + } + }, "build": { - "executor": "@angular-builders/custom-webpack:browser", + "dependsOn": ["set-env"], + "executor": "@angular-devkit/build-angular:application", "outputs": ["{options.outputPath}"], "options": { - "outputPath": "dist/apps/proxy", - "index": "apps/proxy/src/index.html", - "main": "apps/proxy/src/main.ts", - "polyfills": "apps/proxy/src/polyfills.ts", - "tsConfig": "apps/proxy/tsconfig.app.json", + "outputPath": "dist/apps/36-blocks", + "index": "apps/36-blocks/src/index.html", + "browser": "apps/36-blocks/src/main.ts", + "polyfills": ["zone.js"], + "tsConfig": "apps/36-blocks/tsconfig.app.json", "inlineStyleLanguage": "scss", - "customWebpackConfig": { - "path": "/webpack.config.js" + "stylePreprocessorOptions": { + "includePaths": ["apps/shared/scss"] }, - "assets": ["apps/proxy/src/favicon.ico", "apps/proxy/src/assets"], + "assets": [ + "apps/36-blocks/src/favicon.ico", + "apps/36-blocks/src/assets", + { + "glob": "intl-tel-input-custom.css", + "input": "apps/shared/assets/utils", + "output": "assets/utils" + } + ], "styles": [ - "apps/proxy/src/styles.scss", - "node_modules/primeng/resources/themes/md-light-indigo/theme.css", + "apps/36-blocks/src/styles.scss", "node_modules/primeng/resources/primeng.min.css", "node_modules/prismjs/themes/prism-okaidia.css" ], @@ -29,7 +43,8 @@ "node_modules/prismjs/prism.js", "node_modules/prismjs/components/prism-csharp.min.js", "node_modules/prismjs/components/prism-css.min.js" - ] + ], + "allowedCommonJsDependencies": ["crypto-js", "dayjs", "prismjs"] }, "configurations": { "production": { @@ -47,8 +62,8 @@ ], "fileReplacements": [ { - "replace": "apps/proxy/src/environments/environment.ts", - "with": "apps/proxy/src/environments/environment.prod.ts" + "replace": "apps/36-blocks/src/environments/environment.ts", + "with": "apps/36-blocks/src/environments/environment.prod.ts" } ], "outputHashing": "all" @@ -68,8 +83,8 @@ ], "fileReplacements": [ { - "replace": "apps/proxy/src/environments/environment.ts", - "with": "apps/proxy/src/environments/environment.stage.ts" + "replace": "apps/36-blocks/src/environments/environment.ts", + "with": "apps/36-blocks/src/environments/environment.stage.ts" } ], "outputHashing": "all" @@ -89,31 +104,37 @@ ], "fileReplacements": [ { - "replace": "apps/proxy/src/environments/environment.ts", - "with": "apps/proxy/src/environments/environment.test.ts" + "replace": "apps/36-blocks/src/environments/environment.ts", + "with": "apps/36-blocks/src/environments/environment.test.ts" } ], "outputHashing": "all" }, "development": { - "buildOptimizer": false, "optimization": false, - "vendorChunk": true, "extractLicenses": false, - "sourceMap": true, - "namedChunks": true + "sourceMap": true + }, + "local": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true } }, "defaultConfiguration": "production" }, "serve": { - "executor": "@angular-builders/custom-webpack:dev-server", + "dependsOn": ["set-env"], + "executor": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { - "browserTarget": "proxy:build:production" + "buildTarget": "36-blocks:build:production" }, "development": { - "browserTarget": "proxy:build:development" + "buildTarget": "36-blocks:build:development" + }, + "serve": { + "buildTarget": "36-blocks:build:development" } }, "defaultConfiguration": "development" @@ -121,13 +142,13 @@ "extract-i18n": { "executor": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "proxy:build" + "buildTarget": "36-blocks:build" } }, "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { - "lintFilePatterns": ["apps/proxy/**/*.ts", "apps/proxy/**/*.html"] + "lintFilePatterns": ["apps/36-blocks/**/*.ts", "apps/36-blocks/**/*.html"] } } }, diff --git a/apps/proxy/src/app/app.component.html b/apps/36-blocks/src/app/app.component.html similarity index 100% rename from apps/proxy/src/app/app.component.html rename to apps/36-blocks/src/app/app.component.html diff --git a/apps/proxy/src/app/app.component.ts b/apps/36-blocks/src/app/app.component.ts similarity index 85% rename from apps/proxy/src/app/app.component.ts rename to apps/36-blocks/src/app/app.component.ts index dd918e50..4447f220 100644 --- a/apps/proxy/src/app/app.component.ts +++ b/apps/36-blocks/src/app/app.component.ts @@ -1,4 +1,6 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { PrimeNgToastComponent } from '@proxy/ui/prime-ng-toast'; import { ActivatedRoute, NavigationEnd, NavigationStart, Router } from '@angular/router'; import { VersionCheckService } from '@proxy/service'; import { select, Store } from '@ngrx/store'; @@ -15,7 +17,9 @@ import * as logInActions from './auth/ngrx/actions/login.action'; import { IClientSettings, IFirebaseUserModel } from '@proxy/models/root-models'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-root', + imports: [RouterModule, PrimeNgToastComponent], templateUrl: './app.component.html', }) export class AppComponent extends BaseComponent implements OnInit, OnDestroy { @@ -28,13 +32,13 @@ export class AppComponent extends BaseComponent implements OnInit, OnDestroy { /** True, if new build is deployed */ private newVersionAvailableForWebApp: boolean = false; - constructor( - private _store: Store, - private router: Router, - private actRoute: ActivatedRoute, - private store: Store, - private versionCheckService: VersionCheckService - ) { + private _store = inject>(Store); + private router = inject(Router); + private actRoute = inject(ActivatedRoute); + private store = inject>(Store); + private versionCheckService = inject(VersionCheckService); + + constructor() { super(); this._store.dispatch(logInActions.getUserAction()); diff --git a/apps/proxy/src/app/app.routes.ts b/apps/36-blocks/src/app/app.routes.ts similarity index 60% rename from apps/proxy/src/app/app.routes.ts rename to apps/36-blocks/src/app/app.routes.ts index 8bae04c5..ca261795 100644 --- a/apps/proxy/src/app/app.routes.ts +++ b/apps/36-blocks/src/app/app.routes.ts @@ -7,26 +7,26 @@ export const appRoutes: Route[] = [ { path: '', redirectTo: 'login', pathMatch: 'full' }, { path: 'login', - loadChildren: () => import('./auth/auth.module').then((p) => p.AuthModule), + loadComponent: () => import('./auth/auth.component').then((c) => c.AuthComponent), }, { path: 'app', - loadChildren: () => import('./layout/layout.module').then((p) => p.LayoutModule), + loadChildren: () => import('./layout/layout.routes').then((r) => r.layoutRoutes), data: { authGuardPipe: redirectUnauthorizedToLogin }, canActivate: [AngularFireAuthGuard], }, { path: 'project', - loadChildren: () => import('../app/create-project/create-project.module').then((p) => p.CreateProjectModule), + loadComponent: () => import('./create-project/create-project.component').then((c) => c.CreateProjectComponent), data: { authGuardPipe: redirectUnauthorizedToLogin }, canActivate: [AngularFireAuthGuard], }, { path: 'p', - loadChildren: () => import('./public.module').then((p) => p.PublicModule), + loadChildren: () => import('./public.routes').then((r) => r.publicRoutes), }, { path: 'client', - loadChildren: () => import('./client.module').then((p) => p.ClientModule), + loadChildren: () => import('./client.routes').then((r) => r.clientRoutes), }, ]; diff --git a/apps/proxy/src/app/auth/auth.component.html b/apps/36-blocks/src/app/auth/auth.component.html similarity index 100% rename from apps/proxy/src/app/auth/auth.component.html rename to apps/36-blocks/src/app/auth/auth.component.html diff --git a/apps/proxy/src/app/auth/auth.component.scss b/apps/36-blocks/src/app/auth/auth.component.scss similarity index 99% rename from apps/proxy/src/app/auth/auth.component.scss rename to apps/36-blocks/src/app/auth/auth.component.scss index c11a35c2..0d58ef2d 100644 --- a/apps/proxy/src/app/auth/auth.component.scss +++ b/apps/36-blocks/src/app/auth/auth.component.scss @@ -1,5 +1,5 @@ +@use '../../../../shared/scss/mixins/common-utils' as *; @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap'); -@import '../../assets/scss/utils/mixins/common-utils'; $bg: #0d1117; $bg-secondary: #0f1419; diff --git a/apps/proxy/src/app/auth/auth.component.ts b/apps/36-blocks/src/app/auth/auth.component.ts similarity index 82% rename from apps/proxy/src/app/auth/auth.component.ts rename to apps/36-blocks/src/app/auth/auth.component.ts index c2387749..04c50284 100644 --- a/apps/proxy/src/app/auth/auth.component.ts +++ b/apps/36-blocks/src/app/auth/auth.component.ts @@ -1,10 +1,15 @@ -import { Component, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, inject } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; import { Router } from '@angular/router'; import { IFirebaseUserModel } from '@proxy/models/root-models'; import { BaseComponent } from '@proxy/ui/base-component'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; import { Store, select } from '@ngrx/store'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; import { Observable, distinctUntilChanged, takeUntil, debounceTime } from 'rxjs'; import { selectLogInErrors, @@ -16,7 +21,9 @@ import { ILogInFeatureStateWithRootState } from './ngrx/store/login.state'; import * as logInActions from './ngrx/actions/login.action'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-auth', + imports: [RouterModule, ReactiveFormsModule, MatCardModule, MatButtonModule, MatIconModule], templateUrl: './auth.component.html', styleUrls: ['./auth.component.scss'], }) @@ -26,6 +33,11 @@ export class AuthComponent extends BaseComponent implements OnInit { public logInDataInProcess$: Observable; public logInDataSuccess$: Observable; + private toast = inject(PrimeNgToastService); + private _store = inject>(Store); + private router = inject(Router); + private cdr = inject(ChangeDetectorRef); + public currentlyBuilding: string = ''; private buildingTexts = [ 'A developer-friendly authentication platform with social login, OTP, analytics, and role-based access control.', @@ -35,11 +47,7 @@ export class AuthComponent extends BaseComponent implements OnInit { private isDeleting = false; private typewriterInterval: any; - constructor( - private toast: PrimeNgToastService, - private _store: Store, - private router: Router - ) { + constructor() { super(); this.selectLogInErrors$ = this._store.pipe( @@ -110,6 +118,7 @@ export class AuthComponent extends BaseComponent implements OnInit { this.currentTextIndex = (this.currentTextIndex + 1) % this.buildingTexts.length; } } + this.cdr.markForCheck(); }, this.isDeleting ? 50 : 100 ); diff --git a/apps/proxy/src/app/auth/authguard/index.ts b/apps/36-blocks/src/app/auth/authguard/index.ts similarity index 81% rename from apps/proxy/src/app/auth/authguard/index.ts rename to apps/36-blocks/src/app/auth/authguard/index.ts index ad0367e6..dc80d9f8 100755 --- a/apps/proxy/src/app/auth/authguard/index.ts +++ b/apps/36-blocks/src/app/auth/authguard/index.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; -import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; +import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; import { AuthService } from '@proxy/services/proxy/auth'; import { CookieService } from 'ngx-cookie-service'; import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) -export class CanActivateRouteGuard implements CanActivate { +export class CanActivateRouteGuard { constructor(private cookieService: CookieService, private authService: AuthService, private router: Router) {} canActivate( diff --git a/apps/proxy/src/app/auth/ngrx/actions/index.ts b/apps/36-blocks/src/app/auth/ngrx/actions/index.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/actions/index.ts rename to apps/36-blocks/src/app/auth/ngrx/actions/index.ts diff --git a/apps/proxy/src/app/auth/ngrx/actions/login.action.ts b/apps/36-blocks/src/app/auth/ngrx/actions/login.action.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/actions/login.action.ts rename to apps/36-blocks/src/app/auth/ngrx/actions/login.action.ts diff --git a/apps/proxy/src/app/auth/ngrx/effects/login.effects.ts b/apps/36-blocks/src/app/auth/ngrx/effects/login.effects.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/effects/login.effects.ts rename to apps/36-blocks/src/app/auth/ngrx/effects/login.effects.ts diff --git a/apps/proxy/src/app/auth/ngrx/selector/login.selector.ts b/apps/36-blocks/src/app/auth/ngrx/selector/login.selector.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/selector/login.selector.ts rename to apps/36-blocks/src/app/auth/ngrx/selector/login.selector.ts diff --git a/apps/proxy/src/app/auth/ngrx/store/login.reducer.ts b/apps/36-blocks/src/app/auth/ngrx/store/login.reducer.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/store/login.reducer.ts rename to apps/36-blocks/src/app/auth/ngrx/store/login.reducer.ts diff --git a/apps/proxy/src/app/auth/ngrx/store/login.state.ts b/apps/36-blocks/src/app/auth/ngrx/store/login.state.ts similarity index 100% rename from apps/proxy/src/app/auth/ngrx/store/login.state.ts rename to apps/36-blocks/src/app/auth/ngrx/store/login.state.ts diff --git a/apps/36-blocks/src/app/chatbot/chatbot.component.ts b/apps/36-blocks/src/app/chatbot/chatbot.component.ts new file mode 100644 index 00000000..0437ab0a --- /dev/null +++ b/apps/36-blocks/src/app/chatbot/chatbot.component.ts @@ -0,0 +1,9 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'app-chatbot', + imports: [], + template: `

    `, +}) +export class ChatbotComponent {} diff --git a/apps/36-blocks/src/app/client.routes.ts b/apps/36-blocks/src/app/client.routes.ts new file mode 100644 index 00000000..00927f5b --- /dev/null +++ b/apps/36-blocks/src/app/client.routes.ts @@ -0,0 +1,8 @@ +import { Route } from '@angular/router'; + +export const clientRoutes: Route[] = [ + { + path: 'registration', + loadComponent: () => import('./registration/registration.component').then((c) => c.RegistrationComponent), + }, +]; diff --git a/apps/proxy/src/app/create-project/create-project.component.html b/apps/36-blocks/src/app/create-project/create-project.component.html similarity index 53% rename from apps/proxy/src/app/create-project/create-project.component.html rename to apps/36-blocks/src/app/create-project/create-project.component.html index 4365d980..b5099f6c 100644 --- a/apps/proxy/src/app/create-project/create-project.component.html +++ b/apps/36-blocks/src/app/create-project/create-project.component.html @@ -1,31 +1,30 @@ -
    -
    +
    +
    + @if (currentstep === 1) {
    -

    Create Project

    +

    Create Project

    -
    - + } @if (currentstep == 2) {
    -

    Add Gateway URL

    +

    Add Gateway URL

    The Gateway URL is the entry point through which incoming requests are received and forwarded to the Proxy Server for processing @@ -33,41 +32,41 @@

    Add Gateway URL

    -
    - + } @if (currentstep == 3) {
    -

    Add Destination Url

    +

    Add Destination Url

    The destination URL refers to the targeted URL or endpoint where the request will be forwarded by the proxy Server.

    -
    - - +
    + }
    -
    +
    Add Destination Url " > - + - + @for (environment of (environments$ | async)?.data; track environment.name) { + {{ environment.name }} + } - - - Environment is required - - + @if (primaryDetailsForm.get('selectedEnvironments').touched && + primaryDetailsForm.get('selectedEnvironments')?.errors?.required) { + Environment is required + } -
    +
    Add Destination Url " > -

    Hits per

    +

    Hits per

    Add Destination Url
    -
    +
    -
    Provide your own
    +
    Provide your own
    Same for all environments
    - - - - - - - - - + } + " + > + } @else { @for (control of gatewayUrls.controls; track i; let i = $index) { + + } }
    -
    - -
    OR
    - +
    + +
    OR
    +
    -
    Use Ours
    +
    Use Ours
    -
    -
    {{ slug.name }}
    - {{ slug.url }} + @for (slug of environments_with_slug; track slug.name) { +
    +
    {{ slug.name }}
    + {{ slug.url }}
    -
    - Note: + } +
    + Note: please copy the provided Gateway URL and utilize it within your user interface to invoke the API by specifying the desired endpoint for seamless request forwarding to the Proxy Server
    @@ -205,9 +199,10 @@
    {{ slug.name }}
    -
    -
    - +
    + @if (showEndpoint) { + + Endpoint {{ slug.name }} Project unique identification In URL - -
    -
    -
    {{ environments_with_slug[i]?.name }}
    + } @for (control of forwardUrls.controls; track i; let i = $index) { +
    +
    +
    {{ environments_with_slug[i]?.name }}
    keyboard_arrow_right -

    forward to

    +

    forward to

    {{ environments_with_slug[i]?.name }} " >
    + }
    - - {{ fieldConfig?.label }} * + + + {{ fieldConfig?.label }} {{ environments_with_slug[i]?.name }} [formControl]="fieldControl" /> - + @if (fieldControl?.touched) { + {{ environments_with_slug[i]?.name }} " > - - {{ fieldConfig?.hint }} + } @if (fieldConfig?.hint) { {{ fieldConfig?.hint }} } - {{ customError }} - {{ label }} is required. - Min required length is 3 - Start and End spaces are not allowed - Min value required is {{ minError?.min }} - Max value allowed is {{ maxError?.max }} - - Min required length is {{ minLengthError?.requiredLength }} - - - Max allowed length is {{ maxLengthError?.requiredLength }} - - - {{ patternErrorText ?? 'Enter valid ' + label }} - + @if (fieldControl?.errors?.customError; as customError) { + {{ customError }} + } @if (fieldControl.errors?.required) { + {{ label }} is required. } @if (fieldControl.errors?.minlengthWithSpace) { Min required length is 3 } @if + (fieldControl.errors?.noStartEndSpaces) { Start and End spaces are not allowed } @if (fieldControl.errors?.min; as + minError) { Min value required is {{ minError?.min }} } @if (fieldControl.errors?.max; as maxError) { Max value + allowed is {{ maxError?.max }} } @if (fieldControl.errors?.minlength; as minLengthError) { Min required length is + {{ minLengthError?.requiredLength }} } @if (fieldControl.errors?.maxlength; as maxLengthError) { Max allowed length + is {{ maxLengthError?.requiredLength }} + } @if (fieldControl.errors?.pattern) { + {{ patternErrorText ?? 'Enter valid ' + label }} + } diff --git a/apps/proxy-auth-element/src/app/app.component.scss b/apps/36-blocks/src/app/create-project/create-project.component.scss similarity index 100% rename from apps/proxy-auth-element/src/app/app.component.scss rename to apps/36-blocks/src/app/create-project/create-project.component.scss diff --git a/apps/proxy/src/app/create-project/create-project.component.ts b/apps/36-blocks/src/app/create-project/create-project.component.ts similarity index 83% rename from apps/proxy/src/app/create-project/create-project.component.ts rename to apps/36-blocks/src/app/create-project/create-project.component.ts index a480bd68..141abef2 100644 --- a/apps/proxy/src/app/create-project/create-project.component.ts +++ b/apps/36-blocks/src/app/create-project/create-project.component.ts @@ -1,4 +1,20 @@ -import { Component, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit, inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatStepperModule } from '@angular/material/stepper'; +import { MatIconModule } from '@angular/material/icon'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatListModule } from '@angular/material/list'; +import { MatSelectModule } from '@angular/material/select'; +import { MatInputModule } from '@angular/material/input'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { CopyButtonComponent } from '@proxy/ui/copy-button'; +import { MarkAllAsTouchedDirective } from '@proxy/directives/mark-all-as-touched'; import { FormGroup, Validators, FormBuilder, FormControl } from '@angular/forms'; import { CAMPAIGN_NAME_REGEX, ONLY_INTEGER_REGEX, URL_REGEX } from '@proxy/regex'; import { CustomValidators } from '@proxy/custom-validator'; @@ -20,12 +36,36 @@ import { import { IClientData } from '@proxy/models/users-model'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-create-project', + imports: [ + CommonModule, + RouterModule, + ReactiveFormsModule, + MatStepperModule, + MatIconModule, + MatCardModule, + MatButtonModule, + MatListModule, + MatSelectModule, + MatInputModule, + MatCheckboxModule, + MatAutocompleteModule, + MatTooltipModule, + MatFormFieldModule, + CopyButtonComponent, + MarkAllAsTouchedDirective, + ], templateUrl: './create-project.component.html', styleUrls: ['./create-project.component.scss'], providers: [CreateProjectComponentStore], }) export class CreateProjectComponent extends BaseComponent implements OnInit { + private componentStore = inject(CreateProjectComponentStore); + private fb = inject(FormBuilder); + private store = inject>(Store); + private cdr = inject(ChangeDetectorRef); + public primaryDetailsForm: FormGroup; public gatewayUrlDetailsForm: FormGroup; public destinationUrlForm: FormGroup; @@ -46,11 +86,7 @@ export class CreateProjectComponent extends BaseComponent implements OnInit { public projectId: number; public urlUniqId: string; - constructor( - private componentStore: CreateProjectComponentStore, - private fb: FormBuilder, - private store: Store - ) { + constructor() { super(); this.projects$ = this.store.pipe(select(selectAllProjectList)); @@ -98,6 +134,7 @@ export class CreateProjectComponent extends BaseComponent implements OnInit { }); this.populateGatewayUrls(); this.populateForwardUrls(); + this.cdr.markForCheck(); } }); }); @@ -118,6 +155,7 @@ export class CreateProjectComponent extends BaseComponent implements OnInit { }); this.populateGatewayUrls(); this.populateForwardUrls(); + this.cdr.markForCheck(); } }); this.createProjectSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { @@ -125,6 +163,7 @@ export class CreateProjectComponent extends BaseComponent implements OnInit { this.changeStep(2); this.store.dispatch(rootActions.getAllProject()); this.getClientData(res.client_id); + this.cdr.markForCheck(); } }); } diff --git a/apps/proxy/src/app/create-project/create-project.store.ts b/apps/36-blocks/src/app/create-project/create-project.store.ts similarity index 98% rename from apps/proxy/src/app/create-project/create-project.store.ts rename to apps/36-blocks/src/app/create-project/create-project.store.ts index 85122fb1..afff2ae5 100644 --- a/apps/proxy/src/app/create-project/create-project.store.ts +++ b/apps/36-blocks/src/app/create-project/create-project.store.ts @@ -1,6 +1,7 @@ import { Router } from '@angular/router'; import { Injectable } from '@angular/core'; -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { IEnvironments, IProjects } from '@proxy/models/logs-models'; import { BaseResponse, IPaginatedResponse, IReqParams, errorResolver } from '@proxy/models/root-models'; import { CreateProjectService } from '@proxy/services/proxy/create-project'; diff --git a/apps/36-blocks/src/app/dashboard/dashboard.component.html b/apps/36-blocks/src/app/dashboard/dashboard.component.html new file mode 100644 index 00000000..c3e1994e --- /dev/null +++ b/apps/36-blocks/src/app/dashboard/dashboard.component.html @@ -0,0 +1,120 @@ +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Coming Soon + + + Dashboard is under construction + + +
    diff --git a/apps/proxy-auth/src/assets/.gitkeep b/apps/36-blocks/src/app/dashboard/dashboard.component.scss similarity index 100% rename from apps/proxy-auth/src/assets/.gitkeep rename to apps/36-blocks/src/app/dashboard/dashboard.component.scss diff --git a/apps/36-blocks/src/app/dashboard/dashboard.component.ts b/apps/36-blocks/src/app/dashboard/dashboard.component.ts new file mode 100644 index 00000000..3461c85c --- /dev/null +++ b/apps/36-blocks/src/app/dashboard/dashboard.component.ts @@ -0,0 +1,12 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { MatIconModule } from '@angular/material/icon'; +import { BaseComponent } from '@proxy/ui/base-component'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'proxy-dashboard', + imports: [RouterModule, MatIconModule], + templateUrl: './dashboard.component.html', +}) +export class DashboardComponent extends BaseComponent {} diff --git a/apps/36-blocks/src/app/features/create-feature/create-feature.component.html b/apps/36-blocks/src/app/features/create-feature/create-feature.component.html new file mode 100644 index 00000000..f2263f20 --- /dev/null +++ b/apps/36-blocks/src/app/features/create-feature/create-feature.component.html @@ -0,0 +1,2175 @@ +
    + @if ((isLoading$ | async) || (loadingScript | async)) { } +
    + + @if (isEditMode) { +
    + @if (nameFieldEditMode) { +
    + + +
    + } @if (!nameFieldEditMode) { +

    {{ (featureDetails$ | async)?.name }}

    + + } +
    + } @if (!isEditMode) { +
    +

    Add New Block

    +

    Set up a new authentication or subscription block

    +
    + } +
    + @if (!isEditMode) { + + + @if (featureForm.get('primaryDetails.name'); as nameControl) { + + Block Name +
    + +
    + +
    +
    +
    + } @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { + + Configure Method +
    + +
    + + +
    +
    +
    + } @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { + + Authorization Setup +
    + +
    + + +
    +
    +
    + } @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { + + Branding +
    + +
    + + +
    +
    +
    + } + + + @if (featureForm.get('primaryDetails.feature_id')?.value !== 1) { + + Integration Choice +
    + +
    + + +
    +
    +
    + + + Organization Details +
    + +
    + + +
    +
    +
    + + + Billable Metrics / Items +
    + +
    + +
    +
    +
    + + Payment Details +
    + +
    + +
    +
    +
    + + + Create Plan +
    + +
    + +
    +
    +
    + + + Plans Overview & Subscription Snippet +
    +
    + +
    + +
    + + @if (createUpdateObject$ | async; as createUpdateObject) { + + } +
    +
    +
    + } @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { + + Design & code +
    + +
    + + @if (createUpdateObject$ | async; as createUpdateObject) { + + } +
    +
    +
    + } +
    + } @if (isEditMode) { + + + +
    + @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { + + } @if (featureForm.get('primaryDetails.feature_id')?.value !== 1) { + + } @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { +
    + +
    + } +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + + + + +
    + +
    + +
    +
    +
    + +
    +
    +
    +
    + bolt + Event Catalog +
    + @if (webhookEventsData?.length) { + + {{ webhookEventsData.length }} events + + } +
    + @if (webhookEventsData?.length) { +
    + + @for (event of webhookEventsData; track event) { + + + +
    + {{ + event.value + }} + {{ + event.description + }} +
    +
    +
    +
    +
    +

    + Sample Response +

    + +
    +
    {{ event.sampleResponse | json }}
    +
    +
    + } +
    +
    + } @else { +
    + bolt +
    +

    No events available

    +

    + Events will appear here once configured +

    +
    +
    + } +
    +
    +
    +
    +
    +
    +
    + } +
    + +
    +
    + @for (type of featureType; track type.id) { +
    + {{ type.icon }} +

    {{ type.name }}

    + +
    + } +
    +
    +
    + +
    +
    + widgets +
    +

    Name your Block

    +

    Give your authentication block a unique, recognisable name

    +
    +
    +
    + + @if (!isEditMode && featureForm.get('primaryDetails.feature_id')?.value === 1) { + + } +
    + + + +
    +
    + +
    +
    + + Services + + + + + +
    + @if (isEditMode) { +
    + +
    + } +
    +
    + + +
    + @if ((selectedMethod | async)?.method_services; as methodServices) { @if (!serviceForm) { +
    + tune + {{ methodServices?.[selectedServiceIndex]?.name || 'Configure Service' }} +
    + } @if (serviceForm ?? featureForm.get('serviceDetails')?.at(selectedServiceIndex); as formToUse) { +
    +
    + @if (methodServices?.[selectedServiceIndex]?.requirements; as requirements) { @if + ((formToUse.controls.requirements.controls | keyvalue)?.length) { +

    + Credentials +

    + } @for (controlKeyValue of (formToUse.controls.requirements.controls | keyvalue); track + controlKeyValue.key) { + + } } @if (methodServices?.[selectedServiceIndex]?.configurations?.fields; as configurationsFields) { +

    + Configurations +

    + @for (controlKeyValue of (formToUse.controls.configurations.controls | keyvalue); track + controlKeyValue.key) { + + } } @if ((featureDetails$ | async)?.callback_url; as callbackUrl) { + + Callback URL + + + + } @if (isEditMode) { +
    + Enable Service + +
    + } @if (isEditMode) { +
    + +
    + } +
    +
    + } } +
    +
    + + +
    +

    {{ getSelectedServiceName() }}

    + +
    + + + + + + + +
    + + + @if (selectedMethod | async; as method) { +
    + @if (configureMethodsTableData.length === 0) { +
    + tune +

    No methods available

    +
    + } @else { +
    +
    + Method + Enable + Edit +
    + @for (row of configureMethodsTableData; track row.index) { +
    +
    + {{ row.name }} + @if (row.index === 0) { + + default + + } +
    +
    + +
    +
    + +
    +
    + } +
    + } +

    + Note: By default, 36Blocks credentials will be used, and the consent + screen or Sender ID will display the 36Blocks name. You can update these with your own credentials and + branding anytime after the block is created. +

    +
    + } +
    + + +
    +
    + @if (featureForm.get('brandingDetails.version')?.value === 'v2') { +
    + @if ((logoInputMode === 'file' && logoUrl) || (logoInputMode === 'url' && + featureForm.get('brandingDetails.logo_url')?.value?.startsWith('http'))) { + + } +

    + {{ featureForm.get('brandingDetails.title')?.value }} +

    +
    + } + + + @if (previewInputPosition === 'top') { + + + @if (featureForm.get('brandingDetails.icons').value) { + + } @if (!featureForm.get('brandingDetails.icons').value) { + + } } + + + @if (previewInputPosition === 'bottom') { @if (featureForm.get('brandingDetails.icons').value) { + + } @if (!featureForm.get('brandingDetails.icons').value) { + + } + + + } + + + @if (featureForm.get('brandingDetails.create_account_link').value) { +

    + Are you a new user? + {{ featureForm.get('brandingDetails.sign_up_button_text')?.value }} +

    + } +
    +
    + + + + @if (featureForm.get('serviceDetails')?.at(3)?.controls?.is_enable?.value && + featureForm.get('brandingDetails.version')?.value === 'v2') { +
    + + Email or Phone + + + + + Password + + + + +
    + } +
    + + + + @if ( featureForm.get('serviceDetails')?.at(3)?.controls?.is_enable?.value && + featureForm.get('brandingDetails.version')?.value === 'v2' && + (featureForm.get('serviceDetails')?.at(0)?.controls?.is_enable?.value || + featureForm.get('serviceDetails')?.at(1)?.controls?.is_enable?.value || + featureForm.get('serviceDetails')?.at(2)?.controls?.is_enable?.value) ) { +
    +
    + Or continue with +
    +
    + } +
    + +
    + @if (featureForm.get('serviceDetails')?.at(0)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(1)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(2)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(3)?.controls?.is_enable?.value && + featureForm.get('brandingDetails.version')?.value === 'v1') { + + } +
    +
    + + + +
    + @if (featureForm.get('serviceDetails')?.at(0)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(2)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(1)?.controls?.is_enable?.value) { + + } @if (featureForm.get('serviceDetails')?.at(3)?.controls?.is_enable?.value && + featureForm.get('brandingDetails.version')?.value === 'v1') { + + } +
    +
    +
    + + +
    +
    +
    +
    + settings + Session & Token Settings +
    +
    + + + + @if (isEditMode && featureForm.get('primaryDetails.feature_id')?.value === 1) { +
    +
    + Block new user sign-ups + Prevent new users from registering via this block +
    + +
    + } +
    +
    + + @if (((isEditMode ? featureDetails$ : selectedMethod) | async)?.authorization_format?.format; as code) { +
    +
    +
    + data_object + JWT Payload Format +
    + +
    +
    + +
    +
    + info +

    + JSON format you will receive after login as JWT in Authorization key +

    +
    +
    + } +
    + @if (isEditMode) { +
    + +
    + } +
    +
    + + +
    +
    +
    +
    + code + Integration Script +
    + +
    +
    + +
    +
    + +
    +
    +
    + html + Button Container Div +
    + +
    +
    + +
    +
    + info +

    + The social login button is shown in a dialog by default. Add this div to your UI to render it inline + instead. +

    +
    +
    +
    +
    + + + @if ((createUpdateObject$ | async) || (featureDetails$ | async)) { +
    + +
    + } +
    + + +
    +
    +
    + webhook + Webhook Configuration +
    +
    + + + + Select Trigger Events + + @for (option of webhookEventsData; track option.value) { + {{ option.label }} + } + + +
    +
    +
    +
    + + + + + {{ fieldConfig?.label }} + + + @switch (fieldConfig?.type) { @case (featureFieldType.ChipList) { @if (fieldConfig?.label + '_' + + this.selectedServiceIndex; as chipListKey) { + + @for (item of chipListValues[chipListKey]; track item) { + + {{ item }} + @if (!chipListReadOnlyValues[chipListKey].has(item)) { + + } + + } + + + } } @case (featureFieldType.Select) { + + @if (fieldConfig?.create_new) { + + add Add New + {{ fieldConfig?.label }} + + } @for (option of getSelectOptions(fieldConfig); track option.value) { + {{ option.label }} + } + + } @case (featureFieldType.TextArea) { + + } @case (featureFieldType.ReadFile) { + + } @case (featureFieldType.Password) { + + @if (fieldConfig?.info) { + info + } } @default { + + @if (fieldConfig?.info) { + info + } } } @if (fieldControl.touched) { + + + + } @if (fieldConfig?.type === featureFieldType.ReadFile) { @if (fieldConfig?.label + '_' + + this.selectedServiceIndex; as fileKey) { + + @if (!fieldControl?.value) { + + } @else { + + } } } @if (fieldConfig?.hint) { + + {{ fieldConfig?.hint }} + @if (fieldConfig?.hintInfo) { + info + } + + } + + + @if (fieldConfig?.type === featureFieldType.ChipList) { +
    + @if (fieldControl.touched) { + + + + } +
    + } + + + @if (fieldControl?.errors?.customError; as customError) { + {{ customError }} + } @if (fieldControl.errors?.required) { + {{ label }} is required. } @if (fieldControl.errors?.minlengthWithSpace) { Min required length is 3 } @if + (fieldControl.errors?.noStartEndSpaces) { Start and End spaces are not allowed } @if (fieldControl.errors?.min; + as minError) { Min value required is {{ minError?.min }} } @if (fieldControl.errors?.max; as maxError) { Max + value allowed is {{ maxError?.max }} } @if (fieldControl.errors?.minlength; as minLengthError) { Min required + length is {{ minLengthError?.requiredLength }} } @if (fieldControl.errors?.maxlength; as maxLengthError) { Max + allowed length is {{ maxLengthError?.requiredLength }} + } @if (fieldControl.errors?.pattern) { + {{ patternErrorText ?? 'Enter valid ' + label }} + } @if (fieldControl?.errors?.atleastOneValueInChipList) { Atleast One Value is Required } + +
    + + +
    +
    Integration Choice
    +
    +
    + @for (service of (selectedMethod | async)?.method_services; track service; let i = $index) { +
    +

    {{ service.name }}

    + + + @if (featureForm.get('serviceDetails')?.at(i); as serviceForm) { @if (i !== selectedServiceIndex && + serviceForm.dirty && serviceForm.touched && serviceForm.invalid) { + error + } } + + + +
    + } +
    +
    +
    +
    + + +
    +
    Organization Details
    +

    Note: These details will be shown on the invoice..

    +
    +
    + @if ((selectedMethod | async)?.method_services; as methodServices) { @if + (featureForm.get('serviceDetails')?.at(selectedServiceIndex); as serviceForm) { +
    + @if (methodServices?.[selectedServiceIndex]?.configurations?.fields; as configurationsFields) { @for + (controlKeyValue of (serviceForm.controls.configurations.controls | keyvalue: keepOrder); track + controlKeyValue.key) { + + } } @if ((featureDetails$ | async)?.callback_url; as callbackUrl) { + + Callback URL + + + + } @if (isEditMode) { + + Enable Service + + } +
    + } } +
    +
    +
    +
    + + +
    +
    +
    Billable Metrics / Items
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name + {{ element.name }} + Code +
    + {{ element.code }} + +
    +
    Type + + {{ element.recurring ? 'Recurring' : 'Metered' }} + + Aggregation + + {{ getAggregationLabel(element?.aggregation_type) }} + + Action +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    Payment Details
    +
    +

    Note: These details will be can be filled later.

    +
    +
    + @if (featureForm.get('paymentDetailsForm')?.at(0); as paymentDetailsForm) { +
    + @for (controlKeyValue of (paymentDetailsForm.controls.stripe.controls | keyvalue); track + controlKeyValue.key) { + + } +
    +
    + +
    + } +
    +
    +
    +
    +
    + + +
    +
    Create Plan
    +
    +
    +
    + @if ((selectedMethod | async)?.method_services; as methodServices) { @if + (featureForm.get('planDetails')?.at(selectedServiceIndex); as serviceForm) { +
    + +
    +

    Plan Details

    +
    + @for (controlKeyValue of (serviceForm.controls.createPlanForm.controls | keyvalue: + keepOrder); track controlKeyValue.key) { + + } +
    +
    + + + + + Charges + + +
    + @for (controlKeyValue of (serviceForm.controls.chargesForm.controls | keyvalue: + keepOrder); track controlKeyValue.key) { + + } +
    + +
    +
    + + @if (chargesList?.length) { +
    + + + + + + + + + + + + + + + + + + + + + +
    Metric + {{ + getBillableMetricName( + charge.billable_metric_id || charge.lago_billable_metric_code + ) || 'N/A' + }} + Max Limit + {{ charge.max_limit || 'N/A' }} + Actions + +
    +
    + } +
    +
    +
    + } } +
    +
    +
    + + +
    +
    + + +
    +
    +
    Created Plans
    + @if (isEditMode && selectedSubscriptionServiceIndex === -1) { + + } +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name + {{ element.name }} + Code +
    + {{ element.code }} + +
    +
    Billing Period + + {{ element.interval }} + + Price + {{ element.amount_cents / 100 }} + Currency + + {{ element.amount_currency }} + + Status + + {{ getAggregationLabel(element?.aggregation_type) }} + + Action +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    Taxes
    + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + +
    Name + {{ tax.name }} + Code + {{ tax.code }} + Rate (%) + {{ tax.rate + }}% + Action +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +

    Services

    + + + +
    Billable Metric
    + navigate_next +
    + + + +
    Plans
    + navigate_next +
    + + +
    Payment Details
    + navigate_next +
    + +
    Taxes
    + navigate_next +
    +
    +
    + + +
    +
    + @switch (selectedSubscriptionServiceIndex) { @case (-1) { + + } @case (-2) { + + } @case (-3) { + + } @case (-4) { + + } } +
    +
    +
    +
    + + +
    + +
    + +
    +
    + image + Logo +
    +
    + + Enter URL + + Upload file + info + + + @if (logoInputMode === 'url') { + + Logo URL + + + } @if (logoInputMode === 'file') { +
    + + + @if (logoUrl && !isLogoUploading) { + {{ logoFileInput.files?.[0]?.name || 'Logo selected' }} + + } +
    + } +
    +
    + + +
    +
    + tune + Appearance +
    +
    + + + + @if (isEditMode) { + + + } +
    +
    + + + @if (featureForm.get('primaryDetails.feature_id')?.value === 1) { +
    +
    + toggle_on + Display Options +
    +
    +
    + Show social login as icon + +
    + @if (isEditMode) { +
    + Show Create Account for new user + +
    + } +
    +
    + } + + +
    +
    + palette + Colors +
    +
    +
    +
    + + Light theme +
    +
    + {{ + featureForm.get('brandingDetails.light_theme_primary_color')?.value || '#000000' + }} + +
    +
    +
    +
    + + Dark theme +
    +
    + {{ + featureForm.get('brandingDetails.dark_theme_primary_color')?.value || '#ffffff' + }} + +
    +
    +
    + +
    + {{ + featureForm.get('brandingDetails.button_color')?.value || '#19E6CE' + }} + +
    +
    +
    + +
    + {{ + featureForm.get('brandingDetails.button_hover_color')?.value || '#19E6CE' + }} + +
    +
    +
    + +
    + {{ + featureForm.get('brandingDetails.button_text_color')?.value || '#000000' + }} + +
    +
    +
    +
    +
    + +
    + @if (isEditMode && featureForm.get('serviceDetails')?.at(3)?.controls?.is_enable?.value && + featureForm.get('brandingDetails.version')?.value === 'v2') { +
    +
    + + +
    +
    + } + +
    +
    +
    diff --git a/apps/36-blocks/src/app/features/create-feature/create-feature.component.scss b/apps/36-blocks/src/app/features/create-feature/create-feature.component.scss new file mode 100644 index 00000000..e1d66c2b --- /dev/null +++ b/apps/36-blocks/src/app/features/create-feature/create-feature.component.scss @@ -0,0 +1,320 @@ +.code-snippet-view { + transition: min-height 0.2s linear; + min-width: 500px; + max-width: 800px; +} + +.active { + background-color: var(--color-dark-accent-light) !important; + border-color: var(--color-dark-accent) !important; +} + +// Show Configure column edit button only on row hover +// .configure-methods-table { +// tr.mat-row, +// tr.mat-mdc-row { +// .mat-column-configure button { +// opacity: 0; +// transition: opacity 0.15s ease; +// } +// &:hover .mat-column-configure button { +// opacity: 1; +// } +// } +// th { +// font-size: var(--font-size-common-14) !important; +// } +// } + +// Fix table borders +// .default-table { +// .mat-mdc-row { +// border-bottom: 1px solid rgba(0, 0, 0, 0.12); + +// &:last-child { +// border-bottom: 1px solid rgba(0, 0, 0, 0.12); +// } +// } + +// .mat-mdc-header-row { +// border-bottom: 2px solid rgba(0, 0, 0, 0.12); +// } + +// .mat-mdc-cell, +// .mat-mdc-header-cell { +// border-right: 1px solid rgba(0, 0, 0, 0.12); + +// &:last-child { +// border-right: none; +// } +// } +// } +.organization-details-form { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 24px; + align-items: start; + + @media (max-width: 768px) { + grid-template-columns: 1fr; + gap: 16px; + } + + .heading { + font-size: 16px; + line-height: 20px; + font-weight: 600; + } + textarea { + width: 100%; + resize: vertical; + min-height: 50px; + } +} + +.single-form-layout { + .form-section { + .form-grid { + grid-template-columns: repeat(2, 1fr); + + @media (max-width: 768px) { + grid-template-columns: 1fr; + gap: 16px; + } + + textarea { + width: 100%; + resize: vertical; + min-height: 80px; + } + } + } +} + +.charges-card { + margin-top: 24px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + border: 2px solid var(--color-common-border); + border-radius: 12px; + background-color: var(--color-common-bg); + animation: slideInUp 0.5s ease-out; + + mat-card-header { + border-radius: 12px 12px 0 0; + } + + .form-grid { + grid-template-columns: repeat(2, 1fr); + } + + .button-group { + display: flex; + align-items: center; + gap: 8px; + margin-top: 16px; + } +} + +@keyframes slideInUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.charges-table-container { + margin-top: 24px; + border: 1px solid var(--color-common-border); + border-radius: 8px; + overflow: hidden; + width: 100%; + + .charges-table { + width: 100% !important; + min-width: 100% !important; + table-layout: fixed; + margin: 0; + } + + .add-plan-edit { + height: calc(100vh - 650px); + overflow: auto; + } +} + +.info-icon { + // font-size: 17px; + opacity: 0.7; + transition: opacity 0.2s ease-in-out; + position: absolute; + right: 4px; + // top: 4px; + z-index: 1; + + &:hover { + opacity: 1; + } +} + +.code-block { + background-color: #000000; + color: #ffffff; + padding: 16px; + border-radius: 8px; + overflow-x: auto; + font-family: 'Consolas', 'Monaco', 'Courier New', monospace; + font-size: 12px; + line-height: 1.6; + max-height: 350px; + overflow-y: auto; + margin: 0; + + code { + white-space: pre-wrap; + word-break: break-word; + } +} + +.bg-dark { + background-color: #616161 !important; + color: #ffffff !important; +} +.text-link { + color: var(--color-common-primary) !important; +} + +.preview-input-field { + input { + border: none; + outline: none; + background: transparent; + width: 100%; + + &::placeholder { + color: var(--color-common-text); + opacity: 1; + } + } +} + +.custom-toggle-group { + display: inline-flex; + border-radius: 8px; + overflow: hidden; + border: 1px solid var(--color-common-border); + background-color: var(--color-common-bg); + + .custom-toggle-btn { + padding: 8px 20px; + font-size: 13px; + font-weight: 500; + border: none; + background-color: transparent; + color: var(--color-common-secondary-text); + cursor: pointer; + transition: all 0.2s ease; + outline: none; + + &:not(:last-child) { + border-right: 1px solid var(--color-common-border); + } + + &:hover:not(.active) { + background-color: var(--color-common-hover); + } + + &.active { + background-color: var(--color-common-white); + color: var(--color-common-primary); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + } + } +} + +.social-login-icon-box { + border: 1px solid var(--color-common-border); + border-radius: 8px; + padding: 12px 16px; + display: flex; + align-items: center; + justify-content: center; + + img { + width: 20px; + height: 20px; + } +} + +.auth-option-btn { + width: 85%; + height: 44px; + border: 1px solid var(--color-common-border) !important; + border-radius: 8px !important; + font-size: 14px; + font-weight: 600; + background-color: var(--color-common-white) !important; + display: flex; + align-items: center; + justify-content: center; + + &.dark-theme { + background-color: transparent !important; + border-color: #ffffff !important; + } +} + +.auth-option-content { + display: flex; + align-items: center; + justify-content: flex-start; + width: 180px; +} + +.auth-option-icon { + height: 24px; + width: 24px; + min-width: 24px; + margin-right: 12px; + + &.dark-theme { + filter: invert(1); + } +} + +.auth-option-text { + white-space: nowrap; + + &.dark-theme { + color: #ffffff; + } +} + +.auth-credentials { + border-radius: var(--branding-border-radius, 8px) !important; + // mat-form-field and other elements use --border-common-radius-4; override with branding radius + --border-common-radius-4: var(--branding-border-radius, 8px); +} +.auth-credentials .branding-preview-btn { + background-color: var(--branding-button-color, #19e6ce) !important; + color: var(--branding-button-text-color, #000000) !important; + border-radius: var(--branding-border-radius, 8px) !important; +} +.auth-credentials .branding-preview-btn:hover { + background-color: var(--branding-button-hover-color, #19e6ce) !important; +} +.auth-credentials .auth-option-btn { + border-radius: var(--branding-border-radius, 8px) !important; +} +.auth-credentials .social-login-icon-box { + border-radius: var(--branding-border-radius, 8px) !important; +} + +.branding-preview-logo { + max-height: 48px; + max-width: 160px; + object-fit: contain; +} diff --git a/apps/proxy/src/app/features/create-feature/create-feature.component.ts b/apps/36-blocks/src/app/features/create-feature/create-feature.component.ts similarity index 95% rename from apps/proxy/src/app/features/create-feature/create-feature.component.ts rename to apps/36-blocks/src/app/features/create-feature/create-feature.component.ts index 6c64be98..4d3b097d 100644 --- a/apps/proxy/src/app/features/create-feature/create-feature.component.ts +++ b/apps/36-blocks/src/app/features/create-feature/create-feature.component.ts @@ -1,6 +1,28 @@ -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule, FormsModule } from '@angular/forms'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { LoaderComponent } from '@proxy/ui/loader'; +import { MatStepperModule } from '@angular/material/stepper'; +import { MatListModule } from '@angular/material/list'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { CopyButtonComponent } from '@proxy/ui/copy-button'; +import { MatTableModule } from '@angular/material/table'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatSelectModule } from '@angular/material/select'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatRadioModule } from '@angular/material/radio'; +import { MarkdownModule } from 'ngx-markdown'; import { cloneDeep, isEqual } from 'lodash-es'; import { + ChangeDetectionStrategy, Component, OnDestroy, OnInit, @@ -12,6 +34,8 @@ import { ElementRef, AfterViewInit, TemplateRef, + inject, + signal, } from '@angular/core'; import { BaseComponent } from '@proxy/ui/base-component'; import { BehaviorSubject, Observable, distinctUntilChanged, filter, of, take, takeUntil } from 'rxjs'; @@ -28,6 +52,7 @@ import { ProxyAuthScript, ProxyAuthScriptUrl, } from '@proxy/models/features-model'; +import { PublicScriptType, WidgetTheme } from '@proxy/constant'; import { AbstractControl, FormArray, FormControl, FormGroup, Validators, ValidatorFn } from '@angular/forms'; import { CAMPAIGN_NAME_REGEX, ONLY_INTEGER_REGEX, URL_REGEX } from '@proxy/regex'; import { CustomValidators } from '@proxy/custom-validator'; @@ -36,13 +61,13 @@ import { environment } from '../../../environments/environment'; import { HttpClient } from '@angular/common/http'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; import { MatStepper } from '@angular/material/stepper'; -import { MatDialog } from '@angular/material/dialog'; -import { MatDialogRef } from '@angular/material/dialog'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; import { getAcceptedTypeRegex } from '@proxy/utils'; import { SimpleDialogComponent } from './simple-dialog/simple-dialog.component'; import { CreatePlanDialogComponent } from './create-plan-dialog/create-plan-dialog.component'; import { CreateTaxDialogComponent } from './create-tax-dialog/create-tax-dialog.component'; import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; +import { ServiceListComponent } from '@proxy/ui/service-list'; type ServiceFormGroup = FormGroup<{ requirements: FormGroup<{ [key: string]: FormControl; @@ -82,7 +107,34 @@ export interface PeriodicElement { code?: string; } @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-create-feature', + imports: [ + CommonModule, + RouterModule, + ReactiveFormsModule, + FormsModule, + MatInputModule, + MatFormFieldModule, + MatIconModule, + MatCardModule, + MatButtonModule, + LoaderComponent, + MatStepperModule, + MatListModule, + MatChipsModule, + MarkdownModule, + MatTabsModule, + MatSlideToggleModule, + CopyButtonComponent, + MatTableModule, + MatDialogModule, + MatSelectModule, + MatTooltipModule, + MatExpansionModule, + MatRadioModule, + ServiceListComponent, + ], templateUrl: './create-feature.component.html', styleUrls: ['./create-feature.component.scss'], providers: [CreateFeatureComponentStore], @@ -93,6 +145,15 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, @ViewChild('authorizationStepContent', { read: ElementRef }) authorizationStepContent: ElementRef; @ViewChild('configureMethodDialogTemplate', { read: TemplateRef }) configureMethodDialogTemplateRef: TemplateRef; + + private componentStore = inject(CreateFeatureComponentStore); + private cdr = inject(ChangeDetectorRef); + private activatedRoute = inject(ActivatedRoute); + private toast = inject(PrimeNgToastService); + private ngZone = inject(NgZone); + private dialog = inject(MatDialog); + private http = inject(HttpClient); + public taxes: any[] = []; public createPlanForm: any; public taxConfigData: any; @@ -169,6 +230,7 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, public paymentDetailsFormFields: any; public paymentDetailsData: any; public featureFieldType = FeatureFieldType; + protected readonly WidgetTheme = WidgetTheme; public proxyAuthScript = ProxyAuthScript(environment.proxyServer); public configureMethodsTableColumns: string[] = ['method', 'toggle', 'configure']; @@ -250,19 +312,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, }), // New form controls for conditional steps }); - public demoDiv$: Observable = of(null); + public demoDiv = signal(null); public keepOrder = () => 0; - constructor( - private componentStore: CreateFeatureComponentStore, - private cdr: ChangeDetectorRef, - private activatedRoute: ActivatedRoute, - private toast: PrimeNgToastService, - private ngZone: NgZone, - private dialog: MatDialog, - private http: HttpClient - ) { - super(); - } ngOnInit(): void { this.componentStore.getWebhookEvents(); @@ -307,7 +358,7 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, feature.reference_id, feature.feature_id === 1 ? 'authorization' : 'subscription' ); - this.demoDiv$ = of(`
    `); + this.demoDiv.set(`
    `); // Initialize billable metrics form fields for edit mode if (feature.feature_id === 2) { @@ -449,7 +500,7 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, }, 10); } this.featureId = obj.id; - this.demoDiv$ = of(`
    `); + this.demoDiv.set(`
    `); }); this.createBillableMetric$.pipe(filter(Boolean), takeUntil(this.destroy$)).subscribe((metric) => { @@ -642,8 +693,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, public getEffectivePrimaryColor(): string { const theme = this.featureForm.get('brandingDetails.theme')?.value; const isDark = - theme === 'dark' || - (theme === 'system' && + theme === WidgetTheme.Dark || + (theme === WidgetTheme.System && typeof localStorage !== 'undefined' && localStorage.getItem('selected-theme') === 'dark-theme'); if (isDark) { @@ -984,6 +1035,9 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, } } + public getServiceFormAt = (index: number): AbstractControl | null => + (this.featureForm.get('serviceDetails') as FormArray)?.at(index) ?? null; + public get isConfigureMethodValid(): boolean { let isValid = true; const serviceFormArray = this.featureForm.controls.serviceDetails; @@ -1215,9 +1269,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, public deleteMetric(index: number): void { const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = dialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure to delete this metric?`; - componentInstance.confirmButtonText = 'Delete'; + dialogRef.componentRef.setInput('confirmationMessage', `Are you sure to delete this metric?`); + dialogRef.componentRef.setInput('confirmButtonText', 'Delete'); dialogRef.afterClosed().subscribe((action) => { if (action === 'yes') { this.componentStore.deleteBillableMetric({ @@ -1319,7 +1372,7 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, referenceId: this.getValueFromObservable(this.createUpdateObject$)?.reference_id ?? this.getValueFromObservable(this.featureDetails$)?.reference_id, - type: featureId === 1 ? 'authorization' : 'subscription', + type: featureId === 1 ? PublicScriptType.Authorization : PublicScriptType.Subscription, isPreview: true, target: '_blank', success: (data) => { @@ -1784,9 +1837,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, } public deletePlan(plan: any): void { const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = dialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure to delete this metric?`; - componentInstance.confirmButtonText = 'Delete'; + dialogRef.componentRef.setInput('confirmationMessage', `Are you sure to delete this metric?`); + dialogRef.componentRef.setInput('confirmButtonText', 'Delete'); dialogRef.afterClosed().subscribe((action) => { if (action === 'yes') { this.componentStore.deletePlan({ refId: this.getReferenceId(), code: plan.code }); @@ -1934,9 +1986,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, } public deleteTax(tax: any): void { const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = dialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure to delete this tax?`; - componentInstance.confirmButtonText = 'Delete'; + dialogRef.componentRef.setInput('confirmationMessage', `Are you sure to delete this tax?`); + dialogRef.componentRef.setInput('confirmButtonText', 'Delete'); dialogRef.afterClosed().subscribe((action) => { if (action === 'yes') { this.componentStore.deleteTax({ refId: this.getReferenceId(), code: tax.code }); @@ -2059,4 +2110,8 @@ export class CreateFeatureComponent extends BaseComponent implements OnDestroy, this.configureMethodDialogForm.markAllAsTouched(); } } + + handleFileUpload(fileInput: HTMLInputElement): void { + fileInput?.click(); + } } diff --git a/apps/proxy/src/app/features/create-feature/create-feature.store.ts b/apps/36-blocks/src/app/features/create-feature/create-feature.store.ts similarity index 99% rename from apps/proxy/src/app/features/create-feature/create-feature.store.ts rename to apps/36-blocks/src/app/features/create-feature/create-feature.store.ts index 2b1e8b7c..70c41567 100644 --- a/apps/proxy/src/app/features/create-feature/create-feature.store.ts +++ b/apps/36-blocks/src/app/features/create-feature/create-feature.store.ts @@ -1,7 +1,8 @@ import { Injectable } from '@angular/core'; import { BaseResponse, errorResolver } from '@proxy/models/root-models'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { EMPTY, Observable, catchError, switchMap } from 'rxjs'; import { IFeature, IFeatureDetails, IFeatureType, IMethod } from '@proxy/models/features-model'; import { FeaturesService } from '@proxy/services/proxy/features'; @@ -231,7 +232,7 @@ export class CreateFeatureComponentStore extends ComponentStore) => { return data.pipe( switchMap((id) => { - this.patchState({ isLoading: true }); + this.patchState({ isLoading: true, featureDetails: null }); return this.service.getFeatureDetails(id).pipe( tapResponse( (res: BaseResponse) => { diff --git a/apps/proxy/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts b/apps/36-blocks/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts similarity index 84% rename from apps/proxy/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts rename to apps/36-blocks/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts index acb03158..8137c145 100644 --- a/apps/proxy/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts +++ b/apps/36-blocks/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts @@ -1,4 +1,16 @@ -import { Component, Inject, OnInit, OnDestroy } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnInit, OnDestroy, inject } from '@angular/core'; +import { NgTemplateOutlet } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatIconModule } from '@angular/material/icon'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatRadioModule } from '@angular/material/radio'; import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; import { CustomValidators } from '@proxy/custom-validator'; @@ -6,7 +18,22 @@ import { BaseComponent } from '@proxy/ui/base-component'; import { COMMA, ENTER } from '@angular/cdk/keycodes'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-create-plan-dialog', + imports: [ + NgTemplateOutlet, + ReactiveFormsModule, + MatButtonModule, + MatCardModule, + MatIconModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatChipsModule, + MatSlideToggleModule, + MatRadioModule, + ], template: `

    {{ dialogTitle }}

    @@ -25,17 +52,17 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes';

    Plan Details

    - - - + @for (fieldKey of getPlanFormFields(); track fieldKey) { + + }
    @@ -46,17 +73,17 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes';
    - - - + @for (fieldKey of getChargesFormFields(); track fieldKey) { + + }
    -
    + @if (chargesList && chargesList.length > 0){ +

    Added Charges:

    @@ -108,6 +136,7 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes';
    + } @@ -122,102 +151,96 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; -
    + @if (fieldConfig?.type === 'checkbox') { +
    {{ fieldConfig?.label }} - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + @if (fieldConfig?.hint) {{{ fieldConfig?.hint }}} @if (getFieldError(fieldControl, fieldConfig)) { + {{ getFieldError(fieldControl, fieldConfig) }} + }
    - - - {{ fieldConfig?.label }} - * + } @if (fieldConfig?.type !== 'checkbox') { + + + {{ fieldConfig?.label }} + + @if (fieldConfig?.type === 'text' || fieldConfig?.type === 'number') { + } - - + @for (item of getChipListArray(fieldConfig?.label + '_0'); track item) { + - - {{ item }} - - - - - + {{ item }} + @if(!getChipListReadOnlySet(fieldConfig?.label + '_0')?.has(item)){ + + } + + } + + + } } + @if(fieldConfig?.type === 'textarea'){ + } - - - {{ option.label }} - + @if(fieldConfig?.type === 'select'){ + + @for (option of getSelectOptions(fieldConfig); track option.value) { + {{ option.label }} + } + } - - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + @if(fieldConfig?.hint) { + {{ fieldConfig?.hint }} + } @if(getFieldError(fieldControl, fieldConfig)) { + {{ getFieldError(fieldControl, fieldConfig) }} + } + } `, styles: [ @@ -326,32 +349,31 @@ export class CreatePlanDialogComponent extends BaseComponent implements OnInit, // Cache for select options to prevent infinite calls private optionsCache: { [key: string]: any[] } = {}; - constructor( - private fb: FormBuilder, - private dialog: MatDialog, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { - formConfig: any; - dialogTitle?: string; - submitButtonText?: string; - editData?: any; - metaData?: any; - chipListValues?: { [key: string]: Set }; - chargesList?: any[]; - optionsData?: { - taxes: any[]; - billableMetrics: any[]; - }; - } - ) { + private fb = inject(FormBuilder); + private dialog = inject(MatDialog); + public dialogRef = inject>(MatDialogRef); + public data = inject<{ + formConfig: any; + dialogTitle?: string; + submitButtonText?: string; + editData?: any; + metaData?: any; + chipListValues?: { [key: string]: Set }; + chargesList?: any[]; + optionsData?: { + taxes: any[]; + billableMetrics: any[]; + }; + }>(MAT_DIALOG_DATA); + + constructor() { super(); - this.formConfig = data.formConfig; - this.dialogTitle = data.dialogTitle || 'Create Plan'; - this.submitButtonText = data.submitButtonText || 'Create Plan'; - this.chargesList = data.chargesList || []; - this.chipListValues = data.chipListValues || {}; - this.metaData = data.metaData || {}; + this.formConfig = this.data.formConfig; + this.dialogTitle = this.data.dialogTitle || 'Create Plan'; + this.submitButtonText = this.data.submitButtonText || 'Create Plan'; + this.chargesList = this.data.chargesList || []; + this.chipListValues = this.data.chipListValues || {}; + this.metaData = this.data.metaData || {}; } ngOnInit(): void { diff --git a/apps/proxy/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts b/apps/36-blocks/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts similarity index 66% rename from apps/proxy/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts rename to apps/36-blocks/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts index c7bc5560..b4b908a8 100644 --- a/apps/proxy/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts +++ b/apps/36-blocks/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts @@ -1,4 +1,14 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnInit, inject } from '@angular/core'; +import { NgTemplateOutlet } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatRadioModule } from '@angular/material/radio'; import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { CustomValidators } from '@proxy/custom-validator'; @@ -6,7 +16,20 @@ import { BaseComponent } from '@proxy/ui/base-component'; import { COMMA, ENTER } from '@angular/cdk/keycodes'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-create-tax-dialog', + imports: [ + NgTemplateOutlet, + ReactiveFormsModule, + MatButtonModule, + MatIconModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatChipsModule, + MatRadioModule, + ], template: `

    {{ dialogTitle }}

    @@ -23,17 +46,17 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes';
    - - - + @for (fieldKey of getTaxFormFields(); track fieldKey) { + + }
    @@ -48,100 +71,94 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; -
    + @if (fieldConfig?.type === 'checkbox') { +
    {{ fieldConfig?.label }} - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + @if(fieldConfig?.hint){ + {{ fieldConfig?.hint }} + } @if(getFieldError(fieldControl, fieldConfig)){ + {{ getFieldError(fieldControl, fieldConfig) }} + }
    - - - {{ fieldConfig?.label }} - * + } @if (fieldConfig?.type !== 'checkbox') { + + + {{ fieldConfig?.label }} + + @if (fieldConfig?.type === 'text' || fieldConfig?.type === 'number') { + } - - + @for (item of getChipListArray(fieldConfig?.label + '_0'); track item) { + - - {{ item }} - - - - - + {{ item }} + @if (!getChipListReadOnlySet(fieldConfig?.label + '_0')?.has(item)) { + + } + + } + + + } } + @if (fieldConfig?.type === 'textarea') { + } - - - {{ option.label }} - + @if (fieldConfig?.type === 'select') { + + @for (option of getSelectOptions(fieldConfig); track option.value) { + {{ option.label }} + } - - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + } @if (fieldConfig?.hint) { + {{ fieldConfig?.hint }} + } @if (getFieldError(fieldControl, fieldConfig)) { + {{ getFieldError(fieldControl, fieldConfig) }} + } + } `, styles: [ @@ -187,26 +204,25 @@ export class CreateTaxDialogComponent extends BaseComponent implements OnInit { // Cache for select options to prevent infinite calls private optionsCache: { [key: string]: any[] } = {}; - constructor( - private fb: FormBuilder, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { - formConfig: any; - dialogTitle?: string; - submitButtonText?: string; - editData?: any; - chipListValues?: { [key: string]: Set }; - optionsData?: { - taxes: any[]; - }; - } - ) { + private fb = inject(FormBuilder); + public dialogRef = inject>(MatDialogRef); + public data = inject<{ + formConfig: any; + dialogTitle?: string; + submitButtonText?: string; + editData?: any; + chipListValues?: { [key: string]: Set }; + optionsData?: { + taxes: any[]; + }; + }>(MAT_DIALOG_DATA); + + constructor() { super(); - this.formConfig = data.formConfig; - this.dialogTitle = data.dialogTitle || 'Taxes'; - this.submitButtonText = data.submitButtonText || 'Save'; - this.chipListValues = data.chipListValues || {}; + this.formConfig = this.data.formConfig; + this.dialogTitle = this.data.dialogTitle || 'Taxes'; + this.submitButtonText = this.data.submitButtonText || 'Save'; + this.chipListValues = this.data.chipListValues || {}; } ngOnInit(): void { diff --git a/apps/proxy/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts b/apps/36-blocks/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts similarity index 81% rename from apps/proxy/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts rename to apps/36-blocks/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts index f7a92115..8fb3b9e5 100644 --- a/apps/proxy/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts +++ b/apps/36-blocks/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts @@ -1,11 +1,32 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnInit, inject } from '@angular/core'; +import { NgTemplateOutlet } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { CustomValidators } from '@proxy/custom-validator'; import { HttpClient } from '@angular/common/http'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-simple-dialog', + imports: [ + NgTemplateOutlet, + ReactiveFormsModule, + MatButtonModule, + MatIconModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatSlideToggleModule, + ], template: `

    {{ dialogTitle }}

    @@ -15,19 +36,17 @@ import { HttpClient } from '@angular/common/http';
    - - - - - + @for (fieldKey of getFormFields(); track fieldKey) { @if (!isFieldHidden(fieldKey)) { + + } }
    @@ -39,58 +58,59 @@ import { HttpClient } from '@angular/common/http'; -
    + @if (fieldConfig?.type === 'checkbox') { +
    {{ fieldConfig?.label }} - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + @if (fieldConfig?.hint) { + {{ fieldConfig?.hint }} + } @if (getFieldError(fieldControl, fieldConfig)) { + {{ getFieldError(fieldControl, fieldConfig) }} + }
    - - - {{ fieldConfig?.label }} - * + } @if (fieldConfig?.type !== 'checkbox') { + + + {{ fieldConfig?.label }} + + @if (fieldConfig?.type === 'text' || fieldConfig?.type === 'number') { + } + @if (fieldConfig?.type === 'textarea') { + } - - - {{ option.label }} - + @if (fieldConfig?.type === 'select') { + + @for (option of getSelectOptions(fieldConfig); track option.value) { + {{ option.label }} + } - - {{ fieldConfig?.hint }} - {{ - getFieldError(fieldControl, fieldConfig) - }} + } @if (fieldConfig?.hint) { + {{ fieldConfig?.hint }} + } @if (getFieldError(fieldControl, fieldConfig)) { + {{ getFieldError(fieldControl, fieldConfig) }} + } + } `, }) @@ -101,22 +121,21 @@ export class SimpleDialogComponent implements OnInit { public submitButtonText: string; private optionsCache: { [key: string]: any[] } = {}; - constructor( - private fb: FormBuilder, - private http: HttpClient, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { - message: string; - formConfig: any; - dialogTitle?: string; - submitButtonText?: string; - editData?: any; - } - ) { - this.formConfig = data.formConfig; - this.dialogTitle = data.dialogTitle || 'Add New Item'; - this.submitButtonText = data.submitButtonText || 'Submit'; + private fb = inject(FormBuilder); + private http = inject(HttpClient); + public dialogRef = inject>(MatDialogRef); + public data = inject<{ + message: string; + formConfig: any; + dialogTitle?: string; + submitButtonText?: string; + editData?: any; + }>(MAT_DIALOG_DATA); + + constructor() { + this.formConfig = this.data.formConfig; + this.dialogTitle = this.data.dialogTitle || 'Add New Item'; + this.submitButtonText = this.data.submitButtonText || 'Submit'; } ngOnInit(): void { diff --git a/apps/36-blocks/src/app/features/feature/feature.component.html b/apps/36-blocks/src/app/features/feature/feature.component.html new file mode 100644 index 00000000..1b7acef0 --- /dev/null +++ b/apps/36-blocks/src/app/features/feature/feature.component.html @@ -0,0 +1,179 @@ +@if (loading$ | async; as loading) { +
    + @if (loading.dataLoading && (hasSomeFeatures$ | async) === null) { } + + +
    + @if ((hasSomeFeatures$ | async) === false) { +

    Blocks

    + } @if ((hasSomeFeatures$ | async) === true) { +
    + +
    + } +
    + + +
    +
    + + @if ((hasSomeFeatures$ | async) === false) { +

    + The "Features" component in the Proxy Server is a dynamic tool that offers versatile authentication and + subscription plan options. It supports various authentication methods like OTP and social logins (e.g., Google, + Microsoft) while providing flexible subscription plans. Users benefit from enhanced security, cost-efficient + resource allocation, and a user-friendly dashboard for easy configuration. +

    + } @if ((hasSomeFeatures$ | async) === true) { + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name + @if (!loading.dataLoading) { + {{ element.name }} + } @else { + + } + Reference Id + @if (!loading.dataLoading) { +
    + + {{ + element.reference_id?.length > 15 + ? (element.reference_id | slice: 0:10) + + '...' + + (element.reference_id | slice: -5) + : element.reference_id + }} + + +
    + } @else { + + } +
    Method + @if (!loading.dataLoading) { @if (element.method?.name) { + + {{ element.method?.name }} + + } } @else { + + } + Type + @if (!loading.dataLoading) { @if (element.feature?.name) { + + {{ element.feature?.name }} + + } } @else { + + } + + @if (!loading.dataLoading) { +
    + +
    + } +
    + +
    +
    + +
    +
    + } +
    +} + +
    +
    diff --git a/apps/proxy/src/app/features/feature/feature.component.scss b/apps/36-blocks/src/app/features/feature/feature.component.scss similarity index 100% rename from apps/proxy/src/app/features/feature/feature.component.scss rename to apps/36-blocks/src/app/features/feature/feature.component.scss diff --git a/apps/proxy/src/app/features/feature/feature.component.ts b/apps/36-blocks/src/app/features/feature/feature.component.ts similarity index 55% rename from apps/proxy/src/app/features/feature/feature.component.ts rename to apps/36-blocks/src/app/features/feature/feature.component.ts index 8425dd29..1aa56d15 100644 --- a/apps/proxy/src/app/features/feature/feature.component.ts +++ b/apps/36-blocks/src/app/features/feature/feature.component.ts @@ -1,19 +1,61 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatIconModule } from '@angular/material/icon'; +import { MatTableModule } from '@angular/material/table'; +import { MatStepperModule } from '@angular/material/stepper'; +import { MatListModule } from '@angular/material/list'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { NoRecordFoundComponent } from '@proxy/ui/no-record-found'; +import { MatPaginatorGotoComponent } from '@proxy/ui/mat-paginator-goto'; +import { SearchComponent } from '@proxy/ui/search'; +import { SkeletonDirective } from '@proxy/directives/skeleton'; +import { LoaderComponent } from '@proxy/ui/loader'; +import { CopyButtonComponent } from '@proxy/ui/copy-button'; import { BaseComponent } from '@proxy/ui/base-component'; import { PAGE_SIZE_OPTIONS } from '@proxy/constant'; -import { omit } from 'lodash'; +import { omit } from 'lodash-es'; import { PageEvent } from '@angular/material/paginator'; import { FeatureComponentStore } from './feature.store'; import { Observable } from 'rxjs'; import { IFeature } from '@proxy/models/features-model'; import { IPaginatedResponse } from '@proxy/models/root-models'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-features', + imports: [ + CommonModule, + RouterModule, + FormsModule, + ReactiveFormsModule, + MatCardModule, + MatButtonModule, + MatInputModule, + MatFormFieldModule, + MatIconModule, + MatTableModule, + MatStepperModule, + MatListModule, + MatTooltipModule, + NoRecordFoundComponent, + MatPaginatorGotoComponent, + SearchComponent, + SkeletonDirective, + LoaderComponent, + CopyButtonComponent, + ], templateUrl: './feature.component.html', styleUrls: ['./feature.component.scss'], providers: [FeatureComponentStore], }) export class FeatureComponent extends BaseComponent implements OnDestroy, OnInit { + private componentStore = inject(FeatureComponentStore); + /** Store Feature Data */ public feature$: Observable> = this.componentStore.feature$; /** Store current API Inprogress State */ @@ -27,9 +69,6 @@ export class FeatureComponent extends BaseComponent implements OnDestroy, OnInit /** Store page size option */ public pageSizeOptions = PAGE_SIZE_OPTIONS; - constructor(private componentStore: FeatureComponentStore) { - super(); - } ngOnInit(): void { this.getFeatures(); } diff --git a/apps/proxy/src/app/features/feature/feature.store.ts b/apps/36-blocks/src/app/features/feature/feature.store.ts similarity index 96% rename from apps/proxy/src/app/features/feature/feature.store.ts rename to apps/36-blocks/src/app/features/feature/feature.store.ts index 7378fadc..22eb77a3 100644 --- a/apps/proxy/src/app/features/feature/feature.store.ts +++ b/apps/36-blocks/src/app/features/feature/feature.store.ts @@ -1,7 +1,8 @@ import { Injectable } from '@angular/core'; import { BaseResponse, IPaginatedResponse, errorResolver } from '@proxy/models/root-models'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { EMPTY, Observable, catchError, switchMap } from 'rxjs'; import { IFeature, IFeatureReq } from '@proxy/models/features-model'; import { FeaturesService } from '@proxy/services/proxy/features'; diff --git a/apps/36-blocks/src/app/features/features.routes.ts b/apps/36-blocks/src/app/features/features.routes.ts new file mode 100644 index 00000000..5af29be2 --- /dev/null +++ b/apps/36-blocks/src/app/features/features.routes.ts @@ -0,0 +1,17 @@ +import { Route } from '@angular/router'; + +export const featuresRoutes: Route[] = [ + { + path: '', + loadComponent: () => import('./feature/feature.component').then((c) => c.FeatureComponent), + pathMatch: 'full', + }, + { + path: 'create', + loadComponent: () => import('./create-feature/create-feature.component').then((c) => c.CreateFeatureComponent), + }, + { + path: 'manage/:id', + loadComponent: () => import('./create-feature/create-feature.component').then((c) => c.CreateFeatureComponent), + }, +]; diff --git a/apps/proxy/src/app/guard/project.guard.ts b/apps/36-blocks/src/app/guard/project.guard.ts similarity index 92% rename from apps/proxy/src/app/guard/project.guard.ts rename to apps/36-blocks/src/app/guard/project.guard.ts index 330c0576..d5a6b8b7 100644 --- a/apps/proxy/src/app/guard/project.guard.ts +++ b/apps/36-blocks/src/app/guard/project.guard.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { CanActivate, UrlTree, Router } from '@angular/router'; +import { UrlTree, Router } from '@angular/router'; import { Observable, filter } from 'rxjs'; import { take } from 'rxjs/operators'; import { rootActions } from '../ngrx/actions'; @@ -11,7 +11,7 @@ import { IProjects } from '@proxy/models/logs-models'; @Injectable({ providedIn: 'root', }) -export class ProjectGuard implements CanActivate { +export class ProjectGuard { public getProject$: Observable>; constructor(private router: Router, private store: Store) { diff --git a/apps/36-blocks/src/app/layout/layout.component.html b/apps/36-blocks/src/app/layout/layout.component.html new file mode 100644 index 00000000..7346e4a0 --- /dev/null +++ b/apps/36-blocks/src/app/layout/layout.component.html @@ -0,0 +1,135 @@ +
    +
    +
    +
    + apps +
    + + {{ (clientSettings$ | async)?.client?.name }} + + @if (isSideNavOpen | async) { + {{ + clientsMenuTrigger?.menuOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down' + }} + } + + @if (clients$ | async; as clientList) { + + @if (clientList.totalEntityCount > 25) { + + + @for (client of clientList?.data; track client.id) { + + } + + + } @else { @for (client of clientList?.data; track client.id) { + + } } + + } + +
    +
    + +
    + + + + @if (logInData$ | async; as user) { + + } +
    +
    + + +
    + +
    +
    diff --git a/apps/36-blocks/src/app/layout/layout.component.scss b/apps/36-blocks/src/app/layout/layout.component.scss new file mode 100644 index 00000000..015ae483 --- /dev/null +++ b/apps/36-blocks/src/app/layout/layout.component.scss @@ -0,0 +1,11 @@ +:not(.collapsed-sidebar) { + @media (max-width: 992px) { + .mat-drawer-content { + position: fixed; + z-index: 999; + top: 0; + bottom: 0; + background: var(--mat-sys-surface); + } + } +} diff --git a/apps/proxy/src/app/layout/layout.component.ts b/apps/36-blocks/src/app/layout/layout.component.ts similarity index 74% rename from apps/proxy/src/app/layout/layout.component.ts rename to apps/36-blocks/src/app/layout/layout.component.ts index b26bc30c..b798f6e9 100644 --- a/apps/proxy/src/app/layout/layout.component.ts +++ b/apps/36-blocks/src/app/layout/layout.component.ts @@ -1,20 +1,62 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnDestroy, + OnInit, + inject, + signal, +} from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatIconModule } from '@angular/material/icon'; +import { MatListModule } from '@angular/material/list'; +import { MatSidenavModule } from '@angular/material/sidenav'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { CDKScrollComponent } from '@proxy/ui/virtual-scroll'; +import { ScrollingModule } from '@angular/cdk/scrolling'; +import { MainLeftSideNavComponent } from './main-left-side-nav/main-left-side-nav.component'; import { IClient, IClientSettings, IFirebaseUserModel, IPaginatedResponse } from '@proxy/models/root-models'; import { BaseComponent } from '@proxy/ui/base-component'; import { Store, select } from '@ngrx/store'; import { selectLogInData } from '../auth/ngrx/selector/login.selector'; -import { isEqual } from 'lodash'; +import { isEqual } from 'lodash-es'; import { BehaviorSubject, Observable, distinctUntilChanged, filter, takeUntil, combineLatest } from 'rxjs'; import { ILogInFeatureStateWithRootState } from '../auth/ngrx/store/login.state'; import * as logInActions from '../auth/ngrx/actions/login.action'; import { rootActions } from '../ngrx/actions'; -import { selectAllClient, selectClientSettings, selectSwtichClientSuccess } from '../ngrx'; +import { selectAllClient, selectClientSettings, selectSwitchClientSuccess } from '../ngrx'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { RootService } from '@proxy/services/proxy/root'; import { environment } from '../../environments/environment'; import { AuthService } from '@proxy/services/proxy/auth'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-layout', + imports: [ + RouterModule, + CommonModule, + MatMenuModule, + MatButtonModule, + MatDividerModule, + MatIconModule, + MatListModule, + MatSidenavModule, + MatToolbarModule, + MatExpansionModule, + MatTooltipModule, + MatSlideToggleModule, + CDKScrollComponent, + ScrollingModule, + MainLeftSideNavComponent, + ], + host: { class: 'flex w-full h-screen' }, templateUrl: './layout.component.html', styleUrls: ['./layout.component.scss'], }) @@ -25,6 +67,7 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy public swtichClientSuccess$: Observable; public isSideNavOpen = new BehaviorSubject(true); + public isDarkMode = signal(false); public toggleMenuSideBar: boolean; public showContainer = false; @@ -32,14 +75,15 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy itemsPerPage: 25, pageNo: 1, }; - constructor( - private store: Store, - - private router: Router, - private route: ActivatedRoute, - private rootService: RootService, - private authService: AuthService - ) { + + private store = inject>(Store); + private router = inject(Router); + private route = inject(ActivatedRoute); + private rootService = inject(RootService); + private authService = inject(AuthService); + private cdr = inject(ChangeDetectorRef); + + constructor() { super(); this.logInData$ = this.store.pipe( select(selectLogInData), @@ -57,7 +101,7 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy takeUntil(this.destroy$) ); this.swtichClientSuccess$ = this.store.pipe( - select(selectSwtichClientSuccess), + select(selectSwitchClientSuccess), distinctUntilChanged(isEqual), takeUntil(this.destroy$) ); @@ -70,6 +114,7 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy } else { console.error('Element with ID "chatbotContainer" not found'); } + this.cdr.markForCheck(); }); } ngOnInit(): void { @@ -116,7 +161,6 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy parentId: 'ChatbotContainer', fullScreen: true, }; - console.log('SendDataToChatbot ==>', payload); setTimeout(() => { (window as any).SendDataToChatbot(payload); (window as any).openChatbot(); @@ -169,6 +213,9 @@ export class LayoutComponent extends BaseComponent implements OnInit, OnDestroy switchedDarkMode(isDarkMode: boolean) { const hostClass = isDarkMode ? 'dark-theme' : 'light-theme'; localStorage.setItem('selected-theme', hostClass); + document.body.classList.remove('dark-theme', 'light-theme'); + document.body.classList.add(hostClass); + this.isDarkMode.set(isDarkMode); } public isMobileDevice() { diff --git a/apps/proxy/src/app/layout/layout-routing.module.ts b/apps/36-blocks/src/app/layout/layout.routes.ts similarity index 53% rename from apps/proxy/src/app/layout/layout-routing.module.ts rename to apps/36-blocks/src/app/layout/layout.routes.ts index a8e29505..c0f8ee55 100644 --- a/apps/proxy/src/app/layout/layout-routing.module.ts +++ b/apps/36-blocks/src/app/layout/layout.routes.ts @@ -1,47 +1,38 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { LayoutComponent } from './layout.component'; +import { Route } from '@angular/router'; import { CanActivateRouteGuard } from '../auth/authguard'; import { redirectUnauthorizedTo } from '@angular/fire/compat/auth-guard'; -import { ChatbotComponent } from '../chatbot/chatbot.component'; import { ProjectGuard } from '../guard/project.guard'; const redirectUnauthorizedToLogin = () => redirectUnauthorizedTo(['login']); -const routes: Routes = [ +export const layoutRoutes: Route[] = [ { path: '', - component: LayoutComponent, + loadComponent: () => import('./layout.component').then((c) => c.LayoutComponent), children: [ { path: '', redirectTo: 'dashboard', pathMatch: 'full' }, { path: 'logs', - loadChildren: () => import('../logs/logs.module').then((p) => p.LogsModule), + loadChildren: () => import('../logs/logs.routes').then((r) => r.logsRoutes), }, { path: 'dashboard', - loadChildren: () => import('../dashboard/dashborad.module').then((p) => p.DashboardModule), + loadComponent: () => import('../dashboard/dashboard.component').then((c) => c.DashboardComponent), }, { path: 'features', - loadChildren: () => import('../features/features.module').then((p) => p.FeaturesModule), + loadChildren: () => import('../features/features.routes').then((r) => r.featuresRoutes), }, { path: 'users', - loadChildren: () => import('../users/users.module').then((p) => p.UsersModule), + loadComponent: () => import('../users/user/user.component').then((c) => c.UserComponent), }, { path: 'chatbot', - component: ChatbotComponent, + loadComponent: () => import('../chatbot/chatbot.component').then((c) => c.ChatbotComponent), }, ], data: { authGuardPipe: redirectUnauthorizedToLogin }, canActivate: [CanActivateRouteGuard, ProjectGuard], }, ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class LayoutRoutingModule {} diff --git a/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.html b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.html new file mode 100644 index 00000000..f99d729b --- /dev/null +++ b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.html @@ -0,0 +1,16 @@ + + + @for (item of navItems; track item.route) { + + {{ item.icon }} + {{ item.label }} + + } + + diff --git a/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss new file mode 100644 index 00000000..8fe41612 --- /dev/null +++ b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss @@ -0,0 +1,6 @@ +:host { + a.active-list-item::before { + background-color: var(--mat-list-list-item-hover-state-layer-color, var(--mat-sys-on-surface)); + opacity: var(--mat-list-list-item-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); + } +} diff --git a/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts new file mode 100644 index 00000000..94228f19 --- /dev/null +++ b/apps/36-blocks/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts @@ -0,0 +1,38 @@ +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatListModule } from '@angular/material/list'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { BaseComponent } from '@proxy/ui/base-component'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'proxy-main-left-side-nav', + imports: [ + RouterModule, + MatMenuModule, + MatListModule, + MatButtonModule, + MatIconModule, + MatDividerModule, + MatExpansionModule, + MatTooltipModule, + ], + templateUrl: './main-left-side-nav.component.html', + styleUrls: ['./main-left-side-nav.component.scss'], +}) +export class MainLeftSideNavComponent extends BaseComponent { + public isSideNavOpen = input(); + + protected readonly navItems = [ + { route: 'logs', icon: 'description', label: 'Logs' }, + { route: 'dashboard', icon: 'dashboard', label: 'Dashboard' }, + { route: 'features', icon: 'featured_play_list', label: 'Blocks' }, + { route: 'users', icon: 'person', label: 'User' }, + { route: 'chatbot', icon: 'face', label: 'Ask Ai' }, + ]; +} diff --git a/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html b/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html new file mode 100755 index 00000000..4cec2c36 --- /dev/null +++ b/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html @@ -0,0 +1,46 @@ +
    + @if (data.isLoading$ | async) { + + } + +
    +

    Logs Details

    + +
    + + + + @if (data) { +
    + @if (data.logData$ | async; as logdata) { @if (data?.logSettings?.store_headers) { + + } @if (data?.logSettings?.store_requestBody) { + + } @if (data?.logSettings?.store_response) { + + } } @else { @if ((data.isLoading$ | async) === false) { + + } } +
    + } +
    + + + {{ title }} + + +
    
    +        
    +
    +
    diff --git a/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.scss b/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.scss similarity index 100% rename from apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.scss rename to apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.scss diff --git a/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts b/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts new file mode 100755 index 00000000..c7c258e3 --- /dev/null +++ b/apps/36-blocks/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts @@ -0,0 +1,38 @@ +import { ChangeDetectionStrategy, Component, OnDestroy, inject } from '@angular/core'; +import { AsyncPipe, NgTemplateOutlet } from '@angular/common'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatDialogModule } from '@angular/material/dialog'; +import { LoaderComponent } from '@proxy/ui/loader'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ILogDetailRes } from '@proxy/models/logs-models'; +import { BaseComponent } from '@proxy/ui/base-component'; +import { Observable } from 'rxjs'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'proxy-log-details-side-dialog', + imports: [AsyncPipe, NgTemplateOutlet, MatButtonModule, MatIconModule, MatDialogModule, LoaderComponent], + templateUrl: './log-details-side-dialog.component.html', + styleUrls: ['./log-details-side-dialog.component.scss'], +}) +export class LogsDetailsSideDialogComponent extends BaseComponent implements OnDestroy { + public dialogRef = inject>(MatDialogRef); + public data = inject<{ + logData$: Observable; + isLoading$: Observable; + logSettings: any; + }>(MAT_DIALOG_DATA); + + constructor() { + super(); + } + + public onCloseDialog(): void { + this.dialogRef.close(); + } + + public ngOnDestroy(): void { + super.ngOnDestroy(); + } +} diff --git a/apps/36-blocks/src/app/logs/log/log.component.html b/apps/36-blocks/src/app/logs/log/log.component.html new file mode 100644 index 00000000..140b5110 --- /dev/null +++ b/apps/36-blocks/src/app/logs/log/log.component.html @@ -0,0 +1,305 @@ +
    + @if (isLoading$ | async) { + + } +
    +
    + + Select Project + + + + All + @for (project of engProjectFormGroup.value?.environments?.projects ?? (projects$ | async)?.data; + track project.id) { + {{ project.name }} + } + + + arrow_drop_down + + + Select Environment + + + + All + @for (environment of engProjectFormGroup.value?.projects?.environments ?? (environments$ | + async)?.data; track environment.id) { + {{ environment.name }} + } + + + arrow_drop_down + + +
    +
    + + + +
    +
    + + Select request type + + + All + + @for (type of requestTypes; track type) { + {{ type }} + } + + + + Select range type + + None + Response Time + Status Code + + + @if (logsFilterForm.controls.range.value) { +
    + + From + + @if (logsFilterForm.controls.from.invalid) { @if + (logsFilterForm.get('from').errors?.pattern) { + Invalid Number + } @if (logsFilterForm.get('from').errors?.limitExceeded) { + From should be less than or equal to To + } @if (logsFilterForm.get('from').errors?.maxlength; as maxlengthError) { + Max {{ maxlengthError.requiredLength }} number are allowed + } } + + + To + + @if (logsFilterForm.controls.to.invalid) { @if + (logsFilterForm.get('to').errors?.pattern) { + Invalid Number + } @if (logsFilterForm.get('to').errors?.maxlength; as maxlengthError) { + Max {{ maxlengthError.requiredLength }} number are allowed + } } + +
    + } +
    + +
    + + + +
    +
    +
    + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Date/Time +
    + {{ element?.created_at | date: 'd MMM y' }} + {{ element?.created_at | date: 'shortTime' }} +
    +
    Project +
    + {{ element.project_name }} + {{ element.environment_name }} +
    +
    User IP + {{ element.user_ip }} + Endpoint + {{ + element.endpoint + }} + Method + @if (element.request_type) { + {{ element.request_type }} + } + Status + @if (element.status_code) { + {{ element.status_code }} + } + Response time + @if (element.response_time != null) { + {{ element.response_time }}ms + } +
    + +
    +
    + +
    +
    +
    diff --git a/apps/proxy/src/app/logs/log/log.component.scss b/apps/36-blocks/src/app/logs/log/log.component.scss similarity index 100% rename from apps/proxy/src/app/logs/log/log.component.scss rename to apps/36-blocks/src/app/logs/log/log.component.scss diff --git a/apps/proxy/src/app/logs/log/log.component.ts b/apps/36-blocks/src/app/logs/log/log.component.ts similarity index 77% rename from apps/proxy/src/app/logs/log/log.component.ts rename to apps/36-blocks/src/app/logs/log/log.component.ts index 3cdd0527..d7aa9da4 100644 --- a/apps/proxy/src/app/logs/log/log.component.ts +++ b/apps/36-blocks/src/app/logs/log/log.component.ts @@ -1,4 +1,36 @@ -import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnDestroy, + OnInit, + ViewChild, + inject, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatSelectModule } from '@angular/material/select'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatIconModule } from '@angular/material/icon'; +import { MatTableModule } from '@angular/material/table'; +import { MatSortModule } from '@angular/material/sort'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { DateRangePickerComponent } from '@proxy/date-range-picker'; +import { NoRecordFoundComponent } from '@proxy/ui/no-record-found'; +import { MatPaginatorGotoComponent } from '@proxy/ui/mat-paginator-goto'; +import { LoaderComponent } from '@proxy/ui/loader'; +import { SearchComponent } from '@proxy/ui/search'; +import { RemoveCharacterDirective } from '@proxy/directives/RemoveCharacterDirective'; +import { CDKScrollComponent } from '@proxy/ui/virtual-scroll'; +import { LogsDetailsSideDialogComponent } from '../log-details-side-dialog/log-details-side-dialog.component'; import { BaseComponent } from '@proxy/ui/base-component'; import { DEFAULT_END_DATE, @@ -12,8 +44,8 @@ import { LogsComponentStore } from './logs.store'; import { Observable, distinctUntilChanged, takeUntil } from 'rxjs'; import { IEnvironments, ILogDetailRes, ILogsRes, IProjects } from '@proxy/models/logs-models'; import { IClientSettings, IPaginatedResponse } from '@proxy/models/root-models'; -import * as dayjs from 'dayjs'; -import { isEqual, omit } from 'lodash'; +import dayjs from 'dayjs'; +import { isEqual, omit } from 'lodash-es'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { ONLY_INTEGER_REGEX } from '@proxy/regex'; import { MatMenuTrigger } from '@angular/material/menu'; @@ -21,14 +53,40 @@ import { MatCheckboxChange } from '@angular/material/checkbox'; import { CustomValidators } from '@proxy/custom-validator'; import { PageEvent } from '@angular/material/paginator'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { LogsDetailsSideDialogComponent } from '../log-details-side-dialog/log-details-side-dialog.component'; import { Store, select } from '@ngrx/store'; import { IAppState, selectClientSettings } from '../../ngrx'; type FilterTypes = 'environments' | 'projects'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-logs', + imports: [ + CommonModule, + RouterModule, + FormsModule, + ReactiveFormsModule, + MatCardModule, + MatButtonModule, + MatInputModule, + MatFormFieldModule, + MatSelectModule, + MatMenuModule, + MatIconModule, + MatTableModule, + MatSortModule, + MatCheckboxModule, + MatDividerModule, + MatDialogModule, + MatAutocompleteModule, + DateRangePickerComponent, + NoRecordFoundComponent, + MatPaginatorGotoComponent, + LoaderComponent, + SearchComponent, + RemoveCharacterDirective, + CDKScrollComponent, + ], templateUrl: './log.component.html', styleUrls: ['./log.component.scss'], providers: [LogsComponentStore], @@ -37,6 +95,11 @@ export class LogComponent extends BaseComponent implements OnDestroy, OnInit { @ViewChild(MatSort) matSort: MatSort; @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; + private componentStore = inject(LogsComponentStore); + private store = inject>(Store); + private dialog = inject(MatDialog); + private cdr = inject(ChangeDetectorRef); + public displayedColumns: string[] = [ 'created_at', 'project_name', @@ -95,11 +158,7 @@ export class LogComponent extends BaseComponent implements OnDestroy, OnInit { CustomValidators.greaterThan('from', 'to') ); - constructor( - private componentStore: LogsComponentStore, - private store: Store, - private dialog: MatDialog - ) { + constructor() { super(); this.clientSettings$ = this.store.pipe( select(selectClientSettings), @@ -123,6 +182,29 @@ export class LogComponent extends BaseComponent implements OnDestroy, OnInit { super.ngOnDestroy(); } + public getMethodBadgeClass(method: string): string { + switch (method?.toUpperCase()) { + case 'GET': + return 'badge-method-get'; + case 'POST': + return 'badge-method-post'; + case 'PUT': + case 'PATCH': + return 'badge-method-put'; + case 'DELETE': + return 'badge-method-delete'; + default: + return 'badge-method-default'; + } + } + + public getStatusBadgeClass(code: number): string { + if (code >= 200 && code < 300) return 'badge-status-2xx'; + if (code >= 300 && code < 400) return 'badge-status-3xx'; + if (code >= 400) return 'badge-status-4xx'; + return 'badge-method-default'; + } + public onEnter(searchKeyword: string) { if (searchKeyword?.length) { this.params = { @@ -319,6 +401,7 @@ export class LogComponent extends BaseComponent implements OnDestroy, OnInit { this.logDetailDialogRef.afterClosed().subscribe(() => { this.componentStore.resetReqLog(); this.logDetailDialogRef = null; + this.cdr.markForCheck(); }); } } diff --git a/apps/proxy/src/app/logs/log/logs.store.ts b/apps/36-blocks/src/app/logs/log/logs.store.ts similarity index 98% rename from apps/proxy/src/app/logs/log/logs.store.ts rename to apps/36-blocks/src/app/logs/log/logs.store.ts index b2c7e79f..de035969 100644 --- a/apps/proxy/src/app/logs/log/logs.store.ts +++ b/apps/36-blocks/src/app/logs/log/logs.store.ts @@ -1,7 +1,8 @@ import { Injectable } from '@angular/core'; import { BaseResponse, IPaginatedResponse, errorResolver, IReqParams } from '@proxy/models/root-models'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { IEnvironments, ILogDetailRes, ILogsReq, ILogsRes, IProjects } from '@proxy/models/logs-models'; import { LogsService } from '@proxy/services/proxy/logs'; import { EMPTY, Observable, catchError, switchMap } from 'rxjs'; diff --git a/apps/36-blocks/src/app/logs/logs.routes.ts b/apps/36-blocks/src/app/logs/logs.routes.ts new file mode 100644 index 00000000..1aec4f61 --- /dev/null +++ b/apps/36-blocks/src/app/logs/logs.routes.ts @@ -0,0 +1,10 @@ +import { Route } from '@angular/router'; + +export const logsRoutes: Route[] = [ + { + path: '', + loadComponent: () => import('./log/log.component').then((c) => c.LogComponent), + data: { title: 'Logs' }, + pathMatch: 'full', + }, +]; diff --git a/apps/proxy/src/app/ngrx/actions/index.ts b/apps/36-blocks/src/app/ngrx/actions/index.ts similarity index 100% rename from apps/proxy/src/app/ngrx/actions/index.ts rename to apps/36-blocks/src/app/ngrx/actions/index.ts diff --git a/apps/proxy/src/app/ngrx/actions/root.action.ts b/apps/36-blocks/src/app/ngrx/actions/root.action.ts similarity index 100% rename from apps/proxy/src/app/ngrx/actions/root.action.ts rename to apps/36-blocks/src/app/ngrx/actions/root.action.ts diff --git a/apps/36-blocks/src/app/ngrx/effects/index.ts b/apps/36-blocks/src/app/ngrx/effects/index.ts new file mode 100755 index 00000000..209b15df --- /dev/null +++ b/apps/36-blocks/src/app/ngrx/effects/index.ts @@ -0,0 +1 @@ +export * from './root'; diff --git a/apps/proxy/src/app/ngrx/effects/root/index.ts b/apps/36-blocks/src/app/ngrx/effects/root/index.ts similarity index 100% rename from apps/proxy/src/app/ngrx/effects/root/index.ts rename to apps/36-blocks/src/app/ngrx/effects/root/index.ts diff --git a/apps/proxy/src/app/ngrx/effects/root/root.effect.ts b/apps/36-blocks/src/app/ngrx/effects/root/root.effect.ts similarity index 93% rename from apps/proxy/src/app/ngrx/effects/root/root.effect.ts rename to apps/36-blocks/src/app/ngrx/effects/root/root.effect.ts index 7bf4a8cc..46b2c325 100755 --- a/apps/proxy/src/app/ngrx/effects/root/root.effect.ts +++ b/apps/36-blocks/src/app/ngrx/effects/root/root.effect.ts @@ -18,7 +18,7 @@ export class RootEffects { map((res: BaseResponse) => { if (res.hasError) { this.showError(res.errors); - rootActions.getClientSettingsError(); + return rootActions.getClientSettingsError(); } return rootActions.getClientSettingsSuccess({ response: res.data }); }), @@ -39,7 +39,7 @@ export class RootEffects { map((res: BaseResponse, void>) => { if (res.hasError) { this.showError(res.errors); - rootActions.getAllClientsError(); + return rootActions.getAllClientsError(); } return rootActions.getAllClientsSuccess({ response: res.data }); }), @@ -60,7 +60,7 @@ export class RootEffects { map((res: BaseResponse<{ message: string }, void>) => { if (res.hasError) { this.showError(res.errors); - rootActions.switchClientError(); + return rootActions.switchClientError(); } return rootActions.switchClientSuccess(); }), @@ -80,13 +80,13 @@ export class RootEffects { map((res) => { if (res.hasError) { this.showError(res.errors); - rootActions.getAllProjectsError(); + return rootActions.getAllProjectsError(); } return rootActions.getAllProjectSuccess({ response: res.data }); }), catchError((err) => { this.showError(err.errors); - return of(rootActions.getAllProjectsError); + return of(rootActions.getAllProjectsError()); }) ); }) diff --git a/apps/proxy/src/app/ngrx/index.ts b/apps/36-blocks/src/app/ngrx/index.ts similarity index 100% rename from apps/proxy/src/app/ngrx/index.ts rename to apps/36-blocks/src/app/ngrx/index.ts diff --git a/apps/proxy/src/app/ngrx/store/app.state.ts b/apps/36-blocks/src/app/ngrx/store/app.state.ts similarity index 100% rename from apps/proxy/src/app/ngrx/store/app.state.ts rename to apps/36-blocks/src/app/ngrx/store/app.state.ts diff --git a/apps/proxy/src/app/ngrx/store/index.ts b/apps/36-blocks/src/app/ngrx/store/index.ts similarity index 100% rename from apps/proxy/src/app/ngrx/store/index.ts rename to apps/36-blocks/src/app/ngrx/store/index.ts diff --git a/apps/proxy/src/app/ngrx/store/reducer/root.reducer.ts b/apps/36-blocks/src/app/ngrx/store/reducer/root.reducer.ts similarity index 94% rename from apps/proxy/src/app/ngrx/store/reducer/root.reducer.ts rename to apps/36-blocks/src/app/ngrx/store/reducer/root.reducer.ts index 7c920da0..6445d5d8 100755 --- a/apps/proxy/src/app/ngrx/store/reducer/root.reducer.ts +++ b/apps/36-blocks/src/app/ngrx/store/reducer/root.reducer.ts @@ -14,7 +14,7 @@ export interface IRootState { // All Clients clients: IPaginatedResponse; clientsInProcess: boolean; - swtichClientSuccess: boolean; + switchClientSuccess: boolean; //All project allProjects: IPaginatedResponse; projectInProcess: boolean; @@ -31,7 +31,7 @@ export const initialState: IRootState = { // All Clients clients: null, clientsInProcess: false, - swtichClientSuccess: false, + switchClientSuccess: false, projectInProcess: false, allProjects: null, }; @@ -99,21 +99,21 @@ const _rootReducer = createReducer( return { ...state, clientsInProcess: true, - swtichClientSuccess: false, + switchClientSuccess: false, }; }), on(rootActions.switchClientSuccess, (state) => { return { ...state, clientsInProcess: false, - swtichClientSuccess: true, + switchClientSuccess: true, }; }), on(rootActions.switchClientError, (state) => { return { ...state, clientsInProcess: false, - swtichClientSuccess: false, + switchClientSuccess: false, }; }), @@ -133,7 +133,7 @@ const _rootReducer = createReducer( on(rootActions.getAllProjectsError, (state) => { return { ...state, - projects: null, + allProjects: null, projectInProcess: false, }; }) diff --git a/apps/proxy/src/app/ngrx/store/selectors/index.ts b/apps/36-blocks/src/app/ngrx/store/selectors/index.ts similarity index 100% rename from apps/proxy/src/app/ngrx/store/selectors/index.ts rename to apps/36-blocks/src/app/ngrx/store/selectors/index.ts diff --git a/apps/proxy/src/app/ngrx/store/selectors/root.selector.ts b/apps/36-blocks/src/app/ngrx/store/selectors/root.selector.ts similarity index 91% rename from apps/proxy/src/app/ngrx/store/selectors/root.selector.ts rename to apps/36-blocks/src/app/ngrx/store/selectors/root.selector.ts index a4ea5977..c3ccb551 100755 --- a/apps/proxy/src/app/ngrx/store/selectors/root.selector.ts +++ b/apps/36-blocks/src/app/ngrx/store/selectors/root.selector.ts @@ -23,9 +23,9 @@ export const selectClientsInProcess = createSelector( selectRootState, (rootState: IRootState) => rootState.clientsInProcess ); -export const selectSwtichClientSuccess = createSelector( +export const selectSwitchClientSuccess = createSelector( selectRootState, - (rootState: IRootState) => rootState.swtichClientSuccess + (rootState: IRootState) => rootState.switchClientSuccess ); export const selectAllProjectList = createSelector(selectRootState, ({ allProjects }) => allProjects); export const selectProjectInProcess = createSelector( diff --git a/apps/36-blocks/src/app/public.routes.ts b/apps/36-blocks/src/app/public.routes.ts new file mode 100644 index 00000000..0400ac91 --- /dev/null +++ b/apps/36-blocks/src/app/public.routes.ts @@ -0,0 +1,9 @@ +import { Route } from '@angular/router'; + +export const publicRoutes: Route[] = [ + { path: '', redirectTo: 'register', pathMatch: 'full' }, + { + path: 'register', + loadComponent: () => import('./register/register.component').then((c) => c.RegisterComponent), + }, +]; diff --git a/apps/36-blocks/src/app/register/register.component.html b/apps/36-blocks/src/app/register/register.component.html new file mode 100644 index 00000000..5888541a --- /dev/null +++ b/apps/36-blocks/src/app/register/register.component.html @@ -0,0 +1,194 @@ +
    + +

    Register

    +
    +
    + +
    + + +
    +
    + + + +
    + +
    + + +
    +
    + Note: + Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol +
    + +
    + +
    +
    +
    +
    +
    + + +
    + + {{ label }} + @if (type === 'password' || type === 'confirm password') { + + } @else { + + } @if (formControl.touched) { + + @if (formControl.errors?.required) { {{ label }} is required. } @if + (formControl.errors?.minlengthWithSpace) { Min required length is 3 } @if + (formControl.errors?.noStartEndSpaces) { Start and End spaces are not allowed } @if + (formControl.errors?.min; as minError) { Min value required is {{ minError?.min }} } @if + (formControl.errors?.max; as maxError) { Max value allowed is {{ maxError?.max }} } @if + (formControl.errors?.minlength; as minLengthError) { Min required length is + {{ minLengthError?.requiredLength }} } @if (formControl.errors?.maxlength; as maxLengthError) { Max + allowed length is {{ maxLengthError?.requiredLength }} } @if (formControl.errors?.pattern) { + {{ patternError ? patternError : 'Enter valid ' + label }} } @if + (formControl.errors?.valueSameAsControl) { {{ label }} mismatch } + + } @if (hint) { {{ hint }} } + + @if (type === 'password' || type === 'confirm password') { + + + + + } +
    +
    + +
    + + +
    + @if (formControl.touched && !intlClass?.[required ? 'isRequiredValidNumber' : 'isValidNumber']) { + Please enter valid mobile number + } +
    +
    +
    + + @if (!visible) { + + + + } @else { + + + + } + diff --git a/apps/proxy/src/app/users/user/user.component.scss b/apps/36-blocks/src/app/register/register.component.scss similarity index 100% rename from apps/proxy/src/app/users/user/user.component.scss rename to apps/36-blocks/src/app/register/register.component.scss diff --git a/apps/proxy/src/app/register/register.component.ts b/apps/36-blocks/src/app/register/register.component.ts similarity index 73% rename from apps/proxy/src/app/register/register.component.ts rename to apps/36-blocks/src/app/register/register.component.ts index 53a4cddb..60547e1c 100644 --- a/apps/proxy/src/app/register/register.component.ts +++ b/apps/36-blocks/src/app/register/register.component.ts @@ -1,20 +1,39 @@ import { environment } from '../../environments/environment'; -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, inject } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { CommonModule, NgTemplateOutlet } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatButtonModule } from '@angular/material/button'; +import { MarkAllAsTouchedDirective } from '@proxy/directives/mark-all-as-touched'; import { BaseComponent } from '@proxy/ui/base-component'; import { Store } from '@ngrx/store'; import { FormControl, FormGroup, Validators } from '@angular/forms'; -import * as _ from 'lodash'; -import { EMAIL_REGEX, MOBILE_NUMBER_REGEX, NAME_REGEX, PASSWORD_REGEX } from '@proxy/regex'; +import { EMAIL_REGEX, NAME_REGEX, PASSWORD_REGEX } from '@proxy/regex'; import { CustomValidators } from '@proxy/custom-validator'; import { takeUntil } from 'rxjs'; import { IAppState } from '../ngrx/store/app.state'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; import { UsersService } from '@proxy/services/proxy/users'; import { IntlPhoneLib } from '@proxy/utils'; -import { Router } from '@angular/router'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-register-component', + imports: [ + RouterModule, + CommonModule, + NgTemplateOutlet, + FormsModule, + ReactiveFormsModule, + MatCardModule, + MatFormFieldModule, + MatInputModule, + MatButtonModule, + MarkAllAsTouchedDirective, + ], templateUrl: './register.component.html', styleUrls: ['./register.component.scss'], }) @@ -49,22 +68,13 @@ export class RegisterComponent extends BaseComponent implements OnDestroy, OnIni CustomValidators.valueSameAsControl('password'), ]), }), - client: new FormGroup({ - name: new FormControl(null, [Validators.required]), - email: new FormControl(null, [Validators.pattern(EMAIL_REGEX)]), - mobile: new FormControl(null, [Validators.pattern(MOBILE_NUMBER_REGEX)]), - }), }); public intlClass: IntlPhoneLib; - constructor( - private store: Store, - private service: UsersService, - private toast: PrimeNgToastService, - private router: Router - ) { - super(); - } + + private store = inject>(Store); + private service = inject(UsersService); + private toast = inject(PrimeNgToastService); ngOnInit(): void { this.registrationForm @@ -93,17 +103,11 @@ export class RegisterComponent extends BaseComponent implements OnDestroy, OnIni // Submit method to handle form submission submit() { if (this.registrationForm.valid) { - const formData = this.registrationForm.getRawValue(); - - const data = { - ...formData, - client: CustomValidators.removeNullKeys(formData.client), - }; + const formData = this.registrationForm.value; - this.service.register(data).subscribe( + this.service.register(formData).subscribe( (response) => { this.toast.success('Registration success'); - this.router.navigate(['login']); }, (error) => { this.toast.error(error); diff --git a/apps/proxy/src/app/registration/registration.component.ts b/apps/36-blocks/src/app/registration/registration.component.ts similarity index 89% rename from apps/proxy/src/app/registration/registration.component.ts rename to apps/36-blocks/src/app/registration/registration.component.ts index 91b666d2..6a5f7a06 100644 --- a/apps/proxy/src/app/registration/registration.component.ts +++ b/apps/36-blocks/src/app/registration/registration.component.ts @@ -1,4 +1,4 @@ -import { Component, NgZone, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, NgZone, OnInit, inject } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { BehaviorSubject } from 'rxjs'; import { ProxyAuthScriptUrl } from '@proxy/models/features-model'; @@ -6,14 +6,18 @@ import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; import { environment } from '../../environments/environment'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-registration', + imports: [], template: '', }) export class RegistrationComponent implements OnInit { private scriptLoaded = new BehaviorSubject(false); public loadingScript = new BehaviorSubject(false); - constructor(private route: ActivatedRoute, private ngZone: NgZone, private toast: PrimeNgToastService) {} + private route = inject(ActivatedRoute); + private ngZone = inject(NgZone); + private toast = inject(PrimeNgToastService); ngOnInit(): void { const params = this.route.snapshot.queryParamMap; diff --git a/apps/36-blocks/src/app/users/management/management.component.html b/apps/36-blocks/src/app/users/management/management.component.html new file mode 100644 index 00000000..47e58963 --- /dev/null +++ b/apps/36-blocks/src/app/users/management/management.component.html @@ -0,0 +1,430 @@ +
    + +
    + + Select Block + + @for (feature of features; track feature.reference_id) { + {{ feature.name }} + } + + @if (roleForm.get('feature_id')?.hasError('required')) { + Block is required + } + +
    + + @if (roleForm.get('feature_id')?.value) { + +
    + + + Settings + + + + + + +
    + + @if (selectedSectionIndex === 0) { +
    +
    + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Role + {{ element.role }} + Permissions +
    + @for (permission of element.permissionsList; track permission.name) { + + {{ permission.name }} + + } +
    +
    +
    + + + + + + +
    +
    + +
    +
    + +
    +
    + } + + + @if (selectedSectionIndex === 1) { +
    +
    + +
    + +
    + + +
    + + + + + + + + + + + + + + + + + + + +
    Permission +

    {{ element.name }}

    + @if (element.description) { +

    + {{ element.description }} +

    + } +
    +
    + + +
    +
    + +
    +
    + +
    +
    + } + + + @if (selectedSectionIndex === 2) { +
    +
    +
    +
    + code + Integration Script +
    + +
    +
    + +
    +
    + info +

    + Add this script to your page to integrate the user management component. +

    +
    +
    +
    +
    +
    + html + Container HTML +
    + +
    +
    + +
    +
    +
    +
    + } + + + @if (selectedSectionIndex === 3) { +
    +

    Default Roles

    +
    + + +
    + person_add +
    +
    +

    Default role for creator

    +

    Assigned after creating an organization.

    + + Select default role for creator + + @for (role of rolesDataSource.data; track role.id) { + {{ role.role }} + } + + +
    +
    +
    + + + +
    + group_add +
    +
    +

    Default role for member

    +

    Assigned to new organization members.

    + + Select default role for member + + @for (role of rolesDataSource.data; track role.id) { + {{ role.role }} + } + + +
    +
    +
    + + + +
    + visibility_off +
    +
    +

    Hidden roles

    +

    Select default roles to hide from users.

    + + Select roles to hide + + Owner + User + + +
    +
    +
    + +
    + + +
    +
    +
    + } +
    +
    + } +
    + + + +

    {{ isEditMode ? 'Edit Role' : 'Add Role' }}

    + +
    + + Role Name + + @if (dialogRoleForm.get('roleName')?.hasError('required')) { + Role name is required + } + + + + Permissions + + @for (permission of availablePermissions; track permission.name) { + {{ permission.name }} + } + + Select one or more permissions + + + + Description + + +
    +
    + + + + +
    + + + +

    {{ isEditPermissionMode ? 'Edit Permission' : 'Add Permission' }}

    + +
    + + Permission Name + + @if (dialogPermissionForm.get('permissionName')?.hasError('required')) { + Permission name is required + } + + + Description + + +
    +
    + + + + +
    diff --git a/apps/36-blocks/src/app/users/management/management.component.scss b/apps/36-blocks/src/app/users/management/management.component.scss new file mode 100644 index 00000000..3dbf9a00 --- /dev/null +++ b/apps/36-blocks/src/app/users/management/management.component.scss @@ -0,0 +1,3 @@ +td[data-label='Actions'] { + padding-right: 16px !important; +} diff --git a/apps/proxy/src/app/users/management/management.component.ts b/apps/36-blocks/src/app/users/management/management.component.ts similarity index 86% rename from apps/proxy/src/app/users/management/management.component.ts rename to apps/36-blocks/src/app/users/management/management.component.ts index eb24b52c..98fe4e72 100644 --- a/apps/proxy/src/app/users/management/management.component.ts +++ b/apps/36-blocks/src/app/users/management/management.component.ts @@ -1,7 +1,36 @@ -import { Component, OnInit, OnDestroy, ViewChild, TemplateRef } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnInit, + OnDestroy, + ViewChild, + TemplateRef, + inject, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatTableModule } from '@angular/material/table'; +import { MatCardModule } from '@angular/material/card'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatDividerModule } from '@angular/material/divider'; +import { ServiceListComponent } from '@proxy/ui/service-list'; +import { NoRecordFoundComponent } from '@proxy/ui/no-record-found'; +import { MatPaginatorGotoComponent } from '@proxy/ui/mat-paginator-goto'; +import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; +import { CopyButtonComponent } from '@proxy/ui/copy-button'; +import { MarkdownModule } from 'ngx-markdown'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { MatTableDataSource } from '@angular/material/table'; -import { MatPaginator, PageEvent } from '@angular/material/paginator'; +import { PageEvent } from '@angular/material/paginator'; import { FeatureComponentStore } from '../../features/feature/feature.store'; import { Observable, of, Subject, takeUntil } from 'rxjs'; import { filter } from 'rxjs/operators'; @@ -10,7 +39,7 @@ import { environment } from '../../../environments/environment'; import { IPaginatedResponse } from '@proxy/models/root-models'; import { UserComponentStore } from '../user/user.store'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; +import { PROXY_DOM_ID } from '@proxy/constant'; interface IRole { id: number; @@ -21,12 +50,39 @@ interface IRole { } @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-management', + imports: [ + CommonModule, + ReactiveFormsModule, + MatTableModule, + MatCardModule, + MatPaginatorModule, + NoRecordFoundComponent, + MatPaginatorGotoComponent, + MatButtonModule, + MatIconModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatDialogModule, + MatTooltipModule, + MatSlideToggleModule, + MatDividerModule, + ServiceListComponent, + CopyButtonComponent, + MarkdownModule, + ], templateUrl: './management.component.html', styleUrls: ['./management.component.scss'], providers: [FeatureComponentStore, UserComponentStore], }) export class ManagementComponent implements OnInit, OnDestroy { + private featureComponentStore = inject(FeatureComponentStore); + private userComponentStore = inject(UserComponentStore); + private dialog = inject(MatDialog); + private cdr = inject(ChangeDetectorRef); + public roleForm = new FormGroup({ feature_id: new FormControl(null, [Validators.required]), id: new FormControl(null), @@ -60,6 +116,13 @@ export class ManagementComponent implements OnInit, OnDestroy { public editingRole: IRole | null = null; public isEditPermissionMode: boolean = false; public editingPermission: any | null = null; + public selectedSectionIndex: number = 0; + public readonly managementSections = [ + { name: 'Roles' }, + { name: 'Permissions' }, + { name: 'Snippet' }, + { name: 'Settings' }, + ]; public features$: Observable> = this.featureComponentStore.feature$; public roles$: Observable> = this.userComponentStore.roles$; public createRole$: Observable = this.userComponentStore.createRole$; @@ -76,20 +139,18 @@ export class ManagementComponent implements OnInit, OnDestroy { return ProxyUserManagementScript(environment.proxyServer, referenceId || ''); } + public get proxyDomId(): string { + return PROXY_DOM_ID; + } + public get userProxyContainerHtml(): string { - return `
    `; + return `
    `; } @ViewChild('addRoleDialogTemplate', { static: false }) addRoleDialogTemplate: TemplateRef; @ViewChild('addPermissionDialogTemplate', { static: false }) addPermissionDialogTemplate: TemplateRef; - @ViewChild('rolesPaginator') rolesPaginator!: MatPaginator; - @ViewChild('permissionsPaginator') permissionsPaginator!: MatPaginator; - - constructor( - private featureComponentStore: FeatureComponentStore, - private userComponentStore: UserComponentStore, - private dialog: MatDialog - ) { + + constructor() { this.dialogRoleForm = new FormGroup({ roleName: new FormControl('', [Validators.required]), permissions: new FormControl([], []), @@ -112,6 +173,7 @@ export class ManagementComponent implements OnInit, OnDestroy { this.features$.subscribe((features) => { if (features) { this.filterFeatures(features.data); + this.cdr.markForCheck(); } }); @@ -137,6 +199,7 @@ export class ManagementComponent implements OnInit, OnDestroy { this.rolesDataSource.data = []; this.rolesTotalCount = 0; } + this.cdr.markForCheck(); }); this.permissions$.pipe(takeUntil(this.destroy$)).subscribe((permissions: any) => { if (permissions?.data) { @@ -148,6 +211,7 @@ export class ManagementComponent implements OnInit, OnDestroy { this.permissionsDataSource.data = []; this.permissionsTotalCount = 0; } + this.cdr.markForCheck(); }); this.createPermission$.pipe(takeUntil(this.destroy$)).subscribe((createPermission) => { if (createPermission) { @@ -181,6 +245,7 @@ export class ManagementComponent implements OnInit, OnDestroy { defaultRoleForMember: cRoles.default_member_role, hiddenDefaultRoles: hiddenRoles, }); + this.cdr.markForCheck(); } }); // Subscribe to feature selection changes @@ -391,10 +456,12 @@ export class ManagementComponent implements OnInit, OnDestroy { public deleteRole(role: IRole): void { const confirmDialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = confirmDialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure you want to delete the role "${role.role}"?`; - componentInstance.confirmButtonText = 'Delete'; - componentInstance.confirmButtonColor = 'warn'; + confirmDialogRef.componentRef.setInput( + 'confirmationMessage', + `Are you sure you want to delete the role "${role.role}"?` + ); + confirmDialogRef.componentRef.setInput('confirmButtonText', 'Delete'); + confirmDialogRef.componentRef.setInput('confirmButtonColor', 'warn'); confirmDialogRef.afterClosed().subscribe((action) => { if (action === 'yes') { @@ -482,10 +549,12 @@ export class ManagementComponent implements OnInit, OnDestroy { public deletePermission(permission: any): void { const confirmDialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = confirmDialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure you want to delete the permission "${permission.name}"?`; - componentInstance.confirmButtonText = 'Delete'; - componentInstance.confirmButtonColor = 'warn'; + confirmDialogRef.componentRef.setInput( + 'confirmationMessage', + `Are you sure you want to delete the permission "${permission.name}"?` + ); + confirmDialogRef.componentRef.setInput('confirmButtonText', 'Delete'); + confirmDialogRef.componentRef.setInput('confirmButtonColor', 'warn'); confirmDialogRef.afterClosed().subscribe((action) => { if (action === 'yes') { diff --git a/apps/36-blocks/src/app/users/user/user.component.html b/apps/36-blocks/src/app/users/user/user.component.html new file mode 100644 index 00000000..313a7ba7 --- /dev/null +++ b/apps/36-blocks/src/app/users/user/user.component.html @@ -0,0 +1,242 @@ +@if (loading$ | async; as loading) { +
    + + + +
    + +
    + + + +
    +
    + + Company Name + + + + Block + + None + @for (feature of features; track feature.reference_id) { + {{ feature.name }} + } + + +
    + +
    + + + +
    +
    +
    + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name + @if (!loading.dataLoading) { + {{ element.name }} + } @else { + + } + Email + @if (!loading.dataLoading) { + {{ element.email }} + } @else { + + } + Phone Number + @if (!loading.dataLoading) { + {{ + element.mobile ?? '-' + }} + } @else { + + } + User ID + @if (!loading.dataLoading) { +
    + + {{ + element?.id?.length > 15 + ? (element?.id | slice: 0:10) + '...' + (element?.id | slice: -5) + : element?.id + }} + + +
    + } @else { + + } +
    Block Name + @if (!loading.dataLoading) { @if (element?.feature_configuration?.name) { + + {{ element.feature_configuration.name }} + + } @else { + - + } } @else { + + } + Last Login + @if (!loading.dataLoading) { @if (element?.last_login_at) { +
    + {{ + element.last_login_at | date: 'd MMM y' + }} + {{ + element.last_login_at | date: 'mediumTime' + }} +
    + } @else { + - + } } @else { + + } +
    Created At + @if (!loading.dataLoading) { @if (element?.created_at) { +
    + {{ + element.created_at | date: 'd MMM y' + }} + {{ + element.created_at | date: 'mediumTime' + }} +
    + } @else { + - + } } @else { + + } +
    + +
    +
    + +
    +
    +
    + + + + + +
    +
    +} + +
    +
    diff --git a/libs/chart-ui/src/lib/msg-line-chart/line-chart.component.css b/apps/36-blocks/src/app/users/user/user.component.scss old mode 100755 new mode 100644 similarity index 100% rename from libs/chart-ui/src/lib/msg-line-chart/line-chart.component.css rename to apps/36-blocks/src/app/users/user/user.component.scss diff --git a/apps/proxy/src/app/users/user/user.component.ts b/apps/36-blocks/src/app/users/user/user.component.ts similarity index 68% rename from apps/proxy/src/app/users/user/user.component.ts rename to apps/36-blocks/src/app/users/user/user.component.ts index f080a95d..848fce78 100644 --- a/apps/proxy/src/app/users/user/user.component.ts +++ b/apps/36-blocks/src/app/users/user/user.component.ts @@ -1,4 +1,37 @@ -import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + OnDestroy, + OnInit, + ViewChild, + inject, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; +import { MatInputModule } from '@angular/material/input'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatTooltipModule } from '@angular/material/tooltip'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatSelectModule } from '@angular/material/select'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatIconModule } from '@angular/material/icon'; +import { MatTableModule } from '@angular/material/table'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { DateRangePickerComponent } from '@proxy/date-range-picker'; +import { NoRecordFoundComponent } from '@proxy/ui/no-record-found'; +import { MatPaginatorGotoComponent } from '@proxy/ui/mat-paginator-goto'; +import { SearchComponent } from '@proxy/ui/search'; +import { SkeletonDirective } from '@proxy/directives/skeleton'; +import { MarkdownModule } from 'ngx-markdown'; +import { CopyButtonComponent } from '@proxy/ui/copy-button'; +import { ManagementComponent } from '../management/management.component'; import { BaseComponent } from '@proxy/ui/base-component'; import { DEFAULT_END_DATE, @@ -9,8 +42,8 @@ import { } from '@proxy/constant'; import { Observable } from 'rxjs'; import { IPaginatedResponse } from '@proxy/models/root-models'; -import * as dayjs from 'dayjs'; -import { omit } from 'lodash'; +import dayjs from 'dayjs'; +import { omit } from 'lodash-es'; import { PageEvent } from '@angular/material/paginator'; import { UserComponentStore } from './user.store'; import { IUser } from '@proxy/models/users-model'; @@ -21,7 +54,36 @@ import { takeUntil } from 'rxjs/operators'; import { MatMenuTrigger } from '@angular/material/menu'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, selector: 'proxy-users', + imports: [ + CommonModule, + RouterModule, + FormsModule, + ReactiveFormsModule, + MatCardModule, + MatButtonModule, + MatInputModule, + MatFormFieldModule, + MatTooltipModule, + MatTabsModule, + MatSelectModule, + MatDialogModule, + MatMenuModule, + MatDividerModule, + MatSlideToggleModule, + MatIconModule, + MatTableModule, + MatPaginatorModule, + DateRangePickerComponent, + NoRecordFoundComponent, + MatPaginatorGotoComponent, + SearchComponent, + SkeletonDirective, + MarkdownModule, + CopyButtonComponent, + ManagementComponent, + ], templateUrl: './user.component.html', styleUrls: ['./user.component.scss'], providers: [UserComponentStore, FeatureComponentStore], @@ -29,6 +91,10 @@ import { MatMenuTrigger } from '@angular/material/menu'; export class UserComponent extends BaseComponent implements OnDestroy, OnInit { @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; + private componentStore = inject(UserComponentStore); + private featureComponentStore = inject(FeatureComponentStore); + private cdr = inject(ChangeDetectorRef); + /** Store current API inprogress state */ public loading$: Observable<{ [key: string]: boolean }> = this.componentStore.loading$; /** Store User data */ @@ -70,7 +136,7 @@ export class UserComponent extends BaseComponent implements OnDestroy, OnInit { // endDate: DEFAULT_END_DATE, // }; - constructor(private componentStore: UserComponentStore, private featureComponentStore: FeatureComponentStore) { + constructor() { super(); } ngOnInit(): void { @@ -84,6 +150,7 @@ export class UserComponent extends BaseComponent implements OnDestroy, OnInit { this.features$.pipe(takeUntil(this.destroy$)).subscribe((features) => { if (features) { this.filterFeatures(features.data); + this.cdr.markForCheck(); } }); diff --git a/apps/proxy/src/app/users/user/user.store.ts b/apps/36-blocks/src/app/users/user/user.store.ts similarity index 99% rename from apps/proxy/src/app/users/user/user.store.ts rename to apps/36-blocks/src/app/users/user/user.store.ts index d4bb0bab..be176216 100644 --- a/apps/proxy/src/app/users/user/user.store.ts +++ b/apps/36-blocks/src/app/users/user/user.store.ts @@ -1,4 +1,5 @@ -import { ComponentStore, tapResponse } from '@ngrx/component-store'; +import { ComponentStore } from '@ngrx/component-store'; +import { tapResponse } from '@ngrx/operators'; import { Injectable } from '@angular/core'; import { EMPTY, Observable, catchError, switchMap } from 'rxjs'; import { IUser, IUserReq } from '@proxy/models/users-model'; diff --git a/apps/proxy/src/assets/images/logos/google-logo.svg b/apps/36-blocks/src/assets/images/logos/google-logo.svg similarity index 100% rename from apps/proxy/src/assets/images/logos/google-logo.svg rename to apps/36-blocks/src/assets/images/logos/google-logo.svg diff --git a/apps/proxy/src/assets/images/utility/no_records_graphic.png b/apps/36-blocks/src/assets/images/utility/no_records_graphic.png similarity index 100% rename from apps/proxy/src/assets/images/utility/no_records_graphic.png rename to apps/36-blocks/src/assets/images/utility/no_records_graphic.png diff --git a/apps/36-blocks/src/assets/proxy-auth/proxy-auth.js b/apps/36-blocks/src/assets/proxy-auth/proxy-auth.js new file mode 100644 index 00000000..4d195f16 --- /dev/null +++ b/apps/36-blocks/src/assets/proxy-auth/proxy-auth.js @@ -0,0 +1,381 @@ +var dP=Object.create;var Hd=Object.defineProperty,uP=Object.defineProperties,pP=Object.getOwnPropertyDescriptor,fP=Object.getOwnPropertyDescriptors,hP=Object.getOwnPropertyNames,zd=Object.getOwnPropertySymbols,gP=Object.getPrototypeOf,xg=Object.prototype.hasOwnProperty,T1=Object.prototype.propertyIsEnumerable;var k1=(e,n,t)=>n in e?Hd(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,R=(e,n)=>{for(var t in n||={})xg.call(n,t)&&k1(e,t,n[t]);if(zd)for(var t of zd(n))T1.call(n,t)&&k1(e,t,n[t]);return e},X=(e,n)=>uP(e,fP(n));var I1=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,t)=>(typeof require<"u"?require:n)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var bg=(e,n)=>{var t={};for(var r in e)xg.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&zd)for(var r of zd(e))n.indexOf(r)<0&&T1.call(e,r)&&(t[r]=e[r]);return t};var it=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),mP=(e,n)=>{for(var t in n)Hd(e,t,{get:n[t],enumerable:!0})},_P=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of hP(n))!xg.call(e,i)&&i!==t&&Hd(e,i,{get:()=>n[i],enumerable:!(r=pP(n,i))||r.enumerable});return e};var Gd=(e,n,t)=>(t=e!=null?dP(gP(e)):{},_P(n||!e||!e.__esModule?Hd(t,"default",{value:e,enumerable:!0}):t,e));var Fw=it((eJ,xu)=>{var uw,pw,fw,hw,gw,mw,_w,vw,yw,xw,bw,ww,Cw,vu,Jg,Ew,Dw,Sw,os,kw,Tw,Iw,Aw,Mw,Rw,Pw,Ow,Nw,yu;(function(e){var n=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(r){e(t(n,t(r)))}):typeof xu=="object"&&typeof xu.exports=="object"?e(t(n,t(xu.exports))):e(t(n));function t(r,i){return r!==n&&(typeof Object.create=="function"?Object.defineProperty(r,"__esModule",{value:!0}):r.__esModule=!0),function(o,a){return r[o]=i?i(o,a):a}}})(function(e){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])};uw=function(r,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");n(r,i);function o(){this.constructor=r}r.prototype=i===null?Object.create(i):(o.prototype=i.prototype,new o)},pw=Object.assign||function(r){for(var i,o=1,a=arguments.length;o=0;d--)(c=r[d])&&(l=(s<3?c(l):s>3?c(i,o,l):c(i,o))||l);return s>3&&l&&Object.defineProperty(i,o,l),l},gw=function(r,i){return function(o,a){i(o,a,r)}},mw=function(r,i,o,a,s,l){function c(w){if(w!==void 0&&typeof w!="function")throw new TypeError("Function expected");return w}for(var d=a.kind,u=d==="getter"?"get":d==="setter"?"set":"value",p=!i&&r?a.static?r:r.prototype:null,f=i||(p?Object.getOwnPropertyDescriptor(p,a.name):{}),h,v=!1,b=o.length-1;b>=0;b--){var _={};for(var y in a)_[y]=y==="access"?{}:a[y];for(var y in a.access)_.access[y]=a.access[y];_.addInitializer=function(w){if(v)throw new TypeError("Cannot add initializers after decoration has completed");l.push(c(w||null))};var S=(0,o[b])(d==="accessor"?{get:f.get,set:f.set}:f[u],_);if(d==="accessor"){if(S===void 0)continue;if(S===null||typeof S!="object")throw new TypeError("Object expected");(h=c(S.get))&&(f.get=h),(h=c(S.set))&&(f.set=h),(h=c(S.init))&&s.push(h)}else(h=c(S))&&(d==="field"?s.push(h):f[u]=h)}p&&Object.defineProperty(p,a.name,f),v=!0},_w=function(r,i,o){for(var a=arguments.length>2,s=0;s0&&l[l.length-1])&&(p[0]===6||p[0]===2)){o=0;continue}if(p[0]===3&&(!l||p[1]>l[0]&&p[1]=r.length&&(r=void 0),{value:r&&r[a++],done:!r}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},Jg=function(r,i){var o=typeof Symbol=="function"&&r[Symbol.iterator];if(!o)return r;var a=o.call(r),s,l=[],c;try{for(;(i===void 0||i-- >0)&&!(s=a.next()).done;)l.push(s.value)}catch(d){c={error:d}}finally{try{s&&!s.done&&(o=a.return)&&o.call(a)}finally{if(c)throw c.error}}return l},Ew=function(){for(var r=[],i=0;i1||d(v,b)})})}function d(v,b){try{u(a[v](b))}catch(_){h(l[0][3],_)}}function u(v){v.value instanceof os?Promise.resolve(v.value.v).then(p,f):h(l[0][2],v)}function p(v){d("next",v)}function f(v){d("throw",v)}function h(v,b){v(b),l.shift(),l.length&&d(l[0][0],l[0][1])}},Tw=function(r){var i,o;return i={},a("next"),a("throw",function(s){throw s}),a("return"),i[Symbol.iterator]=function(){return this},i;function a(s,l){i[s]=r[s]?function(c){return(o=!o)?{value:os(r[s](c)),done:!1}:l?l(c):c}:l}},Iw=function(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r[Symbol.asyncIterator],o;return i?i.call(r):(r=typeof vu=="function"?vu(r):r[Symbol.iterator](),o={},a("next"),a("throw"),a("return"),o[Symbol.asyncIterator]=function(){return this},o);function a(l){o[l]=r[l]&&function(c){return new Promise(function(d,u){c=r[l](c),s(d,u,c.done,c.value)})}}function s(l,c,d,u){Promise.resolve(u).then(function(p){l({value:p,done:d})},c)}},Aw=function(r,i){return Object.defineProperty?Object.defineProperty(r,"raw",{value:i}):r.raw=i,r};var t=Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:!0,value:i})}:function(r,i){r.default=i};Mw=function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var o in r)o!=="default"&&Object.prototype.hasOwnProperty.call(r,o)&&yu(i,r,o);return t(i,r),i},Rw=function(r){return r&&r.__esModule?r:{default:r}},Pw=function(r,i,o,a){if(o==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?r!==i||!a:!i.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return o==="m"?a:o==="a"?a.call(r):a?a.value:i.get(r)},Ow=function(r,i,o,a,s){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?r!==i||!s:!i.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?s.call(r,o):s?s.value=o:i.set(r,o),o},Nw=function(r,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof r=="function"?i===r:r.has(i)},e("__extends",uw),e("__assign",pw),e("__rest",fw),e("__decorate",hw),e("__param",gw),e("__esDecorate",mw),e("__runInitializers",_w),e("__propKey",vw),e("__setFunctionName",yw),e("__metadata",xw),e("__awaiter",bw),e("__generator",ww),e("__exportStar",Cw),e("__createBinding",yu),e("__values",vu),e("__read",Jg),e("__spread",Ew),e("__spreadArrays",Dw),e("__spreadArray",Sw),e("__await",os),e("__asyncGenerator",kw),e("__asyncDelegator",Tw),e("__asyncValues",Iw),e("__makeTemplateObject",Aw),e("__importStar",Mw),e("__importDefault",Rw),e("__classPrivateFieldGet",Pw),e("__classPrivateFieldSet",Ow),e("__classPrivateFieldIn",Nw)})});var iM=it((Vx,Ux)=>{(function(e,n){typeof Vx=="object"&&typeof Ux<"u"?Ux.exports=n():typeof define=="function"&&define.amd?define(n):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=n()})(Vx,function(){"use strict";var e=1e3,n=6e4,t=36e5,r="millisecond",i="second",o="minute",a="hour",s="day",l="week",c="month",d="quarter",u="year",p="date",f="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,b={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(T){var I=["th","st","nd","rd"],O=T%100;return"["+T+(I[(O-20)%10]||I[O]||I[0])+"]"}},_=function(T,I,O){var z=String(T);return!z||z.length>=I?T:""+Array(I+1-z.length).join(O)+T},y={s:_,z:function(T){var I=-T.utcOffset(),O=Math.abs(I),z=Math.floor(O/60),q=O%60;return(I<=0?"+":"-")+_(z,2,"0")+":"+_(q,2,"0")},m:function T(I,O){if(I.date()1)return T(L[0])}else{var D=I.name;w[D]=I,q=D}return!z&&q&&(S=q),q||!z&&S},V=function(T,I){if(P(T))return T.clone();var O=typeof I=="object"?I:{};return O.date=T,O.args=arguments,new K(O)},M=y;M.l=N,M.i=P,M.w=function(T,I){return V(T,{locale:I.$L,utc:I.$u,x:I.$x,$offset:I.$offset})};var K=(function(){function T(O){this.$L=N(O.locale,null,!0),this.parse(O)}var I=T.prototype;return I.parse=function(O){this.$d=(function(z){var q=z.date,F=z.utc;if(q===null)return new Date(NaN);if(M.u(q))return new Date;if(q instanceof Date)return new Date(q);if(typeof q=="string"&&!/Z$/i.test(q)){var L=q.match(h);if(L){var D=L[2]-1||0,C=(L[7]||"0").substring(0,3);return F?new Date(Date.UTC(L[1],D,L[3]||1,L[4]||0,L[5]||0,L[6]||0,C)):new Date(L[1],D,L[3]||1,L[4]||0,L[5]||0,L[6]||0,C)}}return new Date(q)})(O),this.$x=O.x||{},this.init()},I.init=function(){var O=this.$d;this.$y=O.getFullYear(),this.$M=O.getMonth(),this.$D=O.getDate(),this.$W=O.getDay(),this.$H=O.getHours(),this.$m=O.getMinutes(),this.$s=O.getSeconds(),this.$ms=O.getMilliseconds()},I.$utils=function(){return M},I.isValid=function(){return this.$d.toString()!==f},I.isSame=function(O,z){var q=V(O);return this.startOf(z)<=q&&q<=this.endOf(z)},I.isAfter=function(O,z){return V(O){});var ct=it((Qh,aM)=>{(function(e,n){typeof Qh=="object"?aM.exports=Qh=n():typeof define=="function"&&define.amd?define([],n):e.CryptoJS=n()})(Qh,function(){var e=e||(function(n,t){var r;if(typeof window<"u"&&window.crypto&&(r=window.crypto),typeof self<"u"&&self.crypto&&(r=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(r=globalThis.crypto),!r&&typeof window<"u"&&window.msCrypto&&(r=window.msCrypto),!r&&typeof global<"u"&&global.crypto&&(r=global.crypto),!r&&typeof I1=="function")try{r=oM()}catch{}var i=function(){if(r){if(typeof r.getRandomValues=="function")try{return r.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof r.randomBytes=="function")try{return r.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},o=Object.create||(function(){function _(){}return function(y){var S;return _.prototype=y,S=new _,_.prototype=null,S}})(),a={},s=a.lib={},l=s.Base=(function(){return{extend:function(_){var y=o(this);return _&&y.mixIn(_),(!y.hasOwnProperty("init")||this.init===y.init)&&(y.init=function(){y.$super.init.apply(this,arguments)}),y.init.prototype=y,y.$super=this,y},create:function(){var _=this.extend();return _.init.apply(_,arguments),_},init:function(){},mixIn:function(_){for(var y in _)_.hasOwnProperty(y)&&(this[y]=_[y]);_.hasOwnProperty("toString")&&(this.toString=_.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),c=s.WordArray=l.extend({init:function(_,y){_=this.words=_||[],y!=t?this.sigBytes=y:this.sigBytes=_.length*4},toString:function(_){return(_||u).stringify(this)},concat:function(_){var y=this.words,S=_.words,w=this.sigBytes,P=_.sigBytes;if(this.clamp(),w%4)for(var N=0;N>>2]>>>24-N%4*8&255;y[w+N>>>2]|=V<<24-(w+N)%4*8}else for(var M=0;M>>2]=S[M>>>2];return this.sigBytes+=P,this},clamp:function(){var _=this.words,y=this.sigBytes;_[y>>>2]&=4294967295<<32-y%4*8,_.length=n.ceil(y/4)},clone:function(){var _=l.clone.call(this);return _.words=this.words.slice(0),_},random:function(_){for(var y=[],S=0;S<_;S+=4)y.push(i());return new c.init(y,_)}}),d=a.enc={},u=d.Hex={stringify:function(_){for(var y=_.words,S=_.sigBytes,w=[],P=0;P>>2]>>>24-P%4*8&255;w.push((N>>>4).toString(16)),w.push((N&15).toString(16))}return w.join("")},parse:function(_){for(var y=_.length,S=[],w=0;w>>3]|=parseInt(_.substr(w,2),16)<<24-w%8*4;return new c.init(S,y/2)}},p=d.Latin1={stringify:function(_){for(var y=_.words,S=_.sigBytes,w=[],P=0;P>>2]>>>24-P%4*8&255;w.push(String.fromCharCode(N))}return w.join("")},parse:function(_){for(var y=_.length,S=[],w=0;w>>2]|=(_.charCodeAt(w)&255)<<24-w%4*8;return new c.init(S,y)}},f=d.Utf8={stringify:function(_){try{return decodeURIComponent(escape(p.stringify(_)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(_){return p.parse(unescape(encodeURIComponent(_)))}},h=s.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(_){typeof _=="string"&&(_=f.parse(_)),this._data.concat(_),this._nDataBytes+=_.sigBytes},_process:function(_){var y,S=this._data,w=S.words,P=S.sigBytes,N=this.blockSize,V=N*4,M=P/V;_?M=n.ceil(M):M=n.max((M|0)-this._minBufferSize,0);var K=M*N,Y=n.min(K*4,P);if(K){for(var T=0;T{(function(e,n){typeof Xh=="object"?sM.exports=Xh=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(Xh,function(e){return(function(n){var t=e,r=t.lib,i=r.Base,o=r.WordArray,a=t.x64={},s=a.Word=i.extend({init:function(c,d){this.high=c,this.low=d}}),l=a.WordArray=i.extend({init:function(c,d){c=this.words=c||[],d!=n?this.sigBytes=d:this.sigBytes=c.length*8},toX32:function(){for(var c=this.words,d=c.length,u=[],p=0;p{(function(e,n){typeof Jh=="object"?lM.exports=Jh=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(Jh,function(e){return(function(){if(typeof ArrayBuffer=="function"){var n=e,t=n.lib,r=t.WordArray,i=r.init,o=r.init=function(a){if(a instanceof ArrayBuffer&&(a=new Uint8Array(a)),(a instanceof Int8Array||typeof Uint8ClampedArray<"u"&&a instanceof Uint8ClampedArray||a instanceof Int16Array||a instanceof Uint16Array||a instanceof Int32Array||a instanceof Uint32Array||a instanceof Float32Array||a instanceof Float64Array)&&(a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength)),a instanceof Uint8Array){for(var s=a.byteLength,l=[],c=0;c>>2]|=a[c]<<24-c%4*8;i.call(this,l,s)}else i.apply(this,arguments)};o.prototype=r}})(),e.lib.WordArray})});var uM=it((e0,dM)=>{(function(e,n){typeof e0=="object"?dM.exports=e0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(e0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=n.enc,o=i.Utf16=i.Utf16BE={stringify:function(s){for(var l=s.words,c=s.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535;d.push(String.fromCharCode(p))}return d.join("")},parse:function(s){for(var l=s.length,c=[],d=0;d>>1]|=s.charCodeAt(d)<<16-d%2*16;return r.create(c,l*2)}};i.Utf16LE={stringify:function(s){for(var l=s.words,c=s.sigBytes,d=[],u=0;u>>2]>>>16-u%4*8&65535);d.push(String.fromCharCode(p))}return d.join("")},parse:function(s){for(var l=s.length,c=[],d=0;d>>1]|=a(s.charCodeAt(d)<<16-d%2*16);return r.create(c,l*2)}};function a(s){return s<<8&4278255360|s>>>8&16711935}})(),e.enc.Utf16})});var Ua=it((t0,pM)=>{(function(e,n){typeof t0=="object"?pM.exports=t0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(t0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=n.enc,o=i.Base64={stringify:function(s){var l=s.words,c=s.sigBytes,d=this._map;s.clamp();for(var u=[],p=0;p>>2]>>>24-p%4*8&255,h=l[p+1>>>2]>>>24-(p+1)%4*8&255,v=l[p+2>>>2]>>>24-(p+2)%4*8&255,b=f<<16|h<<8|v,_=0;_<4&&p+_*.75>>6*(3-_)&63));var y=d.charAt(64);if(y)for(;u.length%4;)u.push(y);return u.join("")},parse:function(s){var l=s.length,c=this._map,d=this._reverseMap;if(!d){d=this._reverseMap=[];for(var u=0;u>>6-p%4*2,v=f|h;d[u>>>2]|=v<<24-u%4*8,u++}return r.create(d,u)}})(),e.enc.Base64})});var hM=it((n0,fM)=>{(function(e,n){typeof n0=="object"?fM.exports=n0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(n0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=n.enc,o=i.Base64url={stringify:function(s,l=!0){var c=s.words,d=s.sigBytes,u=l?this._safe_map:this._map;s.clamp();for(var p=[],f=0;f>>2]>>>24-f%4*8&255,v=c[f+1>>>2]>>>24-(f+1)%4*8&255,b=c[f+2>>>2]>>>24-(f+2)%4*8&255,_=h<<16|v<<8|b,y=0;y<4&&f+y*.75>>6*(3-y)&63));var S=u.charAt(64);if(S)for(;p.length%4;)p.push(S);return p.join("")},parse:function(s,l=!0){var c=s.length,d=l?this._safe_map:this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var p=0;p>>6-p%4*2,v=f|h;d[u>>>2]|=v<<24-u%4*8,u++}return r.create(d,u)}})(),e.enc.Base64url})});var Ba=it((r0,gM)=>{(function(e,n){typeof r0=="object"?gM.exports=r0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(r0,function(e){return(function(n){var t=e,r=t.lib,i=r.WordArray,o=r.Hasher,a=t.algo,s=[];(function(){for(var f=0;f<64;f++)s[f]=n.abs(n.sin(f+1))*4294967296|0})();var l=a.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(f,h){for(var v=0;v<16;v++){var b=h+v,_=f[b];f[b]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360}var y=this._hash.words,S=f[h+0],w=f[h+1],P=f[h+2],N=f[h+3],V=f[h+4],M=f[h+5],K=f[h+6],Y=f[h+7],T=f[h+8],I=f[h+9],O=f[h+10],z=f[h+11],q=f[h+12],F=f[h+13],L=f[h+14],D=f[h+15],C=y[0],j=y[1],$=y[2],G=y[3];C=c(C,j,$,G,S,7,s[0]),G=c(G,C,j,$,w,12,s[1]),$=c($,G,C,j,P,17,s[2]),j=c(j,$,G,C,N,22,s[3]),C=c(C,j,$,G,V,7,s[4]),G=c(G,C,j,$,M,12,s[5]),$=c($,G,C,j,K,17,s[6]),j=c(j,$,G,C,Y,22,s[7]),C=c(C,j,$,G,T,7,s[8]),G=c(G,C,j,$,I,12,s[9]),$=c($,G,C,j,O,17,s[10]),j=c(j,$,G,C,z,22,s[11]),C=c(C,j,$,G,q,7,s[12]),G=c(G,C,j,$,F,12,s[13]),$=c($,G,C,j,L,17,s[14]),j=c(j,$,G,C,D,22,s[15]),C=d(C,j,$,G,w,5,s[16]),G=d(G,C,j,$,K,9,s[17]),$=d($,G,C,j,z,14,s[18]),j=d(j,$,G,C,S,20,s[19]),C=d(C,j,$,G,M,5,s[20]),G=d(G,C,j,$,O,9,s[21]),$=d($,G,C,j,D,14,s[22]),j=d(j,$,G,C,V,20,s[23]),C=d(C,j,$,G,I,5,s[24]),G=d(G,C,j,$,L,9,s[25]),$=d($,G,C,j,N,14,s[26]),j=d(j,$,G,C,T,20,s[27]),C=d(C,j,$,G,F,5,s[28]),G=d(G,C,j,$,P,9,s[29]),$=d($,G,C,j,Y,14,s[30]),j=d(j,$,G,C,q,20,s[31]),C=u(C,j,$,G,M,4,s[32]),G=u(G,C,j,$,T,11,s[33]),$=u($,G,C,j,z,16,s[34]),j=u(j,$,G,C,L,23,s[35]),C=u(C,j,$,G,w,4,s[36]),G=u(G,C,j,$,V,11,s[37]),$=u($,G,C,j,Y,16,s[38]),j=u(j,$,G,C,O,23,s[39]),C=u(C,j,$,G,F,4,s[40]),G=u(G,C,j,$,S,11,s[41]),$=u($,G,C,j,N,16,s[42]),j=u(j,$,G,C,K,23,s[43]),C=u(C,j,$,G,I,4,s[44]),G=u(G,C,j,$,q,11,s[45]),$=u($,G,C,j,D,16,s[46]),j=u(j,$,G,C,P,23,s[47]),C=p(C,j,$,G,S,6,s[48]),G=p(G,C,j,$,Y,10,s[49]),$=p($,G,C,j,L,15,s[50]),j=p(j,$,G,C,M,21,s[51]),C=p(C,j,$,G,q,6,s[52]),G=p(G,C,j,$,N,10,s[53]),$=p($,G,C,j,O,15,s[54]),j=p(j,$,G,C,w,21,s[55]),C=p(C,j,$,G,T,6,s[56]),G=p(G,C,j,$,D,10,s[57]),$=p($,G,C,j,K,15,s[58]),j=p(j,$,G,C,F,21,s[59]),C=p(C,j,$,G,V,6,s[60]),G=p(G,C,j,$,z,10,s[61]),$=p($,G,C,j,P,15,s[62]),j=p(j,$,G,C,I,21,s[63]),y[0]=y[0]+C|0,y[1]=y[1]+j|0,y[2]=y[2]+$|0,y[3]=y[3]+G|0},_doFinalize:function(){var f=this._data,h=f.words,v=this._nDataBytes*8,b=f.sigBytes*8;h[b>>>5]|=128<<24-b%32;var _=n.floor(v/4294967296),y=v;h[(b+64>>>9<<4)+15]=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,h[(b+64>>>9<<4)+14]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,f.sigBytes=(h.length+1)*4,this._process();for(var S=this._hash,w=S.words,P=0;P<4;P++){var N=w[P];w[P]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360}return S},clone:function(){var f=o.clone.call(this);return f._hash=this._hash.clone(),f}});function c(f,h,v,b,_,y,S){var w=f+(h&v|~h&b)+_+S;return(w<>>32-y)+h}function d(f,h,v,b,_,y,S){var w=f+(h&b|v&~b)+_+S;return(w<>>32-y)+h}function u(f,h,v,b,_,y,S){var w=f+(h^v^b)+_+S;return(w<>>32-y)+h}function p(f,h,v,b,_,y,S){var w=f+(v^(h|~b))+_+S;return(w<>>32-y)+h}t.MD5=o._createHelper(l),t.HmacMD5=o._createHmacHelper(l)})(Math),e.MD5})});var o0=it((i0,mM)=>{(function(e,n){typeof i0=="object"?mM.exports=i0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(i0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=t.Hasher,o=n.algo,a=[],s=o.SHA1=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(l,c){for(var d=this._hash.words,u=d[0],p=d[1],f=d[2],h=d[3],v=d[4],b=0;b<80;b++){if(b<16)a[b]=l[c+b]|0;else{var _=a[b-3]^a[b-8]^a[b-14]^a[b-16];a[b]=_<<1|_>>>31}var y=(u<<5|u>>>27)+v+a[b];b<20?y+=(p&f|~p&h)+1518500249:b<40?y+=(p^f^h)+1859775393:b<60?y+=(p&f|p&h|f&h)-1894007588:y+=(p^f^h)-899497514,v=h,h=f,f=p<<30|p>>>2,p=u,u=y}d[0]=d[0]+u|0,d[1]=d[1]+p|0,d[2]=d[2]+f|0,d[3]=d[3]+h|0,d[4]=d[4]+v|0},_doFinalize:function(){var l=this._data,c=l.words,d=this._nDataBytes*8,u=l.sigBytes*8;return c[u>>>5]|=128<<24-u%32,c[(u+64>>>9<<4)+14]=Math.floor(d/4294967296),c[(u+64>>>9<<4)+15]=d,l.sigBytes=c.length*4,this._process(),this._hash},clone:function(){var l=i.clone.call(this);return l._hash=this._hash.clone(),l}});n.SHA1=i._createHelper(s),n.HmacSHA1=i._createHmacHelper(s)})(),e.SHA1})});var Bx=it((a0,_M)=>{(function(e,n){typeof a0=="object"?_M.exports=a0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(a0,function(e){return(function(n){var t=e,r=t.lib,i=r.WordArray,o=r.Hasher,a=t.algo,s=[],l=[];(function(){function u(v){for(var b=n.sqrt(v),_=2;_<=b;_++)if(!(v%_))return!1;return!0}function p(v){return(v-(v|0))*4294967296|0}for(var f=2,h=0;h<64;)u(f)&&(h<8&&(s[h]=p(n.pow(f,1/2))),l[h]=p(n.pow(f,1/3)),h++),f++})();var c=[],d=a.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(u,p){for(var f=this._hash.words,h=f[0],v=f[1],b=f[2],_=f[3],y=f[4],S=f[5],w=f[6],P=f[7],N=0;N<64;N++){if(N<16)c[N]=u[p+N]|0;else{var V=c[N-15],M=(V<<25|V>>>7)^(V<<14|V>>>18)^V>>>3,K=c[N-2],Y=(K<<15|K>>>17)^(K<<13|K>>>19)^K>>>10;c[N]=M+c[N-7]+Y+c[N-16]}var T=y&S^~y&w,I=h&v^h&b^v&b,O=(h<<30|h>>>2)^(h<<19|h>>>13)^(h<<10|h>>>22),z=(y<<26|y>>>6)^(y<<21|y>>>11)^(y<<7|y>>>25),q=P+z+T+l[N]+c[N],F=O+I;P=w,w=S,S=y,y=_+q|0,_=b,b=v,v=h,h=q+F|0}f[0]=f[0]+h|0,f[1]=f[1]+v|0,f[2]=f[2]+b|0,f[3]=f[3]+_|0,f[4]=f[4]+y|0,f[5]=f[5]+S|0,f[6]=f[6]+w|0,f[7]=f[7]+P|0},_doFinalize:function(){var u=this._data,p=u.words,f=this._nDataBytes*8,h=u.sigBytes*8;return p[h>>>5]|=128<<24-h%32,p[(h+64>>>9<<4)+14]=n.floor(f/4294967296),p[(h+64>>>9<<4)+15]=f,u.sigBytes=p.length*4,this._process(),this._hash},clone:function(){var u=o.clone.call(this);return u._hash=this._hash.clone(),u}});t.SHA256=o._createHelper(d),t.HmacSHA256=o._createHmacHelper(d)})(Math),e.SHA256})});var yM=it((s0,vM)=>{(function(e,n,t){typeof s0=="object"?vM.exports=s0=n(ct(),Bx()):typeof define=="function"&&define.amd?define(["./core","./sha256"],n):n(e.CryptoJS)})(s0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=n.algo,o=i.SHA256,a=i.SHA224=o.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var s=o._doFinalize.call(this);return s.sigBytes-=4,s}});n.SHA224=o._createHelper(a),n.HmacSHA224=o._createHmacHelper(a)})(),e.SHA224})});var $x=it((l0,xM)=>{(function(e,n,t){typeof l0=="object"?xM.exports=l0=n(ct(),hd()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],n):n(e.CryptoJS)})(l0,function(e){return(function(){var n=e,t=n.lib,r=t.Hasher,i=n.x64,o=i.Word,a=i.WordArray,s=n.algo;function l(){return o.create.apply(o,arguments)}var c=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],d=[];(function(){for(var p=0;p<80;p++)d[p]=l()})();var u=s.SHA512=r.extend({_doReset:function(){this._hash=new a.init([new o.init(1779033703,4089235720),new o.init(3144134277,2227873595),new o.init(1013904242,4271175723),new o.init(2773480762,1595750129),new o.init(1359893119,2917565137),new o.init(2600822924,725511199),new o.init(528734635,4215389547),new o.init(1541459225,327033209)])},_doProcessBlock:function(p,f){for(var h=this._hash.words,v=h[0],b=h[1],_=h[2],y=h[3],S=h[4],w=h[5],P=h[6],N=h[7],V=v.high,M=v.low,K=b.high,Y=b.low,T=_.high,I=_.low,O=y.high,z=y.low,q=S.high,F=S.low,L=w.high,D=w.low,C=P.high,j=P.low,$=N.high,G=N.low,pe=V,we=M,ht=K,Te=Y,Fe=T,ie=I,re=O,H=z,ae=q,xe=F,Ne=L,Ee=D,ze=C,He=j,Ke=$,vt=G,rt=0;rt<80;rt++){var rn,hn,Fr=d[rt];if(rt<16)hn=Fr.high=p[f+rt*2]|0,rn=Fr.low=p[f+rt*2+1]|0;else{var Za=d[rt-15],Ei=Za.high,qo=Za.low,Fl=(Ei>>>1|qo<<31)^(Ei>>>8|qo<<24)^Ei>>>7,Ll=(qo>>>1|Ei<<31)^(qo>>>8|Ei<<24)^(qo>>>7|Ei<<25),Di=d[rt-2],Si=Di.high,ei=Di.low,$d=(Si>>>19|ei<<13)^(Si<<3|ei>>>29)^Si>>>6,jl=(ei>>>19|Si<<13)^(ei<<3|Si>>>29)^(ei>>>6|Si<<26),lo=d[rt-7],ir=lo.high,vr=lo.low,x1=d[rt-16],tP=x1.high,b1=x1.low;rn=Ll+vr,hn=Fl+ir+(rn>>>0>>0?1:0),rn=rn+jl,hn=hn+$d+(rn>>>0>>0?1:0),rn=rn+b1,hn=hn+tP+(rn>>>0>>0?1:0),Fr.high=hn,Fr.low=rn}var nP=ae&Ne^~ae&ze,w1=xe&Ee^~xe&He,rP=pe&ht^pe&Fe^ht&Fe,iP=we&Te^we&ie^Te&ie,oP=(pe>>>28|we<<4)^(pe<<30|we>>>2)^(pe<<25|we>>>7),C1=(we>>>28|pe<<4)^(we<<30|pe>>>2)^(we<<25|pe>>>7),aP=(ae>>>14|xe<<18)^(ae>>>18|xe<<14)^(ae<<23|xe>>>9),sP=(xe>>>14|ae<<18)^(xe>>>18|ae<<14)^(xe<<23|ae>>>9),E1=c[rt],lP=E1.high,D1=E1.low,or=vt+sP,co=Ke+aP+(or>>>0>>0?1:0),or=or+w1,co=co+nP+(or>>>0>>0?1:0),or=or+D1,co=co+lP+(or>>>0>>0?1:0),or=or+rn,co=co+hn+(or>>>0>>0?1:0),S1=C1+iP,cP=oP+rP+(S1>>>0>>0?1:0);Ke=ze,vt=He,ze=Ne,He=Ee,Ne=ae,Ee=xe,xe=H+or|0,ae=re+co+(xe>>>0>>0?1:0)|0,re=Fe,H=ie,Fe=ht,ie=Te,ht=pe,Te=we,we=or+S1|0,pe=co+cP+(we>>>0>>0?1:0)|0}M=v.low=M+we,v.high=V+pe+(M>>>0>>0?1:0),Y=b.low=Y+Te,b.high=K+ht+(Y>>>0>>0?1:0),I=_.low=I+ie,_.high=T+Fe+(I>>>0>>0?1:0),z=y.low=z+H,y.high=O+re+(z>>>0>>0?1:0),F=S.low=F+xe,S.high=q+ae+(F>>>0>>0?1:0),D=w.low=D+Ee,w.high=L+Ne+(D>>>0>>0?1:0),j=P.low=j+He,P.high=C+ze+(j>>>0>>0?1:0),G=N.low=G+vt,N.high=$+Ke+(G>>>0>>0?1:0)},_doFinalize:function(){var p=this._data,f=p.words,h=this._nDataBytes*8,v=p.sigBytes*8;f[v>>>5]|=128<<24-v%32,f[(v+128>>>10<<5)+30]=Math.floor(h/4294967296),f[(v+128>>>10<<5)+31]=h,p.sigBytes=f.length*4,this._process();var b=this._hash.toX32();return b},clone:function(){var p=r.clone.call(this);return p._hash=this._hash.clone(),p},blockSize:1024/32});n.SHA512=r._createHelper(u),n.HmacSHA512=r._createHmacHelper(u)})(),e.SHA512})});var wM=it((c0,bM)=>{(function(e,n,t){typeof c0=="object"?bM.exports=c0=n(ct(),hd(),$x()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./sha512"],n):n(e.CryptoJS)})(c0,function(e){return(function(){var n=e,t=n.x64,r=t.Word,i=t.WordArray,o=n.algo,a=o.SHA512,s=o.SHA384=a.extend({_doReset:function(){this._hash=new i.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var l=a._doFinalize.call(this);return l.sigBytes-=16,l}});n.SHA384=a._createHelper(s),n.HmacSHA384=a._createHmacHelper(s)})(),e.SHA384})});var EM=it((d0,CM)=>{(function(e,n,t){typeof d0=="object"?CM.exports=d0=n(ct(),hd()):typeof define=="function"&&define.amd?define(["./core","./x64-core"],n):n(e.CryptoJS)})(d0,function(e){return(function(n){var t=e,r=t.lib,i=r.WordArray,o=r.Hasher,a=t.x64,s=a.Word,l=t.algo,c=[],d=[],u=[];(function(){for(var h=1,v=0,b=0;b<24;b++){c[h+5*v]=(b+1)*(b+2)/2%64;var _=v%5,y=(2*h+3*v)%5;h=_,v=y}for(var h=0;h<5;h++)for(var v=0;v<5;v++)d[h+5*v]=v+(2*h+3*v)%5*5;for(var S=1,w=0;w<24;w++){for(var P=0,N=0,V=0;V<7;V++){if(S&1){var M=(1<>>24)&16711935|(S<<24|S>>>8)&4278255360,w=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360;var P=b[y];P.high^=w,P.low^=S}for(var N=0;N<24;N++){for(var V=0;V<5;V++){for(var M=0,K=0,Y=0;Y<5;Y++){var P=b[V+5*Y];M^=P.high,K^=P.low}var T=p[V];T.high=M,T.low=K}for(var V=0;V<5;V++)for(var I=p[(V+4)%5],O=p[(V+1)%5],z=O.high,q=O.low,M=I.high^(z<<1|q>>>31),K=I.low^(q<<1|z>>>31),Y=0;Y<5;Y++){var P=b[V+5*Y];P.high^=M,P.low^=K}for(var F=1;F<25;F++){var M,K,P=b[F],L=P.high,D=P.low,C=c[F];C<32?(M=L<>>32-C,K=D<>>32-C):(M=D<>>64-C,K=L<>>64-C);var j=p[d[F]];j.high=M,j.low=K}var $=p[0],G=b[0];$.high=G.high,$.low=G.low;for(var V=0;V<5;V++)for(var Y=0;Y<5;Y++){var F=V+5*Y,P=b[F],pe=p[F],we=p[(V+1)%5+5*Y],ht=p[(V+2)%5+5*Y];P.high=pe.high^~we.high&ht.high,P.low=pe.low^~we.low&ht.low}var P=b[0],Te=u[N];P.high^=Te.high,P.low^=Te.low}},_doFinalize:function(){var h=this._data,v=h.words,b=this._nDataBytes*8,_=h.sigBytes*8,y=this.blockSize*32;v[_>>>5]|=1<<24-_%32,v[(n.ceil((_+1)/y)*y>>>5)-1]|=128,h.sigBytes=v.length*4,this._process();for(var S=this._state,w=this.cfg.outputLength/8,P=w/8,N=[],V=0;V>>24)&16711935|(K<<24|K>>>8)&4278255360,Y=(Y<<8|Y>>>24)&16711935|(Y<<24|Y>>>8)&4278255360,N.push(Y),N.push(K)}return new i.init(N,w)},clone:function(){for(var h=o.clone.call(this),v=h._state=this._state.slice(0),b=0;b<25;b++)v[b]=v[b].clone();return h}});t.SHA3=o._createHelper(f),t.HmacSHA3=o._createHmacHelper(f)})(Math),e.SHA3})});var SM=it((u0,DM)=>{(function(e,n){typeof u0=="object"?DM.exports=u0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(u0,function(e){return(function(n){var t=e,r=t.lib,i=r.WordArray,o=r.Hasher,a=t.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),c=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),d=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=i.create([0,1518500249,1859775393,2400959708,2840853838]),p=i.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(w,P){for(var N=0;N<16;N++){var V=P+N,M=w[V];w[V]=(M<<8|M>>>24)&16711935|(M<<24|M>>>8)&4278255360}var K=this._hash.words,Y=u.words,T=p.words,I=s.words,O=l.words,z=c.words,q=d.words,F,L,D,C,j,$,G,pe,we,ht;$=F=K[0],G=L=K[1],pe=D=K[2],we=C=K[3],ht=j=K[4];for(var Te,N=0;N<80;N+=1)Te=F+w[P+I[N]]|0,N<16?Te+=h(L,D,C)+Y[0]:N<32?Te+=v(L,D,C)+Y[1]:N<48?Te+=b(L,D,C)+Y[2]:N<64?Te+=_(L,D,C)+Y[3]:Te+=y(L,D,C)+Y[4],Te=Te|0,Te=S(Te,z[N]),Te=Te+j|0,F=j,j=C,C=S(D,10),D=L,L=Te,Te=$+w[P+O[N]]|0,N<16?Te+=y(G,pe,we)+T[0]:N<32?Te+=_(G,pe,we)+T[1]:N<48?Te+=b(G,pe,we)+T[2]:N<64?Te+=v(G,pe,we)+T[3]:Te+=h(G,pe,we)+T[4],Te=Te|0,Te=S(Te,q[N]),Te=Te+ht|0,$=ht,ht=we,we=S(pe,10),pe=G,G=Te;Te=K[1]+D+we|0,K[1]=K[2]+C+ht|0,K[2]=K[3]+j+$|0,K[3]=K[4]+F+G|0,K[4]=K[0]+L+pe|0,K[0]=Te},_doFinalize:function(){var w=this._data,P=w.words,N=this._nDataBytes*8,V=w.sigBytes*8;P[V>>>5]|=128<<24-V%32,P[(V+64>>>9<<4)+14]=(N<<8|N>>>24)&16711935|(N<<24|N>>>8)&4278255360,w.sigBytes=(P.length+1)*4,this._process();for(var M=this._hash,K=M.words,Y=0;Y<5;Y++){var T=K[Y];K[Y]=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360}return M},clone:function(){var w=o.clone.call(this);return w._hash=this._hash.clone(),w}});function h(w,P,N){return w^P^N}function v(w,P,N){return w&P|~w&N}function b(w,P,N){return(w|~P)^N}function _(w,P,N){return w&N|P&~N}function y(w,P,N){return w^(P|~N)}function S(w,P){return w<>>32-P}t.RIPEMD160=o._createHelper(f),t.HmacRIPEMD160=o._createHmacHelper(f)})(Math),e.RIPEMD160})});var f0=it((p0,kM)=>{(function(e,n){typeof p0=="object"?kM.exports=p0=n(ct()):typeof define=="function"&&define.amd?define(["./core"],n):n(e.CryptoJS)})(p0,function(e){(function(){var n=e,t=n.lib,r=t.Base,i=n.enc,o=i.Utf8,a=n.algo,s=a.HMAC=r.extend({init:function(l,c){l=this._hasher=new l.init,typeof c=="string"&&(c=o.parse(c));var d=l.blockSize,u=d*4;c.sigBytes>u&&(c=l.finalize(c)),c.clamp();for(var p=this._oKey=c.clone(),f=this._iKey=c.clone(),h=p.words,v=f.words,b=0;b{(function(e,n,t){typeof h0=="object"?TM.exports=h0=n(ct(),o0(),f0()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],n):n(e.CryptoJS)})(h0,function(e){return(function(){var n=e,t=n.lib,r=t.Base,i=t.WordArray,o=n.algo,a=o.SHA1,s=o.HMAC,l=o.PBKDF2=r.extend({cfg:r.extend({keySize:128/32,hasher:a,iterations:1}),init:function(c){this.cfg=this.cfg.extend(c)},compute:function(c,d){for(var u=this.cfg,p=s.create(u.hasher,c),f=i.create(),h=i.create([1]),v=f.words,b=h.words,_=u.keySize,y=u.iterations;v.length<_;){var S=p.update(d).finalize(h);p.reset();for(var w=S.words,P=w.length,N=S,V=1;V{(function(e,n,t){typeof g0=="object"?AM.exports=g0=n(ct(),o0(),f0()):typeof define=="function"&&define.amd?define(["./core","./sha1","./hmac"],n):n(e.CryptoJS)})(g0,function(e){return(function(){var n=e,t=n.lib,r=t.Base,i=t.WordArray,o=n.algo,a=o.MD5,s=o.EvpKDF=r.extend({cfg:r.extend({keySize:128/32,hasher:a,iterations:1}),init:function(l){this.cfg=this.cfg.extend(l)},compute:function(l,c){for(var d,u=this.cfg,p=u.hasher.create(),f=i.create(),h=f.words,v=u.keySize,b=u.iterations;h.length{(function(e,n,t){typeof m0=="object"?MM.exports=m0=n(ct(),Uo()):typeof define=="function"&&define.amd?define(["./core","./evpkdf"],n):n(e.CryptoJS)})(m0,function(e){e.lib.Cipher||(function(n){var t=e,r=t.lib,i=r.Base,o=r.WordArray,a=r.BufferedBlockAlgorithm,s=t.enc,l=s.Utf8,c=s.Base64,d=t.algo,u=d.EvpKDF,p=r.Cipher=a.extend({cfg:i.extend(),createEncryptor:function(T,I){return this.create(this._ENC_XFORM_MODE,T,I)},createDecryptor:function(T,I){return this.create(this._DEC_XFORM_MODE,T,I)},init:function(T,I,O){this.cfg=this.cfg.extend(O),this._xformMode=T,this._key=I,this.reset()},reset:function(){a.reset.call(this),this._doReset()},process:function(T){return this._append(T),this._process()},finalize:function(T){T&&this._append(T);var I=this._doFinalize();return I},keySize:128/32,ivSize:128/32,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:(function(){function T(I){return typeof I=="string"?Y:V}return function(I){return{encrypt:function(O,z,q){return T(z).encrypt(I,O,z,q)},decrypt:function(O,z,q){return T(z).decrypt(I,O,z,q)}}}})()}),f=r.StreamCipher=p.extend({_doFinalize:function(){var T=this._process(!0);return T},blockSize:1}),h=t.mode={},v=r.BlockCipherMode=i.extend({createEncryptor:function(T,I){return this.Encryptor.create(T,I)},createDecryptor:function(T,I){return this.Decryptor.create(T,I)},init:function(T,I){this._cipher=T,this._iv=I}}),b=h.CBC=(function(){var T=v.extend();T.Encryptor=T.extend({processBlock:function(O,z){var q=this._cipher,F=q.blockSize;I.call(this,O,z,F),q.encryptBlock(O,z),this._prevBlock=O.slice(z,z+F)}}),T.Decryptor=T.extend({processBlock:function(O,z){var q=this._cipher,F=q.blockSize,L=O.slice(z,z+F);q.decryptBlock(O,z),I.call(this,O,z,F),this._prevBlock=L}});function I(O,z,q){var F,L=this._iv;L?(F=L,this._iv=n):F=this._prevBlock;for(var D=0;D>>2]&255;T.sigBytes-=I}},S=r.BlockCipher=p.extend({cfg:p.cfg.extend({mode:b,padding:y}),reset:function(){var T;p.reset.call(this);var I=this.cfg,O=I.iv,z=I.mode;this._xformMode==this._ENC_XFORM_MODE?T=z.createEncryptor:(T=z.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==T?this._mode.init(this,O&&O.words):(this._mode=T.call(z,this,O&&O.words),this._mode.__creator=T)},_doProcessBlock:function(T,I){this._mode.processBlock(T,I)},_doFinalize:function(){var T,I=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(I.pad(this._data,this.blockSize),T=this._process(!0)):(T=this._process(!0),I.unpad(T)),T},blockSize:128/32}),w=r.CipherParams=i.extend({init:function(T){this.mixIn(T)},toString:function(T){return(T||this.formatter).stringify(this)}}),P=t.format={},N=P.OpenSSL={stringify:function(T){var I,O=T.ciphertext,z=T.salt;return z?I=o.create([1398893684,1701076831]).concat(z).concat(O):I=O,I.toString(c)},parse:function(T){var I,O=c.parse(T),z=O.words;return z[0]==1398893684&&z[1]==1701076831&&(I=o.create(z.slice(2,4)),z.splice(0,4),O.sigBytes-=16),w.create({ciphertext:O,salt:I})}},V=r.SerializableCipher=i.extend({cfg:i.extend({format:N}),encrypt:function(T,I,O,z){z=this.cfg.extend(z);var q=T.createEncryptor(O,z),F=q.finalize(I),L=q.cfg;return w.create({ciphertext:F,key:O,iv:L.iv,algorithm:T,mode:L.mode,padding:L.padding,blockSize:T.blockSize,formatter:z.format})},decrypt:function(T,I,O,z){z=this.cfg.extend(z),I=this._parse(I,z.format);var q=T.createDecryptor(O,z).finalize(I.ciphertext);return q},_parse:function(T,I){return typeof T=="string"?I.parse(T,this):T}}),M=t.kdf={},K=M.OpenSSL={execute:function(T,I,O,z){z||(z=o.random(64/8));var q=u.create({keySize:I+O}).compute(T,z),F=o.create(q.words.slice(I),O*4);return q.sigBytes=I*4,w.create({key:q,iv:F,salt:z})}},Y=r.PasswordBasedCipher=V.extend({cfg:V.cfg.extend({kdf:K}),encrypt:function(T,I,O,z){z=this.cfg.extend(z);var q=z.kdf.execute(O,T.keySize,T.ivSize);z.iv=q.iv;var F=V.encrypt.call(this,T,I,q.key,z);return F.mixIn(q),F},decrypt:function(T,I,O,z){z=this.cfg.extend(z),I=this._parse(I,z.format);var q=z.kdf.execute(O,T.keySize,T.ivSize,I.salt);z.iv=q.iv;var F=V.decrypt.call(this,T,I,q.key,z);return F}})})()})});var PM=it((_0,RM)=>{(function(e,n,t){typeof _0=="object"?RM.exports=_0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(_0,function(e){return e.mode.CFB=(function(){var n=e.lib.BlockCipherMode.extend();n.Encryptor=n.extend({processBlock:function(r,i){var o=this._cipher,a=o.blockSize;t.call(this,r,i,a,o),this._prevBlock=r.slice(i,i+a)}}),n.Decryptor=n.extend({processBlock:function(r,i){var o=this._cipher,a=o.blockSize,s=r.slice(i,i+a);t.call(this,r,i,a,o),this._prevBlock=s}});function t(r,i,o,a){var s,l=this._iv;l?(s=l.slice(0),this._iv=void 0):s=this._prevBlock,a.encryptBlock(s,0);for(var c=0;c{(function(e,n,t){typeof v0=="object"?OM.exports=v0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(v0,function(e){return e.mode.CTR=(function(){var n=e.lib.BlockCipherMode.extend(),t=n.Encryptor=n.extend({processBlock:function(r,i){var o=this._cipher,a=o.blockSize,s=this._iv,l=this._counter;s&&(l=this._counter=s.slice(0),this._iv=void 0);var c=l.slice(0);o.encryptBlock(c,0),l[a-1]=l[a-1]+1|0;for(var d=0;d{(function(e,n,t){typeof y0=="object"?FM.exports=y0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(y0,function(e){return e.mode.CTRGladman=(function(){var n=e.lib.BlockCipherMode.extend();function t(o){if((o>>24&255)===255){var a=o>>16&255,s=o>>8&255,l=o&255;a===255?(a=0,s===255?(s=0,l===255?l=0:++l):++s):++a,o=0,o+=a<<16,o+=s<<8,o+=l}else o+=1<<24;return o}function r(o){return(o[0]=t(o[0]))===0&&(o[1]=t(o[1])),o}var i=n.Encryptor=n.extend({processBlock:function(o,a){var s=this._cipher,l=s.blockSize,c=this._iv,d=this._counter;c&&(d=this._counter=c.slice(0),this._iv=void 0),r(d);var u=d.slice(0);s.encryptBlock(u,0);for(var p=0;p{(function(e,n,t){typeof x0=="object"?jM.exports=x0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(x0,function(e){return e.mode.OFB=(function(){var n=e.lib.BlockCipherMode.extend(),t=n.Encryptor=n.extend({processBlock:function(r,i){var o=this._cipher,a=o.blockSize,s=this._iv,l=this._keystream;s&&(l=this._keystream=s.slice(0),this._iv=void 0),o.encryptBlock(l,0);for(var c=0;c{(function(e,n,t){typeof b0=="object"?UM.exports=b0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(b0,function(e){return e.mode.ECB=(function(){var n=e.lib.BlockCipherMode.extend();return n.Encryptor=n.extend({processBlock:function(t,r){this._cipher.encryptBlock(t,r)}}),n.Decryptor=n.extend({processBlock:function(t,r){this._cipher.decryptBlock(t,r)}}),n})(),e.mode.ECB})});var zM=it((w0,$M)=>{(function(e,n,t){typeof w0=="object"?$M.exports=w0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(w0,function(e){return e.pad.AnsiX923={pad:function(n,t){var r=n.sigBytes,i=t*4,o=i-r%i,a=r+o-1;n.clamp(),n.words[a>>>2]|=o<<24-a%4*8,n.sigBytes+=o},unpad:function(n){var t=n.words[n.sigBytes-1>>>2]&255;n.sigBytes-=t}},e.pad.Ansix923})});var GM=it((C0,HM)=>{(function(e,n,t){typeof C0=="object"?HM.exports=C0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(C0,function(e){return e.pad.Iso10126={pad:function(n,t){var r=t*4,i=r-n.sigBytes%r;n.concat(e.lib.WordArray.random(i-1)).concat(e.lib.WordArray.create([i<<24],1))},unpad:function(n){var t=n.words[n.sigBytes-1>>>2]&255;n.sigBytes-=t}},e.pad.Iso10126})});var WM=it((E0,qM)=>{(function(e,n,t){typeof E0=="object"?qM.exports=E0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(E0,function(e){return e.pad.Iso97971={pad:function(n,t){n.concat(e.lib.WordArray.create([2147483648],1)),e.pad.ZeroPadding.pad(n,t)},unpad:function(n){e.pad.ZeroPadding.unpad(n),n.sigBytes--}},e.pad.Iso97971})});var KM=it((D0,ZM)=>{(function(e,n,t){typeof D0=="object"?ZM.exports=D0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(D0,function(e){return e.pad.ZeroPadding={pad:function(n,t){var r=t*4;n.clamp(),n.sigBytes+=r-(n.sigBytes%r||r)},unpad:function(n){for(var t=n.words,r=n.sigBytes-1,r=n.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){n.sigBytes=r+1;break}}},e.pad.ZeroPadding})});var QM=it((S0,YM)=>{(function(e,n,t){typeof S0=="object"?YM.exports=S0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(S0,function(e){return e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding})});var JM=it((k0,XM)=>{(function(e,n,t){typeof k0=="object"?XM.exports=k0=n(ct(),En()):typeof define=="function"&&define.amd?define(["./core","./cipher-core"],n):n(e.CryptoJS)})(k0,function(e){return(function(n){var t=e,r=t.lib,i=r.CipherParams,o=t.enc,a=o.Hex,s=t.format,l=s.Hex={stringify:function(c){return c.ciphertext.toString(a)},parse:function(c){var d=a.parse(c);return i.create({ciphertext:d})}}})(),e.format.Hex})});var tR=it((T0,eR)=>{(function(e,n,t){typeof T0=="object"?eR.exports=T0=n(ct(),Ua(),Ba(),Uo(),En()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],n):n(e.CryptoJS)})(T0,function(e){return(function(){var n=e,t=n.lib,r=t.BlockCipher,i=n.algo,o=[],a=[],s=[],l=[],c=[],d=[],u=[],p=[],f=[],h=[];(function(){for(var _=[],y=0;y<256;y++)y<128?_[y]=y<<1:_[y]=y<<1^283;for(var S=0,w=0,y=0;y<256;y++){var P=w^w<<1^w<<2^w<<3^w<<4;P=P>>>8^P&255^99,o[S]=P,a[P]=S;var N=_[S],V=_[N],M=_[V],K=_[P]*257^P*16843008;s[S]=K<<24|K>>>8,l[S]=K<<16|K>>>16,c[S]=K<<8|K>>>24,d[S]=K;var K=M*16843009^V*65537^N*257^S*16843008;u[P]=K<<24|K>>>8,p[P]=K<<16|K>>>16,f[P]=K<<8|K>>>24,h[P]=K,S?(S=N^_[_[_[M^N]]],w^=_[_[w]]):S=w=1}})();var v=[0,1,2,4,8,16,32,64,128,27,54],b=i.AES=r.extend({_doReset:function(){var _;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var y=this._keyPriorReset=this._key,S=y.words,w=y.sigBytes/4,P=this._nRounds=w+6,N=(P+1)*4,V=this._keySchedule=[],M=0;M6&&M%w==4&&(_=o[_>>>24]<<24|o[_>>>16&255]<<16|o[_>>>8&255]<<8|o[_&255]):(_=_<<8|_>>>24,_=o[_>>>24]<<24|o[_>>>16&255]<<16|o[_>>>8&255]<<8|o[_&255],_^=v[M/w|0]<<24),V[M]=V[M-w]^_);for(var K=this._invKeySchedule=[],Y=0;Y>>24]]^p[o[_>>>16&255]]^f[o[_>>>8&255]]^h[o[_&255]]}}},encryptBlock:function(_,y){this._doCryptBlock(_,y,this._keySchedule,s,l,c,d,o)},decryptBlock:function(_,y){var S=_[y+1];_[y+1]=_[y+3],_[y+3]=S,this._doCryptBlock(_,y,this._invKeySchedule,u,p,f,h,a);var S=_[y+1];_[y+1]=_[y+3],_[y+3]=S},_doCryptBlock:function(_,y,S,w,P,N,V,M){for(var K=this._nRounds,Y=_[y]^S[0],T=_[y+1]^S[1],I=_[y+2]^S[2],O=_[y+3]^S[3],z=4,q=1;q>>24]^P[T>>>16&255]^N[I>>>8&255]^V[O&255]^S[z++],L=w[T>>>24]^P[I>>>16&255]^N[O>>>8&255]^V[Y&255]^S[z++],D=w[I>>>24]^P[O>>>16&255]^N[Y>>>8&255]^V[T&255]^S[z++],C=w[O>>>24]^P[Y>>>16&255]^N[T>>>8&255]^V[I&255]^S[z++];Y=F,T=L,I=D,O=C}var F=(M[Y>>>24]<<24|M[T>>>16&255]<<16|M[I>>>8&255]<<8|M[O&255])^S[z++],L=(M[T>>>24]<<24|M[I>>>16&255]<<16|M[O>>>8&255]<<8|M[Y&255])^S[z++],D=(M[I>>>24]<<24|M[O>>>16&255]<<16|M[Y>>>8&255]<<8|M[T&255])^S[z++],C=(M[O>>>24]<<24|M[Y>>>16&255]<<16|M[T>>>8&255]<<8|M[I&255])^S[z++];_[y]=F,_[y+1]=L,_[y+2]=D,_[y+3]=C},keySize:256/32});n.AES=r._createHelper(b)})(),e.AES})});var rR=it((I0,nR)=>{(function(e,n,t){typeof I0=="object"?nR.exports=I0=n(ct(),Ua(),Ba(),Uo(),En()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],n):n(e.CryptoJS)})(I0,function(e){return(function(){var n=e,t=n.lib,r=t.WordArray,i=t.BlockCipher,o=n.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],c=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],d=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=o.DES=i.extend({_doReset:function(){for(var v=this._key,b=v.words,_=[],y=0;y<56;y++){var S=a[y]-1;_[y]=b[S>>>5]>>>31-S%32&1}for(var w=this._subKeys=[],P=0;P<16;P++){for(var N=w[P]=[],V=l[P],y=0;y<24;y++)N[y/6|0]|=_[(s[y]-1+V)%28]<<31-y%6,N[4+(y/6|0)]|=_[28+(s[y+24]-1+V)%28]<<31-y%6;N[0]=N[0]<<1|N[0]>>>31;for(var y=1;y<7;y++)N[y]=N[y]>>>(y-1)*4+3;N[7]=N[7]<<5|N[7]>>>27}for(var M=this._invSubKeys=[],y=0;y<16;y++)M[y]=w[15-y]},encryptBlock:function(v,b){this._doCryptBlock(v,b,this._subKeys)},decryptBlock:function(v,b){this._doCryptBlock(v,b,this._invSubKeys)},_doCryptBlock:function(v,b,_){this._lBlock=v[b],this._rBlock=v[b+1],p.call(this,4,252645135),p.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),p.call(this,1,1431655765);for(var y=0;y<16;y++){for(var S=_[y],w=this._lBlock,P=this._rBlock,N=0,V=0;V<8;V++)N|=c[V][((P^S[V])&d[V])>>>0];this._lBlock=P,this._rBlock=w^N}var M=this._lBlock;this._lBlock=this._rBlock,this._rBlock=M,p.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),p.call(this,16,65535),p.call(this,4,252645135),v[b]=this._lBlock,v[b+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function p(v,b){var _=(this._lBlock>>>v^this._rBlock)&b;this._rBlock^=_,this._lBlock^=_<>>v^this._lBlock)&b;this._lBlock^=_,this._rBlock^=_<192.");var _=b.slice(0,2),y=b.length<4?b.slice(0,2):b.slice(2,4),S=b.length<6?b.slice(0,2):b.slice(4,6);this._des1=u.createEncryptor(r.create(_)),this._des2=u.createEncryptor(r.create(y)),this._des3=u.createEncryptor(r.create(S))},encryptBlock:function(v,b){this._des1.encryptBlock(v,b),this._des2.decryptBlock(v,b),this._des3.encryptBlock(v,b)},decryptBlock:function(v,b){this._des3.decryptBlock(v,b),this._des2.encryptBlock(v,b),this._des1.decryptBlock(v,b)},keySize:192/32,ivSize:64/32,blockSize:64/32});n.TripleDES=i._createHelper(h)})(),e.TripleDES})});var oR=it((A0,iR)=>{(function(e,n,t){typeof A0=="object"?iR.exports=A0=n(ct(),Ua(),Ba(),Uo(),En()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],n):n(e.CryptoJS)})(A0,function(e){return(function(){var n=e,t=n.lib,r=t.StreamCipher,i=n.algo,o=i.RC4=r.extend({_doReset:function(){for(var l=this._key,c=l.words,d=l.sigBytes,u=this._S=[],p=0;p<256;p++)u[p]=p;for(var p=0,f=0;p<256;p++){var h=p%d,v=c[h>>>2]>>>24-h%4*8&255;f=(f+u[p]+v)%256;var b=u[p];u[p]=u[f],u[f]=b}this._i=this._j=0},_doProcessBlock:function(l,c){l[c]^=a.call(this)},keySize:256/32,ivSize:0});function a(){for(var l=this._S,c=this._i,d=this._j,u=0,p=0;p<4;p++){c=(c+1)%256,d=(d+l[c])%256;var f=l[c];l[c]=l[d],l[d]=f,u|=l[(l[c]+l[d])%256]<<24-p*8}return this._i=c,this._j=d,u}n.RC4=r._createHelper(o);var s=i.RC4Drop=o.extend({cfg:o.cfg.extend({drop:192}),_doReset:function(){o._doReset.call(this);for(var l=this.cfg.drop;l>0;l--)a.call(this)}});n.RC4Drop=r._createHelper(s)})(),e.RC4})});var sR=it((M0,aR)=>{(function(e,n,t){typeof M0=="object"?aR.exports=M0=n(ct(),Ua(),Ba(),Uo(),En()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],n):n(e.CryptoJS)})(M0,function(e){return(function(){var n=e,t=n.lib,r=t.StreamCipher,i=n.algo,o=[],a=[],s=[],l=i.Rabbit=r.extend({_doReset:function(){for(var d=this._key.words,u=this.cfg.iv,p=0;p<4;p++)d[p]=(d[p]<<8|d[p]>>>24)&16711935|(d[p]<<24|d[p]>>>8)&4278255360;var f=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],h=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var p=0;p<4;p++)c.call(this);for(var p=0;p<8;p++)h[p]^=f[p+4&7];if(u){var v=u.words,b=v[0],_=v[1],y=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360,S=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,w=y>>>16|S&4294901760,P=S<<16|y&65535;h[0]^=y,h[1]^=w,h[2]^=S,h[3]^=P,h[4]^=y,h[5]^=w,h[6]^=S,h[7]^=P;for(var p=0;p<4;p++)c.call(this)}},_doProcessBlock:function(d,u){var p=this._X;c.call(this),o[0]=p[0]^p[5]>>>16^p[3]<<16,o[1]=p[2]^p[7]>>>16^p[5]<<16,o[2]=p[4]^p[1]>>>16^p[7]<<16,o[3]=p[6]^p[3]>>>16^p[1]<<16;for(var f=0;f<4;f++)o[f]=(o[f]<<8|o[f]>>>24)&16711935|(o[f]<<24|o[f]>>>8)&4278255360,d[u+f]^=o[f]},blockSize:128/32,ivSize:64/32});function c(){for(var d=this._X,u=this._C,p=0;p<8;p++)a[p]=u[p];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var p=0;p<8;p++){var f=d[p]+u[p],h=f&65535,v=f>>>16,b=((h*h>>>17)+h*v>>>15)+v*v,_=((f&4294901760)*f|0)+((f&65535)*f|0);s[p]=b^_}d[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,d[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,d[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,d[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,d[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,d[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,d[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,d[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}n.Rabbit=r._createHelper(l)})(),e.Rabbit})});var cR=it((R0,lR)=>{(function(e,n,t){typeof R0=="object"?lR.exports=R0=n(ct(),Ua(),Ba(),Uo(),En()):typeof define=="function"&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],n):n(e.CryptoJS)})(R0,function(e){return(function(){var n=e,t=n.lib,r=t.StreamCipher,i=n.algo,o=[],a=[],s=[],l=i.RabbitLegacy=r.extend({_doReset:function(){var d=this._key.words,u=this.cfg.iv,p=this._X=[d[0],d[3]<<16|d[2]>>>16,d[1],d[0]<<16|d[3]>>>16,d[2],d[1]<<16|d[0]>>>16,d[3],d[2]<<16|d[1]>>>16],f=this._C=[d[2]<<16|d[2]>>>16,d[0]&4294901760|d[1]&65535,d[3]<<16|d[3]>>>16,d[1]&4294901760|d[2]&65535,d[0]<<16|d[0]>>>16,d[2]&4294901760|d[3]&65535,d[1]<<16|d[1]>>>16,d[3]&4294901760|d[0]&65535];this._b=0;for(var h=0;h<4;h++)c.call(this);for(var h=0;h<8;h++)f[h]^=p[h+4&7];if(u){var v=u.words,b=v[0],_=v[1],y=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360,S=(_<<8|_>>>24)&16711935|(_<<24|_>>>8)&4278255360,w=y>>>16|S&4294901760,P=S<<16|y&65535;f[0]^=y,f[1]^=w,f[2]^=S,f[3]^=P,f[4]^=y,f[5]^=w,f[6]^=S,f[7]^=P;for(var h=0;h<4;h++)c.call(this)}},_doProcessBlock:function(d,u){var p=this._X;c.call(this),o[0]=p[0]^p[5]>>>16^p[3]<<16,o[1]=p[2]^p[7]>>>16^p[5]<<16,o[2]=p[4]^p[1]>>>16^p[7]<<16,o[3]=p[6]^p[3]>>>16^p[1]<<16;for(var f=0;f<4;f++)o[f]=(o[f]<<8|o[f]>>>24)&16711935|(o[f]<<24|o[f]>>>8)&4278255360,d[u+f]^=o[f]},blockSize:128/32,ivSize:64/32});function c(){for(var d=this._X,u=this._C,p=0;p<8;p++)a[p]=u[p];u[0]=u[0]+1295307597+this._b|0,u[1]=u[1]+3545052371+(u[0]>>>0>>0?1:0)|0,u[2]=u[2]+886263092+(u[1]>>>0>>0?1:0)|0,u[3]=u[3]+1295307597+(u[2]>>>0>>0?1:0)|0,u[4]=u[4]+3545052371+(u[3]>>>0>>0?1:0)|0,u[5]=u[5]+886263092+(u[4]>>>0>>0?1:0)|0,u[6]=u[6]+1295307597+(u[5]>>>0>>0?1:0)|0,u[7]=u[7]+3545052371+(u[6]>>>0>>0?1:0)|0,this._b=u[7]>>>0>>0?1:0;for(var p=0;p<8;p++){var f=d[p]+u[p],h=f&65535,v=f>>>16,b=((h*h>>>17)+h*v>>>15)+v*v,_=((f&4294901760)*f|0)+((f&65535)*f|0);s[p]=b^_}d[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,d[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,d[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,d[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,d[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,d[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,d[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,d[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}n.RabbitLegacy=r._createHelper(l)})(),e.RabbitLegacy})});var zx=it((P0,dR)=>{(function(e,n,t){typeof P0=="object"?dR.exports=P0=n(ct(),hd(),cM(),uM(),Ua(),hM(),Ba(),o0(),Bx(),yM(),$x(),wM(),EM(),SM(),f0(),IM(),Uo(),En(),PM(),NM(),LM(),VM(),BM(),zM(),GM(),WM(),KM(),QM(),JM(),tR(),rR(),oR(),sR(),cR()):typeof define=="function"&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy"],n):e.CryptoJS=n(e.CryptoJS)})(P0,function(e){return e})});var ti=globalThis;function yr(e){return(ti.__Zone_symbol_prefix||"__zone_symbol__")+e}function vP(){let e=ti.performance;function n(F){e&&e.mark&&e.mark(F)}function t(F,L){e&&e.measure&&e.measure(F,L)}n("Zone");let r=(()=>{class F{static __symbol__=yr;static assertZonePatched(){if(ti.Promise!==Y.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let D=F.current;for(;D.parent;)D=D.parent;return D}static get current(){return I.zone}static get currentTask(){return O}static __load_patch(D,C,j=!1){if(Y.hasOwnProperty(D)){let $=ti[yr("forceDuplicateZoneCheck")]===!0;if(!j&&$)throw Error("Already loaded patch: "+D)}else if(!ti["__Zone_disable_"+D]){let $="Zone:"+D;n($),Y[D]=C(ti,F,T),t($,$)}}get parent(){return this._parent}get name(){return this._name}_parent;_name;_properties;_zoneDelegate;constructor(D,C){this._parent=D,this._name=C?C.name||"unnamed":"",this._properties=C&&C.properties||{},this._zoneDelegate=new o(this,this._parent&&this._parent._zoneDelegate,C)}get(D){let C=this.getZoneWith(D);if(C)return C._properties[D]}getZoneWith(D){let C=this;for(;C;){if(C._properties.hasOwnProperty(D))return C;C=C._parent}return null}fork(D){if(!D)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,D)}wrap(D,C){if(typeof D!="function")throw new Error("Expecting function got: "+D);let j=this._zoneDelegate.intercept(this,D,C),$=this;return function(){return $.runGuarded(j,this,arguments,C)}}run(D,C,j,$){I={parent:I,zone:this};try{return this._zoneDelegate.invoke(this,D,C,j,$)}finally{I=I.parent}}runGuarded(D,C=null,j,$){I={parent:I,zone:this};try{try{return this._zoneDelegate.invoke(this,D,C,j,$)}catch(G){if(this._zoneDelegate.handleError(this,G))throw G}}finally{I=I.parent}}runTask(D,C,j){if(D.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(D.zone||b).name+"; Execution: "+this.name+")");let $=D,{type:G,data:{isPeriodic:pe=!1,isRefreshable:we=!1}={}}=D;if(D.state===_&&(G===K||G===M))return;let ht=D.state!=w;ht&&$._transitionTo(w,S);let Te=O;O=$,I={parent:I,zone:this};try{G==M&&D.data&&!pe&&!we&&(D.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,$,C,j)}catch(Fe){if(this._zoneDelegate.handleError(this,Fe))throw Fe}}finally{let Fe=D.state;if(Fe!==_&&Fe!==N)if(G==K||pe||we&&Fe===y)ht&&$._transitionTo(S,w,y);else{let ie=$._zoneDelegates;this._updateTaskCount($,-1),ht&&$._transitionTo(_,w,_),we&&($._zoneDelegates=ie)}I=I.parent,O=Te}}scheduleTask(D){if(D.zone&&D.zone!==this){let j=this;for(;j;){if(j===D.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${D.zone.name}`);j=j.parent}}D._transitionTo(y,_);let C=[];D._zoneDelegates=C,D._zone=this;try{D=this._zoneDelegate.scheduleTask(this,D)}catch(j){throw D._transitionTo(N,y,_),this._zoneDelegate.handleError(this,j),j}return D._zoneDelegates===C&&this._updateTaskCount(D,1),D.state==y&&D._transitionTo(S,y),D}scheduleMicroTask(D,C,j,$){return this.scheduleTask(new a(V,D,C,j,$,void 0))}scheduleMacroTask(D,C,j,$,G){return this.scheduleTask(new a(M,D,C,j,$,G))}scheduleEventTask(D,C,j,$,G){return this.scheduleTask(new a(K,D,C,j,$,G))}cancelTask(D){if(D.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(D.zone||b).name+"; Execution: "+this.name+")");if(!(D.state!==S&&D.state!==w)){D._transitionTo(P,S,w);try{this._zoneDelegate.cancelTask(this,D)}catch(C){throw D._transitionTo(N,P),this._zoneDelegate.handleError(this,C),C}return this._updateTaskCount(D,-1),D._transitionTo(_,P),D.runCount=-1,D}}_updateTaskCount(D,C){let j=D._zoneDelegates;C==-1&&(D._zoneDelegates=null);for(let $=0;$F.hasTask(D,C),onScheduleTask:(F,L,D,C)=>F.scheduleTask(D,C),onInvokeTask:(F,L,D,C,j,$)=>F.invokeTask(D,C,j,$),onCancelTask:(F,L,D,C)=>F.cancelTask(D,C)};class o{get zone(){return this._zone}_zone;_taskCounts={microTask:0,macroTask:0,eventTask:0};_parentDelegate;_forkDlgt;_forkZS;_forkCurrZone;_interceptDlgt;_interceptZS;_interceptCurrZone;_invokeDlgt;_invokeZS;_invokeCurrZone;_handleErrorDlgt;_handleErrorZS;_handleErrorCurrZone;_scheduleTaskDlgt;_scheduleTaskZS;_scheduleTaskCurrZone;_invokeTaskDlgt;_invokeTaskZS;_invokeTaskCurrZone;_cancelTaskDlgt;_cancelTaskZS;_cancelTaskCurrZone;_hasTaskDlgt;_hasTaskDlgtOwner;_hasTaskZS;_hasTaskCurrZone;constructor(L,D,C){this._zone=L,this._parentDelegate=D,this._forkZS=C&&(C&&C.onFork?C:D._forkZS),this._forkDlgt=C&&(C.onFork?D:D._forkDlgt),this._forkCurrZone=C&&(C.onFork?this._zone:D._forkCurrZone),this._interceptZS=C&&(C.onIntercept?C:D._interceptZS),this._interceptDlgt=C&&(C.onIntercept?D:D._interceptDlgt),this._interceptCurrZone=C&&(C.onIntercept?this._zone:D._interceptCurrZone),this._invokeZS=C&&(C.onInvoke?C:D._invokeZS),this._invokeDlgt=C&&(C.onInvoke?D:D._invokeDlgt),this._invokeCurrZone=C&&(C.onInvoke?this._zone:D._invokeCurrZone),this._handleErrorZS=C&&(C.onHandleError?C:D._handleErrorZS),this._handleErrorDlgt=C&&(C.onHandleError?D:D._handleErrorDlgt),this._handleErrorCurrZone=C&&(C.onHandleError?this._zone:D._handleErrorCurrZone),this._scheduleTaskZS=C&&(C.onScheduleTask?C:D._scheduleTaskZS),this._scheduleTaskDlgt=C&&(C.onScheduleTask?D:D._scheduleTaskDlgt),this._scheduleTaskCurrZone=C&&(C.onScheduleTask?this._zone:D._scheduleTaskCurrZone),this._invokeTaskZS=C&&(C.onInvokeTask?C:D._invokeTaskZS),this._invokeTaskDlgt=C&&(C.onInvokeTask?D:D._invokeTaskDlgt),this._invokeTaskCurrZone=C&&(C.onInvokeTask?this._zone:D._invokeTaskCurrZone),this._cancelTaskZS=C&&(C.onCancelTask?C:D._cancelTaskZS),this._cancelTaskDlgt=C&&(C.onCancelTask?D:D._cancelTaskDlgt),this._cancelTaskCurrZone=C&&(C.onCancelTask?this._zone:D._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let j=C&&C.onHasTask,$=D&&D._hasTaskZS;(j||$)&&(this._hasTaskZS=j?C:i,this._hasTaskDlgt=D,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,C.onScheduleTask||(this._scheduleTaskZS=i,this._scheduleTaskDlgt=D,this._scheduleTaskCurrZone=this._zone),C.onInvokeTask||(this._invokeTaskZS=i,this._invokeTaskDlgt=D,this._invokeTaskCurrZone=this._zone),C.onCancelTask||(this._cancelTaskZS=i,this._cancelTaskDlgt=D,this._cancelTaskCurrZone=this._zone))}fork(L,D){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,L,D):new r(L,D)}intercept(L,D,C){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,L,D,C):D}invoke(L,D,C,j,$){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,L,D,C,j,$):D.apply(C,j)}handleError(L,D){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,L,D):!0}scheduleTask(L,D){let C=D;if(this._scheduleTaskZS)this._hasTaskZS&&C._zoneDelegates.push(this._hasTaskDlgtOwner),C=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,L,D),C||(C=D);else if(D.scheduleFn)D.scheduleFn(D);else if(D.type==V)h(D);else throw new Error("Task is missing scheduleFn.");return C}invokeTask(L,D,C,j){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,L,D,C,j):D.callback.apply(C,j)}cancelTask(L,D){let C;if(this._cancelTaskZS)C=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,L,D);else{if(!D.cancelFn)throw Error("Task is not cancelable");C=D.cancelFn(D)}return C}hasTask(L,D){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,L,D)}catch(C){this.handleError(L,C)}}_updateTaskCount(L,D){let C=this._taskCounts,j=C[L],$=C[L]=j+D;if($<0)throw new Error("More tasks executed then were scheduled.");if(j==0||$==0){let G={microTask:C.microTask>0,macroTask:C.macroTask>0,eventTask:C.eventTask>0,change:L};this.hasTask(this._zone,G)}}}class a{type;source;invoke;callback;data;scheduleFn;cancelFn;_zone=null;runCount=0;_zoneDelegates=null;_state="notScheduled";constructor(L,D,C,j,$,G){if(this.type=L,this.source=D,this.data=j,this.scheduleFn=$,this.cancelFn=G,!C)throw new Error("callback is not defined");this.callback=C;let pe=this;L===K&&j&&j.useG?this.invoke=a.invokeTask:this.invoke=function(){return a.invokeTask.call(ti,pe,this,arguments)}}static invokeTask(L,D,C){L||(L=this),z++;try{return L.runCount++,L.zone.runTask(L,D,C)}finally{z==1&&v(),z--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(_,y)}_transitionTo(L,D,C){if(this._state===D||this._state===C)this._state=L,L==_&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${L}', expecting state '${D}'${C?" or '"+C+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let s=yr("setTimeout"),l=yr("Promise"),c=yr("then"),d=[],u=!1,p;function f(F){if(p||ti[l]&&(p=ti[l].resolve(0)),p){let L=p[c];L||(L=p.then),L.call(p,F)}else ti[s](F,0)}function h(F){z===0&&d.length===0&&f(v),F&&d.push(F)}function v(){if(!u){for(u=!0;d.length;){let F=d;d=[];for(let L=0;LI,onUnhandledError:q,microtaskDrainDone:q,scheduleMicroTask:h,showUncaughtError:()=>!r[yr("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:q,patchMethod:()=>q,bindArguments:()=>[],patchThen:()=>q,patchMacroTask:()=>q,patchEventPrototype:()=>q,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>q,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>q,wrapWithCurrentZone:()=>q,filterProperties:()=>[],attachOriginToPatched:()=>q,_redefineProperty:()=>q,patchCallbacks:()=>q,nativeScheduleMicroTask:f},I={parent:null,zone:new r(null,null)},O=null,z=0;function q(){}return t("Zone","Zone"),r}function yP(){let e=globalThis,n=e[yr("forceDuplicateZoneCheck")]===!0;if(e.Zone&&(n||typeof e.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return e.Zone??=vP(),e.Zone}var Ul=Object.getOwnPropertyDescriptor,Sg=Object.defineProperty,kg=Object.getPrototypeOf,xP=Object.create,bP=Array.prototype.slice,Tg="addEventListener",Ig="removeEventListener",wg=yr(Tg),Cg=yr(Ig),ki="true",Ti="false",Bl=yr("");function Ag(e,n){return Zone.current.wrap(e,n)}function Mg(e,n,t,r,i){return Zone.current.scheduleMacroTask(e,n,t,r,i)}var wt=yr,Zd=typeof window<"u",$l=Zd?window:void 0,gn=Zd&&$l||globalThis,wP="removeAttribute";function Rg(e,n){for(let t=e.length-1;t>=0;t--)typeof e[t]=="function"&&(e[t]=Ag(e[t],n+"_"+t));return e}function CP(e,n){let t=e.constructor.name;for(let r=0;r{let l=function(){return s.apply(this,Rg(arguments,t+"."+i))};return Ai(l,s),l})(o)}}}function F1(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var L1=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Kd=!("nw"in gn)&&typeof gn.process<"u"&&gn.process.toString()==="[object process]",Pg=!Kd&&!L1&&!!(Zd&&$l.HTMLElement),j1=typeof gn.process<"u"&&gn.process.toString()==="[object process]"&&!L1&&!!(Zd&&$l.HTMLElement),Wd={},EP=wt("enable_beforeunload"),A1=function(e){if(e=e||gn.event,!e)return;let n=Wd[e.type];n||(n=Wd[e.type]=wt("ON_PROPERTY"+e.type));let t=this||e.target||gn,r=t[n],i;if(Pg&&t===$l&&e.type==="error"){let o=e;i=r&&r.call(this,o.message,o.filename,o.lineno,o.colno,o.error),i===!0&&e.preventDefault()}else i=r&&r.apply(this,arguments),e.type==="beforeunload"&&gn[EP]&&typeof i=="string"?e.returnValue=i:i!=null&&!i&&e.preventDefault();return i};function M1(e,n,t){let r=Ul(e,n);if(!r&&t&&Ul(t,n)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let i=wt("on"+n+"patched");if(e.hasOwnProperty(i)&&e[i])return;delete r.writable,delete r.value;let o=r.get,a=r.set,s=n.slice(2),l=Wd[s];l||(l=Wd[s]=wt("ON_PROPERTY"+s)),r.set=function(c){let d=this;if(!d&&e===gn&&(d=gn),!d)return;typeof d[l]=="function"&&d.removeEventListener(s,A1),a?.call(d,null),d[l]=c,typeof c=="function"&&d.addEventListener(s,A1,!1)},r.get=function(){let c=this;if(!c&&e===gn&&(c=gn),!c)return null;let d=c[l];if(d)return d;if(o){let u=o.call(this);if(u)return r.set.call(this,u),typeof c[wP]=="function"&&c.removeAttribute(n),u}return null},Sg(e,n,r),e[i]=!0}function V1(e,n,t){if(n)for(let r=0;rfunction(a,s){let l=t(a,s);return l.cbIdx>=0&&typeof s[l.cbIdx]=="function"?Mg(l.name,s[l.cbIdx],l,i):o.apply(a,s)})}function Ai(e,n){e[wt("OriginalDelegate")]=n}var R1=!1,Eg=!1;function SP(){if(R1)return Eg;R1=!0;try{let e=$l.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Eg=!0)}catch{}return Eg}function P1(e){return typeof e=="function"}function O1(e){return typeof e=="number"}var kP={useG:!0},xr={},U1={},B1=new RegExp("^"+Bl+"(\\w+)(true|false)$"),$1=wt("propagationStopped");function z1(e,n){let t=(n?n(e):e)+Ti,r=(n?n(e):e)+ki,i=Bl+t,o=Bl+r;xr[e]={},xr[e][Ti]=i,xr[e][ki]=o}function TP(e,n,t,r){let i=r&&r.add||Tg,o=r&&r.rm||Ig,a=r&&r.listeners||"eventListeners",s=r&&r.rmAll||"removeAllListeners",l=wt(i),c="."+i+":",d="prependListener",u="."+d+":",p=function(y,S,w){if(y.isRemoved)return;let P=y.callback;typeof P=="object"&&P.handleEvent&&(y.callback=M=>P.handleEvent(M),y.originalDelegate=P);let N;try{y.invoke(y,S,[w])}catch(M){N=M}let V=y.options;if(V&&typeof V=="object"&&V.once){let M=y.originalDelegate?y.originalDelegate:y.callback;S[o].call(S,w.type,M,V)}return N};function f(y,S,w){if(S=S||e.event,!S)return;let P=y||S.target||e,N=P[xr[S.type][w?ki:Ti]];if(N){let V=[];if(N.length===1){let M=p(N[0],P,S);M&&V.push(M)}else{let M=N.slice();for(let K=0;K{throw K})}}}let h=function(y){return f(this,y,!1)},v=function(y){return f(this,y,!0)};function b(y,S){if(!y)return!1;let w=!0;S&&S.useG!==void 0&&(w=S.useG);let P=S&&S.vh,N=!0;S&&S.chkDup!==void 0&&(N=S.chkDup);let V=!1;S&&S.rt!==void 0&&(V=S.rt);let M=y;for(;M&&!M.hasOwnProperty(i);)M=kg(M);if(!M&&y[i]&&(M=y),!M||M[l])return!1;let K=S&&S.eventNameToString,Y={},T=M[l]=M[i],I=M[wt(o)]=M[o],O=M[wt(a)]=M[a],z=M[wt(s)]=M[s],q;S&&S.prepend&&(q=M[wt(S.prepend)]=M[S.prepend]);function F(H,ae){return ae?typeof H=="boolean"?{capture:H,passive:!0}:H?typeof H=="object"&&H.passive!==!1?X(R({},H),{passive:!0}):H:{passive:!0}:H}let L=function(H){if(!Y.isExisting)return T.call(Y.target,Y.eventName,Y.capture?v:h,Y.options)},D=function(H){if(!H.isRemoved){let ae=xr[H.eventName],xe;ae&&(xe=ae[H.capture?ki:Ti]);let Ne=xe&&H.target[xe];if(Ne){for(let Ee=0;Eeir.zone.cancelTask(ir);H.call(Fr,"abort",vr,{once:!0}),ir.removeAbortListener=()=>Fr.removeEventListener("abort",vr)}if(Y.target=null,lo&&(lo.taskData=null),Ei&&(Y.options.once=!0),typeof ir.options!="boolean"&&(ir.options=hn),ir.target=He,ir.capture=Za,ir.eventName=Ke,rt&&(ir.originalDelegate=vt),ze?Di.unshift(ir):Di.push(ir),Ee)return He}};return M[i]=re(T,c,G,pe,V),q&&(M[d]=re(q,u,j,pe,V,!0)),M[o]=function(){let H=this||e,ae=arguments[0];S&&S.transferEventName&&(ae=S.transferEventName(ae));let xe=arguments[2],Ne=xe?typeof xe=="boolean"?!0:xe.capture:!1,Ee=arguments[1];if(!Ee)return I.apply(this,arguments);if(P&&!P(I,Ee,H,arguments))return;let ze=xr[ae],He;ze&&(He=ze[Ne?ki:Ti]);let Ke=He&&H[He];if(Ke)for(let vt=0;vtfunction(i,o){i[$1]=!0,r&&r.apply(i,o)})}function AP(e,n){n.patchMethod(e,"queueMicrotask",t=>function(r,i){Zone.current.scheduleMicroTask("queueMicrotask",i[0])})}var qd=wt("zoneTask");function Ka(e,n,t,r){let i=null,o=null;n+=r,t+=r;let a={};function s(c){let d=c.data;d.args[0]=function(){return c.invoke.apply(this,arguments)};let u=i.apply(e,d.args);return O1(u)?d.handleId=u:(d.handle=u,d.isRefreshable=P1(u.refresh)),c}function l(c){let{handle:d,handleId:u}=c.data;return o.call(e,d??u)}i=Ii(e,n,c=>function(d,u){if(P1(u[0])){let p={isRefreshable:!1,isPeriodic:r==="Interval",delay:r==="Timeout"||r==="Interval"?u[1]||0:void 0,args:u},f=u[0];u[0]=function(){try{return f.apply(this,arguments)}finally{let{handle:w,handleId:P,isPeriodic:N,isRefreshable:V}=p;!N&&!V&&(P?delete a[P]:w&&(w[qd]=null))}};let h=Mg(n,u[0],p,s,l);if(!h)return h;let{handleId:v,handle:b,isRefreshable:_,isPeriodic:y}=h.data;if(v)a[v]=h;else if(b&&(b[qd]=h,_&&!y)){let S=b.refresh;b.refresh=function(){let{zone:w,state:P}=h;return P==="notScheduled"?(h._state="scheduled",w._updateTaskCount(h,1)):P==="running"&&(h._state="scheduling"),S.call(this)}}return b??v??h}else return c.apply(e,u)}),o=Ii(e,t,c=>function(d,u){let p=u[0],f;O1(p)?(f=a[p],delete a[p]):(f=p?.[qd],f?p[qd]=null:f=p),f?.type?f.cancelFn&&f.zone.cancelTask(f):c.apply(e,u)})}function MP(e,n){let{isBrowser:t,isMix:r}=n.getGlobalObjects();if(!t&&!r||!e.customElements||!("customElements"in e))return;let i=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",i)}function RP(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:t,zoneSymbolEventNames:r,TRUE_STR:i,FALSE_STR:o,ZONE_SYMBOL_PREFIX:a}=n.getGlobalObjects();for(let l=0;lo.target===e);if(r.length===0)return n;let i=r[0].ignoreProperties;return n.filter(o=>i.indexOf(o)===-1)}function N1(e,n,t,r){if(!e)return;let i=G1(e,n,t);V1(e,i,r)}function Dg(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function OP(e,n){if(Kd&&!j1||Zone[e.symbol("patchEvents")])return;let t=n.__Zone_ignore_on_properties,r=[];if(Pg){let i=window;r=r.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let o=[];N1(i,Dg(i),t&&t.concat(o),kg(i))}r=r.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let i=0;i{let t=n[e.__symbol__("legacyPatch")];t&&t()}),e.__load_patch("timers",n=>{let r="clear";Ka(n,"set",r,"Timeout"),Ka(n,"set",r,"Interval"),Ka(n,"set",r,"Immediate")}),e.__load_patch("requestAnimationFrame",n=>{Ka(n,"request","cancel","AnimationFrame"),Ka(n,"mozRequest","mozCancel","AnimationFrame"),Ka(n,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(n,t)=>{let r=["alert","prompt","confirm"];for(let i=0;ifunction(c,d){return t.current.run(a,n,d,l)})}}),e.__load_patch("EventTarget",(n,t,r)=>{PP(n,r),RP(n,r);let i=n.XMLHttpRequestEventTarget;i&&i.prototype&&r.patchEventTarget(n,r,[i.prototype])}),e.__load_patch("MutationObserver",(n,t,r)=>{Vl("MutationObserver"),Vl("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(n,t,r)=>{Vl("IntersectionObserver")}),e.__load_patch("FileReader",(n,t,r)=>{Vl("FileReader")}),e.__load_patch("on_property",(n,t,r)=>{OP(r,n)}),e.__load_patch("customElements",(n,t,r)=>{MP(n,r)}),e.__load_patch("XHR",(n,t)=>{c(n);let r=wt("xhrTask"),i=wt("xhrSync"),o=wt("xhrListener"),a=wt("xhrScheduled"),s=wt("xhrURL"),l=wt("xhrErrorBeforeScheduled");function c(d){let u=d.XMLHttpRequest;if(!u)return;let p=u.prototype;function f(T){return T[r]}let h=p[wg],v=p[Cg];if(!h){let T=d.XMLHttpRequestEventTarget;if(T){let I=T.prototype;h=I[wg],v=I[Cg]}}let b="readystatechange",_="scheduled";function y(T){let I=T.data,O=I.target;O[a]=!1,O[l]=!1;let z=O[o];h||(h=O[wg],v=O[Cg]),z&&v.call(O,b,z);let q=O[o]=()=>{if(O.readyState===O.DONE)if(!I.aborted&&O[a]&&T.state===_){let L=O[t.__symbol__("loadfalse")];if(O.status!==0&&L&&L.length>0){let D=T.invoke;T.invoke=function(){let C=O[t.__symbol__("loadfalse")];for(let j=0;jfunction(T,I){return T[i]=I[2]==!1,T[s]=I[1],P.apply(T,I)}),N="XMLHttpRequest.send",V=wt("fetchTaskAborting"),M=wt("fetchTaskScheduling"),K=Ii(p,"send",()=>function(T,I){if(t.current[M]===!0||T[i])return K.apply(T,I);{let O={target:T,url:T[s],isPeriodic:!1,args:I,aborted:!1},z=Mg(N,S,O,y,w);T&&T[l]===!0&&!O.aborted&&z.state===_&&z.invoke()}}),Y=Ii(p,"abort",()=>function(T,I){let O=f(T);if(O&&typeof O.type=="string"){if(O.cancelFn==null||O.data&&O.data.aborted)return;O.zone.cancelTask(O)}else if(t.current[V]===!0)return Y.apply(T,I)})}}),e.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&&CP(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(n,t)=>{function r(i){return function(o){H1(n,i).forEach(s=>{let l=n.PromiseRejectionEvent;if(l){let c=new l(i,{promise:o.promise,reason:o.rejection});s.invoke(c)}})}}n.PromiseRejectionEvent&&(t[wt("unhandledPromiseRejectionHandler")]=r("unhandledrejection"),t[wt("rejectionHandledHandler")]=r("rejectionhandled"))}),e.__load_patch("queueMicrotask",(n,t,r)=>{AP(n,r)})}function FP(e){e.__load_patch("ZoneAwarePromise",(n,t,r)=>{let i=Object.getOwnPropertyDescriptor,o=Object.defineProperty;function a(ie){if(ie&&ie.toString===Object.prototype.toString){let re=ie.constructor&&ie.constructor.name;return(re||"")+": "+JSON.stringify(ie)}return ie?ie.toString():Object.prototype.toString.call(ie)}let s=r.symbol,l=[],c=n[s("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,d=s("Promise"),u=s("then"),p="__creationTrace__";r.onUnhandledError=ie=>{if(r.showUncaughtError()){let re=ie&&ie.rejection;re?console.error("Unhandled Promise rejection:",re instanceof Error?re.message:re,"; Zone:",ie.zone.name,"; Task:",ie.task&&ie.task.source,"; Value:",re,re instanceof Error?re.stack:void 0):console.error(ie)}},r.microtaskDrainDone=()=>{for(;l.length;){let ie=l.shift();try{ie.zone.runGuarded(()=>{throw ie.throwOriginal?ie.rejection:ie})}catch(re){h(re)}}};let f=s("unhandledPromiseRejectionHandler");function h(ie){r.onUnhandledError(ie);try{let re=t[f];typeof re=="function"&&re.call(this,ie)}catch{}}function v(ie){return ie&&typeof ie.then=="function"}function b(ie){return ie}function _(ie){return pe.reject(ie)}let y=s("state"),S=s("value"),w=s("finally"),P=s("parentPromiseValue"),N=s("parentPromiseState"),V="Promise.then",M=null,K=!0,Y=!1,T=0;function I(ie,re){return H=>{try{F(ie,re,H)}catch(ae){F(ie,!1,ae)}}}let O=function(){let ie=!1;return function(H){return function(){ie||(ie=!0,H.apply(null,arguments))}}},z="Promise resolved with itself",q=s("currentTaskTrace");function F(ie,re,H){let ae=O();if(ie===H)throw new TypeError(z);if(ie[y]===M){let xe=null;try{(typeof H=="object"||typeof H=="function")&&(xe=H&&H.then)}catch(Ne){return ae(()=>{F(ie,!1,Ne)})(),ie}if(re!==Y&&H instanceof pe&&H.hasOwnProperty(y)&&H.hasOwnProperty(S)&&H[y]!==M)D(H),F(ie,H[y],H[S]);else if(re!==Y&&typeof xe=="function")try{xe.call(H,ae(I(ie,re)),ae(I(ie,!1)))}catch(Ne){ae(()=>{F(ie,!1,Ne)})()}else{ie[y]=re;let Ne=ie[S];if(ie[S]=H,ie[w]===w&&re===K&&(ie[y]=ie[N],ie[S]=ie[P]),re===Y&&H instanceof Error){let Ee=t.currentTask&&t.currentTask.data&&t.currentTask.data[p];Ee&&o(H,q,{configurable:!0,enumerable:!1,writable:!0,value:Ee})}for(let Ee=0;Ee{try{let ze=ie[S],He=!!H&&w===H[w];He&&(H[P]=ze,H[N]=Ne);let Ke=re.run(Ee,void 0,He&&Ee!==_&&Ee!==b?[]:[ze]);F(H,!0,Ke)}catch(ze){F(H,!1,ze)}},H)}let j="function ZoneAwarePromise() { [native code] }",$=function(){},G=n.AggregateError;class pe{static toString(){return j}static resolve(re){return re instanceof pe?re:F(new this(null),K,re)}static reject(re){return F(new this(null),Y,re)}static withResolvers(){let re={};return re.promise=new pe((H,ae)=>{re.resolve=H,re.reject=ae}),re}static any(re){if(!re||typeof re[Symbol.iterator]!="function")return Promise.reject(new G([],"All promises were rejected"));let H=[],ae=0;try{for(let Ee of re)ae++,H.push(pe.resolve(Ee))}catch{return Promise.reject(new G([],"All promises were rejected"))}if(ae===0)return Promise.reject(new G([],"All promises were rejected"));let xe=!1,Ne=[];return new pe((Ee,ze)=>{for(let He=0;He{xe||(xe=!0,Ee(Ke))},Ke=>{Ne.push(Ke),ae--,ae===0&&(xe=!0,ze(new G(Ne,"All promises were rejected")))})})}static race(re){let H,ae,xe=new this((ze,He)=>{H=ze,ae=He});function Ne(ze){H(ze)}function Ee(ze){ae(ze)}for(let ze of re)v(ze)||(ze=this.resolve(ze)),ze.then(Ne,Ee);return xe}static all(re){return pe.allWithCallback(re)}static allSettled(re){return(this&&this.prototype instanceof pe?this:pe).allWithCallback(re,{thenCallback:ae=>({status:"fulfilled",value:ae}),errorCallback:ae=>({status:"rejected",reason:ae})})}static allWithCallback(re,H){let ae,xe,Ne=new this((Ke,vt)=>{ae=Ke,xe=vt}),Ee=2,ze=0,He=[];for(let Ke of re){v(Ke)||(Ke=this.resolve(Ke));let vt=ze;try{Ke.then(rt=>{He[vt]=H?H.thenCallback(rt):rt,Ee--,Ee===0&&ae(He)},rt=>{H?(He[vt]=H.errorCallback(rt),Ee--,Ee===0&&ae(He)):xe(rt)})}catch(rt){xe(rt)}Ee++,ze++}return Ee-=2,Ee===0&&ae(He),Ne}constructor(re){let H=this;if(!(H instanceof pe))throw new Error("Must be an instanceof Promise.");H[y]=M,H[S]=[];try{let ae=O();re&&re(ae(I(H,K)),ae(I(H,Y)))}catch(ae){F(H,!1,ae)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return pe}then(re,H){let ae=this.constructor?.[Symbol.species];(!ae||typeof ae!="function")&&(ae=this.constructor||pe);let xe=new ae($),Ne=t.current;return this[y]==M?this[S].push(Ne,xe,re,H):C(this,Ne,xe,re,H),xe}catch(re){return this.then(null,re)}finally(re){let H=this.constructor?.[Symbol.species];(!H||typeof H!="function")&&(H=pe);let ae=new H($);ae[w]=w;let xe=t.current;return this[y]==M?this[S].push(xe,ae,re,re):C(this,xe,ae,re,re),ae}}pe.resolve=pe.resolve,pe.reject=pe.reject,pe.race=pe.race,pe.all=pe.all;let we=n[d]=n.Promise;n.Promise=pe;let ht=s("thenPatched");function Te(ie){let re=ie.prototype,H=i(re,"then");if(H&&(H.writable===!1||!H.configurable))return;let ae=re.then;re[u]=ae,ie.prototype.then=function(xe,Ne){return new pe((ze,He)=>{ae.call(this,ze,He)}).then(xe,Ne)},ie[ht]=!0}r.patchThen=Te;function Fe(ie){return function(re,H){let ae=ie.apply(re,H);if(ae instanceof pe)return ae;let xe=ae.constructor;return xe[ht]||Te(xe),ae}}return we&&(Te(we),Ii(n,"fetch",ie=>Fe(ie))),Promise[t.__symbol__("uncaughtPromiseErrors")]=l,pe})}function LP(e){e.__load_patch("toString",n=>{let t=Function.prototype.toString,r=wt("OriginalDelegate"),i=wt("Promise"),o=wt("Error"),a=function(){if(typeof this=="function"){let d=this[r];if(d)return typeof d=="function"?t.call(d):Object.prototype.toString.call(d);if(this===Promise){let u=n[i];if(u)return t.call(u)}if(this===Error){let u=n[o];if(u)return t.call(u)}}return t.call(this)};a[r]=t,Function.prototype.toString=a;let s=Object.prototype.toString,l="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?l:s.call(this)}})}function jP(e,n,t,r,i){let o=Zone.__symbol__(r);if(n[o])return;let a=n[o]=n[r];n[r]=function(s,l,c){return l&&l.prototype&&i.forEach(function(d){let u=`${t}.${r}::`+d,p=l.prototype;try{if(p.hasOwnProperty(d)){let f=e.ObjectGetOwnPropertyDescriptor(p,d);f&&f.value?(f.value=e.wrapWithCurrentZone(f.value,u),e._redefineProperty(l.prototype,d,f)):p[d]&&(p[d]=e.wrapWithCurrentZone(p[d],u))}else p[d]&&(p[d]=e.wrapWithCurrentZone(p[d],u))}catch{}}),a.call(n,s,l,c)},e.attachOriginToPatched(n[r],a)}function VP(e){e.__load_patch("util",(n,t,r)=>{let i=Dg(n);r.patchOnProperties=V1,r.patchMethod=Ii,r.bindArguments=Rg,r.patchMacroTask=DP;let o=t.__symbol__("BLACK_LISTED_EVENTS"),a=t.__symbol__("UNPATCHED_EVENTS");n[a]&&(n[o]=n[a]),n[o]&&(t[o]=t[a]=n[o]),r.patchEventPrototype=IP,r.patchEventTarget=TP,r.isIEOrEdge=SP,r.ObjectDefineProperty=Sg,r.ObjectGetOwnPropertyDescriptor=Ul,r.ObjectCreate=xP,r.ArraySlice=bP,r.patchClass=Vl,r.wrapWithCurrentZone=Ag,r.filterProperties=G1,r.attachOriginToPatched=Ai,r._redefineProperty=Object.defineProperty,r.patchCallbacks=jP,r.getGlobalObjects=()=>({globalSources:U1,zoneSymbolEventNames:xr,eventNames:i,isBrowser:Pg,isMix:j1,isNode:Kd,TRUE_STR:ki,FALSE_STR:Ti,ZONE_SYMBOL_PREFIX:Bl,ADD_EVENT_LISTENER_STR:Tg,REMOVE_EVENT_LISTENER_STR:Ig})})}function UP(e){FP(e),LP(e),VP(e)}var q1=yP();UP(q1);NP(q1);var Nn=null,Yd=!1,Og=1,BP=null,Fn=Symbol("SIGNAL");function Ae(e){let n=Nn;return Nn=e,n}function eu(){return Nn}var Wo={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Ya(e){if(Yd)throw new Error("");if(Nn===null)return;Nn.consumerOnSignalRead(e);let n=Nn.producersTail;if(n!==void 0&&n.producer===e)return;let t,r=Nn.recomputing;if(r&&(t=n!==void 0?n.nextProducer:Nn.producers,t!==void 0&&t.producer===e)){Nn.producersTail=t,t.lastReadVersion=e.version;return}let i=e.consumersTail;if(i!==void 0&&i.consumer===Nn&&(!r||zP(i,Nn)))return;let o=Xa(Nn),a={producer:e,consumer:Nn,nextProducer:t,prevConsumer:i,lastReadVersion:e.version,nextConsumer:void 0};Nn.producersTail=a,n!==void 0?n.nextProducer=a:Nn.producers=a,o&&Y1(e,a)}function W1(){Og++}function tu(e){if(!(Xa(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===Og)){if(!e.producerMustRecompute(e)&&!Hl(e)){Jd(e);return}e.producerRecomputeValue(e),Jd(e)}}function Ng(e){if(e.consumers===void 0)return;let n=Yd;Yd=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let r=t.consumer;r.dirty||$P(r)}}finally{Yd=n}}function Fg(){return Nn?.consumerAllowSignalWrites!==!1}function $P(e){e.dirty=!0,Ng(e),e.consumerMarkedDirty?.(e)}function Jd(e){e.dirty=!1,e.lastCleanEpoch=Og}function Zo(e){return e&&Z1(e),Ae(e)}function Z1(e){e.producersTail=void 0,e.recomputing=!0}function Qa(e,n){Ae(n),e&&K1(e)}function K1(e){e.recomputing=!1;let n=e.producersTail,t=n!==void 0?n.nextProducer:e.producers;if(t!==void 0){if(Xa(e))do t=Lg(t);while(t!==void 0);n!==void 0?n.nextProducer=void 0:e.producers=void 0}}function Hl(e){for(let n=e.producers;n!==void 0;n=n.nextProducer){let t=n.producer,r=n.lastReadVersion;if(r!==t.version||(tu(t),r!==t.version))return!0}return!1}function Ko(e){if(Xa(e)){let n=e.producers;for(;n!==void 0;)n=Lg(n)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function Y1(e,n){let t=e.consumersTail,r=Xa(e);if(t!==void 0?(n.nextConsumer=t.nextConsumer,t.nextConsumer=n):(n.nextConsumer=void 0,e.consumers=n),n.prevConsumer=t,e.consumersTail=n,!r)for(let i=e.producers;i!==void 0;i=i.nextProducer)Y1(i.producer,i)}function Lg(e){let n=e.producer,t=e.nextProducer,r=e.nextConsumer,i=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r!==void 0?r.prevConsumer=i:n.consumersTail=i,i!==void 0)i.nextConsumer=r;else if(n.consumers=r,!Xa(n)){let o=n.producers;for(;o!==void 0;)o=Lg(o)}return t}function Xa(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function nu(e){BP?.(e)}function zP(e,n){let t=n.producersTail;if(t!==void 0){let r=n.producers;do{if(r===e)return!0;if(r===t)break;r=r.nextProducer}while(r!==void 0)}return!1}function ru(e,n){return Object.is(e,n)}function iu(e,n){let t=Object.create(HP);t.computation=e,n!==void 0&&(t.equal=n);let r=()=>{if(tu(t),Ya(t),t.value===zl)throw t.error;return t.value};return r[Fn]=t,nu(t),r}var Qd=Symbol("UNSET"),Xd=Symbol("COMPUTING"),zl=Symbol("ERRORED"),HP=X(R({},Wo),{value:Qd,dirty:!0,error:null,equal:ru,kind:"computed",producerMustRecompute(e){return e.value===Qd||e.value===Xd},producerRecomputeValue(e){if(e.value===Xd)throw new Error("");let n=e.value;e.value=Xd;let t=Zo(e),r,i=!1;try{r=e.computation(),Ae(null),i=n!==Qd&&n!==zl&&r!==zl&&e.equal(n,r)}catch(o){r=zl,e.error=o}finally{Qa(e,t)}if(i){e.value=n;return}e.value=r,e.version++}});function GP(){throw new Error}var Q1=GP;function X1(e){Q1(e)}function jg(e){Q1=e}var qP=null;function Vg(e,n){let t=Object.create(ou);t.value=e,n!==void 0&&(t.equal=n);let r=()=>J1(t);return r[Fn]=t,nu(t),[r,a=>Ja(t,a),a=>Ug(t,a)]}function J1(e){return Ya(e),e.value}function Ja(e,n){Fg()||X1(e),e.equal(e.value,n)||(e.value=n,WP(e))}function Ug(e,n){Fg()||X1(e),Ja(e,n(e.value))}var ou=X(R({},Wo),{equal:ru,value:void 0,kind:"signal"});function WP(e){e.version++,W1(),Ng(e),qP?.(e)}var Bg=X(R({},Wo),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!0,dirty:!0,kind:"effect"});function $g(e){if(e.dirty=!1,e.version>0&&!Hl(e))return;e.version++;let n=Zo(e);try{e.cleanup(),e.fn()}finally{Qa(e,n)}}function Ge(e){return typeof e=="function"}function ni(e){let t=e(r=>{Error.call(r),r.stack=new Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var au=ni(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription: +${t.map((r,i)=>`${i+1}) ${r.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=t});function Yo(e,n){if(e){let t=e.indexOf(n);0<=t&&e.splice(t,1)}}var Zt=class e{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;let{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(let o of t)o.remove(this);else t.remove(this);let{initialTeardown:r}=this;if(Ge(r))try{r()}catch(o){n=o instanceof au?o.errors:[o]}let{_finalizers:i}=this;if(i){this._finalizers=null;for(let o of i)try{ew(o)}catch(a){n=n??[],a instanceof au?n=[...n,...a.errors]:n.push(a)}}if(n)throw new au(n)}}add(n){var t;if(n&&n!==this)if(this.closed)ew(n);else{if(n instanceof e){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(n)}}_hasParent(n){let{_parentage:t}=this;return t===n||Array.isArray(t)&&t.includes(n)}_addParent(n){let{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(n),t):t?[t,n]:n}_removeParent(n){let{_parentage:t}=this;t===n?this._parentage=null:Array.isArray(t)&&Yo(t,n)}remove(n){let{_finalizers:t}=this;t&&Yo(t,n),n instanceof e&&n._removeParent(this)}};Zt.EMPTY=(()=>{let e=new Zt;return e.closed=!0,e})();var zg=Zt.EMPTY;function su(e){return e instanceof Zt||e&&"closed"in e&&Ge(e.remove)&&Ge(e.add)&&Ge(e.unsubscribe)}function ew(e){Ge(e)?e():e.unsubscribe()}var jr={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var es={setTimeout(e,n,...t){let{delegate:r}=es;return r?.setTimeout?r.setTimeout(e,n,...t):setTimeout(e,n,...t)},clearTimeout(e){let{delegate:n}=es;return(n?.clearTimeout||clearTimeout)(e)},delegate:void 0};function lu(e){es.setTimeout(()=>{let{onUnhandledError:n}=jr;if(n)n(e);else throw e})}function Mi(){}var tw=Hg("C",void 0,void 0);function nw(e){return Hg("E",void 0,e)}function rw(e){return Hg("N",e,void 0)}function Hg(e,n,t){return{kind:e,value:n,error:t}}var Qo=null;function ts(e){if(jr.useDeprecatedSynchronousErrorHandling){let n=!Qo;if(n&&(Qo={errorThrown:!1,error:null}),e(),n){let{errorThrown:t,error:r}=Qo;if(Qo=null,t)throw r}}else e()}function iw(e){jr.useDeprecatedSynchronousErrorHandling&&Qo&&(Qo.errorThrown=!0,Qo.error=e)}var Xo=class extends Zt{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,su(n)&&n.add(this)):this.destination=YP}static create(n,t,r){return new Ri(n,t,r)}next(n){this.isStopped?qg(rw(n),this):this._next(n)}error(n){this.isStopped?qg(nw(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?qg(tw,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},ZP=Function.prototype.bind;function Gg(e,n){return ZP.call(e,n)}var Wg=class{constructor(n){this.partialObserver=n}next(n){let{partialObserver:t}=this;if(t.next)try{t.next(n)}catch(r){cu(r)}}error(n){let{partialObserver:t}=this;if(t.error)try{t.error(n)}catch(r){cu(r)}else cu(n)}complete(){let{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(t){cu(t)}}},Ri=class extends Xo{constructor(n,t,r){super();let i;if(Ge(n)||!n)i={next:n??void 0,error:t??void 0,complete:r??void 0};else{let o;this&&jr.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),i={next:n.next&&Gg(n.next,o),error:n.error&&Gg(n.error,o),complete:n.complete&&Gg(n.complete,o)}):i=n}this.destination=new Wg(i)}};function cu(e){jr.useDeprecatedSynchronousErrorHandling?iw(e):lu(e)}function KP(e){throw e}function qg(e,n){let{onStoppedNotification:t}=jr;t&&es.setTimeout(()=>t(e,n))}var YP={closed:!0,next:Mi,error:KP,complete:Mi};var ns=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Hn(e){return e}function Zg(...e){return Kg(e)}function Kg(e){return e.length===0?Hn:e.length===1?e[0]:function(t){return e.reduce((r,i)=>i(r),t)}}var De=(()=>{class e{constructor(t){t&&(this._subscribe=t)}lift(t){let r=new e;return r.source=this,r.operator=t,r}subscribe(t,r,i){let o=XP(t)?t:new Ri(t,r,i);return ts(()=>{let{operator:a,source:s}=this;o.add(a?a.call(o,s):s?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(t){try{return this._subscribe(t)}catch(r){t.error(r)}}forEach(t,r){return r=ow(r),new r((i,o)=>{let a=new Ri({next:s=>{try{t(s)}catch(l){o(l),a.unsubscribe()}},error:o,complete:i});this.subscribe(a)})}_subscribe(t){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(t)}[ns](){return this}pipe(...t){return Kg(t)(this)}toPromise(t){return t=ow(t),new t((r,i)=>{let o;this.subscribe(a=>o=a,a=>i(a),()=>r(o))})}}return e.create=n=>new e(n),e})();function ow(e){var n;return(n=e??jr.Promise)!==null&&n!==void 0?n:Promise}function QP(e){return e&&Ge(e.next)&&Ge(e.error)&&Ge(e.complete)}function XP(e){return e&&e instanceof Xo||QP(e)&&su(e)}function JP(e){return Ge(e?.lift)}function Pe(e){return n=>{if(JP(n))return n.lift(function(t){try{return e(t,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function Oe(e,n,t,r,i){return new Gl(e,n,t,r,i)}var Gl=class extends Xo{constructor(n,t,r,i,o,a){super(n),this.onFinalize=o,this.shouldUnsubscribe=a,this._next=t?function(s){try{t(s)}catch(l){n.error(l)}}:super._next,this._error=i?function(s){try{i(s)}catch(l){n.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(s){n.error(s)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:t}=this;super.unsubscribe(),!t&&((n=this.onFinalize)===null||n===void 0||n.call(this))}}};var aw=ni(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var qe=(()=>{class e extends De{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){let r=new du(this,this);return r.operator=t,r}_throwIfClosed(){if(this.closed)throw new aw}next(t){ts(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(t)}})}error(t){ts(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;let{observers:r}=this;for(;r.length;)r.shift().error(t)}})}complete(){ts(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){let{hasError:r,isStopped:i,observers:o}=this;return r||i?zg:(this.currentObservers=null,o.push(t),new Zt(()=>{this.currentObservers=null,Yo(o,t)}))}_checkFinalizedStatuses(t){let{hasError:r,thrownError:i,isStopped:o}=this;r?t.error(i):o&&t.complete()}asObservable(){let t=new De;return t.source=this,t}}return e.create=(n,t)=>new du(n,t),e})(),du=class extends qe{constructor(n,t){super(),this.destination=n,this.source=t}next(n){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.next)===null||r===void 0||r.call(t,n)}error(n){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.error)===null||r===void 0||r.call(t,n)}complete(){var n,t;(t=(n=this.destination)===null||n===void 0?void 0:n.complete)===null||t===void 0||t.call(n)}_subscribe(n){var t,r;return(r=(t=this.source)===null||t===void 0?void 0:t.subscribe(n))!==null&&r!==void 0?r:zg}};var dt=class extends qe{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){let t=super._subscribe(n);return!t.closed&&n.next(this._value),t}getValue(){let{hasError:n,thrownError:t,_value:r}=this;if(n)throw t;return this._throwIfClosed(),r}next(n){super.next(this._value=n)}};var ql={now(){return(ql.delegate||Date).now()},delegate:void 0};var ar=class extends qe{constructor(n=1/0,t=1/0,r=ql){super(),this._bufferSize=n,this._windowTime=t,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=t===1/0,this._bufferSize=Math.max(1,n),this._windowTime=Math.max(1,t)}next(n){let{isStopped:t,_buffer:r,_infiniteTimeWindow:i,_timestampProvider:o,_windowTime:a}=this;t||(r.push(n),!i&&r.push(o.now()+a)),this._trimBuffer(),super.next(n)}_subscribe(n){this._throwIfClosed(),this._trimBuffer();let t=this._innerSubscribe(n),{_infiniteTimeWindow:r,_buffer:i}=this,o=i.slice();for(let a=0;asw(n)&&e()),n},clearImmediate(e){sw(e)}};var{setImmediate:tO,clearImmediate:nO}=lw,Zl={setImmediate(...e){let{delegate:n}=Zl;return(n?.setImmediate||tO)(...e)},clearImmediate(e){let{delegate:n}=Zl;return(n?.clearImmediate||nO)(e)},delegate:void 0};var pu=class extends uo{constructor(n,t){super(n,t),this.scheduler=n,this.work=t}requestAsyncId(n,t,r=0){return r!==null&&r>0?super.requestAsyncId(n,t,r):(n.actions.push(this),n._scheduled||(n._scheduled=Zl.setImmediate(n.flush.bind(n,void 0))))}recycleAsyncId(n,t,r=0){var i;if(r!=null?r>0:this.delay>0)return super.recycleAsyncId(n,t,r);let{actions:o}=n;t!=null&&((i=o[o.length-1])===null||i===void 0?void 0:i.id)!==t&&(Zl.clearImmediate(t),n._scheduled===t&&(n._scheduled=void 0))}};var rs=class e{constructor(n,t=e.now){this.schedulerActionCtor=n,this.now=t}schedule(n,t=0,r){return new this.schedulerActionCtor(this,n).schedule(r,t)}};rs.now=ql.now;var po=class extends rs{constructor(n,t=rs.now){super(n,t),this.actions=[],this._active=!1}flush(n){let{actions:t}=this;if(this._active){t.push(n);return}let r;this._active=!0;do if(r=n.execute(n.state,n.delay))break;while(n=t.shift());if(this._active=!1,r){for(;n=t.shift();)n.unsubscribe();throw r}}};var fu=class extends po{flush(n){this._active=!0;let t=this._scheduled;this._scheduled=void 0;let{actions:r}=this,i;n=n||r.shift();do if(i=n.execute(n.state,n.delay))break;while((n=r[0])&&n.id===t&&r.shift());if(this._active=!1,i){for(;(n=r[0])&&n.id===t&&r.shift();)n.unsubscribe();throw i}}};var hu=new fu(pu);var Jo=new po(uo),cw=Jo;var gu=class extends uo{constructor(n,t){super(n,t),this.scheduler=n,this.work=t}schedule(n,t=0){return t>0?super.schedule(n,t):(this.delay=t,this.state=n,this.scheduler.flush(this),this)}execute(n,t){return t>0||this.closed?super.execute(n,t):this._execute(n,t)}requestAsyncId(n,t,r=0){return r!=null&&r>0||r==null&&this.delay>0?super.requestAsyncId(n,t,r):(n.flush(this),0)}};var mu=class extends po{};var fo=new mu(gu);var At=new De(e=>e.complete());function _u(e){return e&&Ge(e.schedule)}function Xg(e){return e[e.length-1]}function is(e){return Ge(Xg(e))?e.pop():void 0}function ri(e){return _u(Xg(e))?e.pop():void 0}function dw(e,n){return typeof Xg(e)=="number"?e.pop():n}var Lw=Gd(Fw(),1),{__extends:tJ,__assign:nJ,__rest:rJ,__decorate:iJ,__param:oJ,__esDecorate:aJ,__runInitializers:sJ,__propKey:lJ,__setFunctionName:cJ,__metadata:dJ,__awaiter:jw,__generator:uJ,__exportStar:pJ,__createBinding:fJ,__values:hJ,__read:gJ,__spread:mJ,__spreadArrays:_J,__spreadArray:vJ,__await:bu,__asyncGenerator:Vw,__asyncDelegator:yJ,__asyncValues:Uw,__makeTemplateObject:xJ,__importStar:bJ,__importDefault:wJ,__classPrivateFieldGet:CJ,__classPrivateFieldSet:EJ,__classPrivateFieldIn:DJ}=Lw.default;var wu=e=>e&&typeof e.length=="number"&&typeof e!="function";function Cu(e){return Ge(e?.then)}function Eu(e){return Ge(e[ns])}function Du(e){return Symbol.asyncIterator&&Ge(e?.[Symbol.asyncIterator])}function Su(e){return new TypeError(`You provided ${e!==null&&typeof e=="object"?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function rO(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var ku=rO();function Tu(e){return Ge(e?.[ku])}function Iu(e){return Vw(this,arguments,function*(){let t=e.getReader();try{for(;;){let{value:r,done:i}=yield bu(t.read());if(i)return yield bu(void 0);yield yield bu(r)}}finally{t.releaseLock()}})}function Au(e){return Ge(e?.getReader)}function ut(e){if(e instanceof De)return e;if(e!=null){if(Eu(e))return iO(e);if(wu(e))return oO(e);if(Cu(e))return aO(e);if(Du(e))return Bw(e);if(Tu(e))return sO(e);if(Au(e))return lO(e)}throw Su(e)}function iO(e){return new De(n=>{let t=e[ns]();if(Ge(t.subscribe))return t.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function oO(e){return new De(n=>{for(let t=0;t{e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,lu)})}function sO(e){return new De(n=>{for(let t of e)if(n.next(t),n.closed)return;n.complete()})}function Bw(e){return new De(n=>{cO(e,n).catch(t=>n.error(t))})}function lO(e){return Bw(Iu(e))}function cO(e,n){var t,r,i,o;return jw(this,void 0,void 0,function*(){try{for(t=Uw(e);r=yield t.next(),!r.done;){let a=r.value;if(n.next(a),n.closed)return}}catch(a){i={error:a}}finally{try{r&&!r.done&&(o=t.return)&&(yield o.call(t))}finally{if(i)throw i.error}}n.complete()})}function Ln(e,n,t,r=0,i=!1){let o=n.schedule(function(){t(),i?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(o),!i)return o}function Vr(e,n=0){return Pe((t,r)=>{t.subscribe(Oe(r,i=>Ln(r,e,()=>r.next(i),n),()=>Ln(r,e,()=>r.complete(),n),i=>Ln(r,e,()=>r.error(i),n)))})}function Mu(e,n=0){return Pe((t,r)=>{r.add(e.schedule(()=>t.subscribe(r),n))})}function $w(e,n){return ut(e).pipe(Mu(n),Vr(n))}function zw(e,n){return ut(e).pipe(Mu(n),Vr(n))}function Hw(e,n){return new De(t=>{let r=0;return n.schedule(function(){r===e.length?t.complete():(t.next(e[r++]),t.closed||this.schedule())})})}function Gw(e,n){return new De(t=>{let r;return Ln(t,n,()=>{r=e[ku](),Ln(t,n,()=>{let i,o;try{({value:i,done:o}=r.next())}catch(a){t.error(a);return}o?t.complete():t.next(i)},0,!0)}),()=>Ge(r?.return)&&r.return()})}function Ru(e,n){if(!e)throw new Error("Iterable cannot be null");return new De(t=>{Ln(t,n,()=>{let r=e[Symbol.asyncIterator]();Ln(t,n,()=>{r.next().then(i=>{i.done?t.complete():t.next(i.value)})},0,!0)})})}function qw(e,n){return Ru(Iu(e),n)}function Kl(e,n){if(e!=null){if(Eu(e))return $w(e,n);if(wu(e))return Hw(e,n);if(Cu(e))return zw(e,n);if(Du(e))return Ru(e,n);if(Tu(e))return Gw(e,n);if(Au(e))return qw(e,n)}throw Su(e)}function Kt(e,n){return n?Kl(e,n):ut(e)}function fe(...e){let n=ri(e);return Kt(e,n)}function ea(e,n){let t=Ge(e)?e:()=>e,r=i=>i.error(t());return new De(n?i=>n.schedule(r,0,i):r)}var ho=class e{constructor(n,t,r){this.kind=n,this.value=t,this.error=r,this.hasValue=n==="N"}observe(n){return em(this,n)}do(n,t,r){let{kind:i,value:o,error:a}=this;return i==="N"?n?.(o):i==="E"?t?.(a):r?.()}accept(n,t,r){var i;return Ge((i=n)===null||i===void 0?void 0:i.next)?this.observe(n):this.do(n,t,r)}toObservable(){let{kind:n,value:t,error:r}=this,i=n==="N"?fe(t):n==="E"?ea(()=>r):n==="C"?At:0;if(!i)throw new TypeError(`Unexpected notification kind ${n}`);return i}static createNext(n){return new e("N",n)}static createError(n){return new e("E",void 0,n)}static createComplete(){return e.completeNotification}};ho.completeNotification=new ho("C");function em(e,n){var t,r,i;let{kind:o,value:a,error:s}=e;if(typeof o!="string")throw new TypeError('Invalid notification, missing "kind"');o==="N"?(t=n.next)===null||t===void 0||t.call(n,a):o==="E"?(r=n.error)===null||r===void 0||r.call(n,s):(i=n.complete)===null||i===void 0||i.call(n)}function ta(e){return!!e&&(e instanceof De||Ge(e.lift)&&Ge(e.subscribe))}var na=ni(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function Pu(e){return e instanceof Date&&!isNaN(e)}var dO=ni(e=>function(t=null){e(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=t});function tm(e,n){let{first:t,each:r,with:i=uO,scheduler:o=n??Jo,meta:a=null}=Pu(e)?{first:e}:typeof e=="number"?{each:e}:e;if(t==null&&r==null)throw new TypeError("No timeout provided.");return Pe((s,l)=>{let c,d,u=null,p=0,f=h=>{d=Ln(l,o,()=>{try{c.unsubscribe(),ut(i({meta:a,lastValue:u,seen:p})).subscribe(l)}catch(v){l.error(v)}},h)};c=s.subscribe(Oe(l,h=>{d?.unsubscribe(),p++,l.next(u=h),r>0&&f(r)},void 0,void 0,()=>{d?.closed||d?.unsubscribe(),u=null})),!p&&f(t!=null?typeof t=="number"?t:+t-o.now():r)})}function uO(e){throw new dO(e)}function de(e,n){return Pe((t,r)=>{let i=0;t.subscribe(Oe(r,o=>{r.next(e.call(n,o,i++))}))})}var{isArray:pO}=Array;function fO(e,n){return pO(n)?e(...n):e(n)}function Ou(e){return de(n=>fO(e,n))}var{isArray:hO}=Array,{getPrototypeOf:gO,prototype:mO,keys:_O}=Object;function Nu(e){if(e.length===1){let n=e[0];if(hO(n))return{args:n,keys:null};if(vO(n)){let t=_O(n);return{args:t.map(r=>n[r]),keys:t}}}return{args:e,keys:null}}function vO(e){return e&&typeof e=="object"&&gO(e)===mO}function Fu(e,n){return e.reduce((t,r,i)=>(t[r]=n[i],t),{})}function Yl(...e){let n=ri(e),t=is(e),{args:r,keys:i}=Nu(e);if(r.length===0)return Kt([],n);let o=new De(yO(r,n,i?a=>Fu(i,a):Hn));return t?o.pipe(Ou(t)):o}function yO(e,n,t=Hn){return r=>{Ww(n,()=>{let{length:i}=e,o=new Array(i),a=i,s=i;for(let l=0;l{let c=Kt(e[l],n),d=!1;c.subscribe(Oe(r,u=>{o[l]=u,d||(d=!0,s--),s||r.next(t(o.slice()))},()=>{--a||r.complete()}))},r)},r)}}function Ww(e,n,t){e?Ln(t,e,n):n()}function Zw(e,n,t,r,i,o,a,s){let l=[],c=0,d=0,u=!1,p=()=>{u&&!l.length&&!c&&n.complete()},f=v=>c{o&&n.next(v),c++;let b=!1;ut(t(v,d++)).subscribe(Oe(n,_=>{i?.(_),o?f(_):n.next(_)},()=>{b=!0},void 0,()=>{if(b)try{for(c--;l.length&&ch(_)):h(_)}p()}catch(_){n.error(_)}}))};return e.subscribe(Oe(n,f,()=>{u=!0,p()})),()=>{s?.()}}function vn(e,n,t=1/0){return Ge(n)?vn((r,i)=>de((o,a)=>n(r,o,i,a))(ut(e(r,i))),t):(typeof n=="number"&&(t=n),Pe((r,i)=>Zw(r,i,e,t)))}function Lu(e=1/0){return vn(Hn,e)}function Kw(){return Lu(1)}function as(...e){return Kw()(Kt(e,ri(e)))}function Ql(e){return new De(n=>{ut(e()).subscribe(n)})}function nm(...e){let n=is(e),{args:t,keys:r}=Nu(e),i=new De(o=>{let{length:a}=t;if(!a){o.complete();return}let s=new Array(a),l=a,c=a;for(let d=0;d{u||(u=!0,c--),s[d]=p},()=>l--,void 0,()=>{(!l||!u)&&(c||o.next(r?Fu(r,s):s),o.complete())}))}});return n?i.pipe(Ou(n)):i}function Xl(e=0,n,t=cw){let r=-1;return n!=null&&(_u(n)?t=n:r=n),new De(i=>{let o=Pu(e)?+e-t.now():e;o<0&&(o=0);let a=0;return t.schedule(function(){i.closed||(i.next(a++),0<=r?this.schedule(void 0,r):i.complete())},o)})}function ra(e=0,n=Jo){return e<0&&(e=0),Xl(e,e,n)}function Pi(...e){let n=ri(e),t=dw(e,1/0),r=e;return r.length?r.length===1?ut(r[0]):Lu(t)(Kt(r,n)):At}function Je(e,n){return Pe((t,r)=>{let i=0;t.subscribe(Oe(r,o=>e.call(n,o,i++)&&r.next(o)))})}function at(e){return Pe((n,t)=>{let r=null,i=!1,o;r=n.subscribe(Oe(t,void 0,void 0,a=>{o=ut(e(a,at(e)(n))),r?(r.unsubscribe(),r=null,o.subscribe(t)):i=!0})),i&&(r.unsubscribe(),r=null,o.subscribe(t))})}function Yw(e,n,t,r,i){return(o,a)=>{let s=t,l=n,c=0;o.subscribe(Oe(a,d=>{let u=c++;l=s?e(l,d,u):(s=!0,d),r&&a.next(l)},i&&(()=>{s&&a.next(l),a.complete()})))}}function Oi(e,n){return Ge(n)?vn(e,n,1):vn(e,1)}function go(e,n=Jo){return Pe((t,r)=>{let i=null,o=null,a=null,s=()=>{if(i){i.unsubscribe(),i=null;let c=o;o=null,r.next(c)}};function l(){let c=a+e,d=n.now();if(d{o=c,a=n.now(),i||(i=n.schedule(l,e),r.add(i))},()=>{s(),r.complete()},void 0,()=>{o=i=null}))})}function Qw(e){return Pe((n,t)=>{let r=!1;n.subscribe(Oe(t,i=>{r=!0,t.next(i)},()=>{r||t.next(e),t.complete()}))})}function Tt(e){return e<=0?()=>At:Pe((n,t)=>{let r=0;n.subscribe(Oe(t,i=>{++r<=e&&(t.next(i),e<=r&&t.complete())}))})}function rm(){return Pe((e,n)=>{e.subscribe(Oe(n,Mi))})}function im(){return Pe((e,n)=>{e.subscribe(Oe(n,t=>em(t,n)))})}function Ie(e,n=Hn){return e=e??xO,Pe((t,r)=>{let i,o=!0;t.subscribe(Oe(r,a=>{let s=n(a);(o||!e(i,s))&&(o=!1,i=s,r.next(a))}))})}function xO(e,n){return e===n}function Xw(e=bO){return Pe((n,t)=>{let r=!1;n.subscribe(Oe(t,i=>{r=!0,t.next(i)},()=>r?t.complete():t.error(e())))})}function bO(){return new na}function ju(e,n){return n?t=>t.pipe(ju((r,i)=>ut(e(r,i)).pipe(de((o,a)=>n(r,o,i,a))))):Pe((t,r)=>{let i=0,o=null,a=!1;t.subscribe(Oe(r,s=>{o||(o=Oe(r,void 0,()=>{o=null,a&&r.complete()}),ut(e(s,i++)).subscribe(o))},()=>{a=!0,!o&&r.complete()}))})}function jn(e){return Pe((n,t)=>{try{n.subscribe(t)}finally{t.add(e)}})}function Ni(e,n){let t=arguments.length>=2;return r=>r.pipe(e?Je((i,o)=>e(i,o,r)):Hn,Tt(1),t?Qw(n):Xw(()=>new na))}function Vu(e,n,t,r){return Pe((i,o)=>{let a;!n||typeof n=="function"?a=n:{duration:t,element:a,connector:r}=n;let s=new Map,l=h=>{s.forEach(h),h(o)},c=h=>l(v=>v.error(h)),d=0,u=!1,p=new Gl(o,h=>{try{let v=e(h),b=s.get(v);if(!b){s.set(v,b=r?r():new qe);let _=f(v,b);if(o.next(_),t){let y=Oe(b,()=>{b.complete(),y?.unsubscribe()},void 0,void 0,()=>s.delete(v));p.add(ut(t(_)).subscribe(y))}}b.next(a?a(h):h)}catch(v){c(v)}},()=>l(h=>h.complete()),c,()=>s.clear(),()=>(u=!0,d===0));i.subscribe(p);function f(h,v){let b=new De(_=>{d++;let y=v.subscribe(_);return()=>{y.unsubscribe(),--d===0&&u&&p.unsubscribe()}});return b.key=h,b}})}function Uu(e){return e<=0?()=>At:Pe((n,t)=>{let r=[];n.subscribe(Oe(t,i=>{r.push(i),e{for(let i of r)t.next(i);t.complete()},void 0,()=>{r=null}))})}function om(){return Pe((e,n)=>{e.subscribe(Oe(n,t=>{n.next(ho.createNext(t))},()=>{n.next(ho.createComplete()),n.complete()},t=>{n.next(ho.createError(t)),n.complete()}))})}function am(...e){let n=e.length;if(n===0)throw new Error("list of properties cannot be empty.");return de(t=>{let r=t;for(let i=0;i=2,!0))}function ec(e={}){let{connector:n=()=>new qe,resetOnError:t=!0,resetOnComplete:r=!0,resetOnRefCountZero:i=!0}=e;return o=>{let a,s,l,c=0,d=!1,u=!1,p=()=>{s?.unsubscribe(),s=void 0},f=()=>{p(),a=l=void 0,d=u=!1},h=()=>{let v=a;f(),v?.unsubscribe()};return Pe((v,b)=>{c++,!u&&!d&&p();let _=l=l??n();b.add(()=>{c--,c===0&&!u&&!d&&(s=sm(h,i))}),_.subscribe(b),!a&&c>0&&(a=new Ri({next:y=>_.next(y),error:y=>{u=!0,p(),s=sm(f,t,y),_.error(y)},complete:()=>{d=!0,p(),s=sm(f,r),_.complete()}}),ut(v).subscribe(a))})(o)}}function sm(e,n,...t){if(n===!0){e();return}if(n===!1)return;let r=new Ri({next:()=>{r.unsubscribe(),e()}});return ut(n(...t)).subscribe(r)}function lm(e,n,t){let r,i=!1;return e&&typeof e=="object"?{bufferSize:r=1/0,windowTime:n=1/0,refCount:i=!1,scheduler:t}=e:r=e??1/0,ec({connector:()=>new ar(r,n,t),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:i})}function ia(e){return Je((n,t)=>e<=t)}function cm(...e){let n=ri(e);return Pe((t,r)=>{(n?as(e,t,n):as(e,t)).subscribe(r)})}function $e(e,n){return Pe((t,r)=>{let i=null,o=0,a=!1,s=()=>a&&!i&&r.complete();t.subscribe(Oe(r,l=>{i?.unsubscribe();let c=0,d=o++;ut(e(l,d)).subscribe(i=Oe(r,u=>r.next(n?n(l,u,d,c++):u),()=>{i=null,s()}))},()=>{a=!0,s()}))})}function ce(e){return Pe((n,t)=>{ut(e).subscribe(Oe(t,()=>t.complete(),Mi)),!t.closed&&n.subscribe(t)})}function Ht(e,n,t){let r=Ge(e)||n||t?{next:e,error:n,complete:t}:e;return r?Pe((i,o)=>{var a;(a=r.subscribe)===null||a===void 0||a.call(r);let s=!0;i.subscribe(Oe(o,l=>{var c;(c=r.next)===null||c===void 0||c.call(r,l),o.next(l)},()=>{var l;s=!1,(l=r.complete)===null||l===void 0||l.call(r),o.complete()},l=>{var c;s=!1,(c=r.error)===null||c===void 0||c.call(r,l),o.error(l)},()=>{var l,c;s&&((l=r.unsubscribe)===null||l===void 0||l.call(r)),(c=r.finalize)===null||c===void 0||c.call(r)}))}):Hn}function mo(...e){let n=is(e);return Pe((t,r)=>{let i=e.length,o=new Array(i),a=e.map(()=>!1),s=!1;for(let l=0;l{o[l]=c,!s&&!a[l]&&(a[l]=!0,(s=a.every(Hn))&&(a=null))},Mi));t.subscribe(Oe(r,l=>{if(s){let c=[l,...o];r.next(n?n(...c):c)}}))})}var dm;function Bu(){return dm}function ii(e){let n=dm;return dm=e,n}var Jw=Symbol("NotFound");function ss(e){return e===Jw||e?.name==="\u0275NotFound"}function eC(e){let n=Ae(null);try{return e()}finally{Ae(n)}}var Zu="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss",oe=class extends Error{code;constructor(n,t){super(Li(n,t)),this.code=n}};function wO(e){return`NG0${Math.abs(e)}`}function Li(e,n){return`${wO(e)}${n?": "+n:""}`}function Ct(e){for(let n in e)if(e[n]===Ct)return n;throw Error("")}function oC(e,n){for(let t in n)n.hasOwnProperty(t)&&!e.hasOwnProperty(t)&&(e[t]=n[t])}function sc(e){if(typeof e=="string")return e;if(Array.isArray(e))return`[${e.map(sc).join(", ")}]`;if(e==null)return""+e;let n=e.overriddenName||e.name;if(n)return`${n}`;let t=e.toString();if(t==null)return""+t;let r=t.indexOf(` +`);return r>=0?t.slice(0,r):t}function Ku(e,n){return e?n?`${e} ${n}`:e:n||""}var CO=Ct({__forward_ref__:Ct});function Un(e){return e.__forward_ref__=Un,e}function kn(e){return Em(e)?e():e}function Em(e){return typeof e=="function"&&e.hasOwnProperty(CO)&&e.__forward_ref__===Un}function ee(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Tn(e){return{providers:e.providers||[],imports:e.imports||[]}}function lc(e){return EO(e,Yu)}function Dm(e){return lc(e)!==null}function EO(e,n){return e.hasOwnProperty(n)&&e[n]||null}function DO(e){let n=e?.[Yu]??null;return n||null}function pm(e){return e&&e.hasOwnProperty(zu)?e[zu]:null}var Yu=Ct({\u0275prov:Ct}),zu=Ct({\u0275inj:Ct}),le=class{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,t){this._desc=n,this.\u0275prov=void 0,typeof t=="number"?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.\u0275prov=ee({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Sm(e){return e&&!!e.\u0275providers}var km=Ct({\u0275cmp:Ct}),Tm=Ct({\u0275dir:Ct}),Im=Ct({\u0275pipe:Ct}),Am=Ct({\u0275mod:Ct}),nc=Ct({\u0275fac:Ct}),ca=Ct({__NG_ELEMENT_ID__:Ct}),tC=Ct({__NG_ENV_ID__:Ct});function Mm(e){return Qu(e,"@NgModule"),e[Am]||null}function ji(e){return Qu(e,"@Component"),e[km]||null}function Rm(e){return Qu(e,"@Directive"),e[Tm]||null}function aC(e){return Qu(e,"@Pipe"),e[Im]||null}function Qu(e,n){if(e==null)throw new oe(-919,!1)}function Xu(e){return typeof e=="string"?e:e==null?"":String(e)}var sC=Ct({ngErrorCode:Ct}),SO=Ct({ngErrorMessage:Ct}),kO=Ct({ngTokenPath:Ct});function Pm(e,n){return lC("",-200,n)}function Ju(e,n){throw new oe(-201,!1)}function lC(e,n,t){let r=new oe(n,e);return r[sC]=n,r[SO]=e,t&&(r[kO]=t),r}function TO(e){return e[sC]}var fm;function cC(){return fm}function Gn(e){let n=fm;return fm=e,n}function Om(e,n,t){let r=lc(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(t&8)return null;if(n!==void 0)return n;Ju(e,"")}var IO={},oa=IO,hm="__NG_DI_FLAG__",gm=class{injector;constructor(n){this.injector=n}retrieve(n,t){let r=aa(t)||0;try{return this.injector.get(n,r&8?null:oa,r)}catch(i){if(ss(i))return i;throw i}}};function AO(e,n=0){let t=Bu();if(t===void 0)throw new oe(-203,!1);if(t===null)return Om(e,void 0,n);{let r=MO(n),i=t.retrieve(e,r);if(ss(i)){if(r.optional)return null;throw i}return i}}function se(e,n=0){return(cC()||AO)(kn(e),n)}function A(e,n){return se(e,aa(n))}function aa(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function MO(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function mm(e){let n=[];for(let t=0;tArray.isArray(t)?ep(t,n):n(t))}function Nm(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function cc(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}function fC(e,n,t,r){let i=e.length;if(i==n)e.push(t,r);else if(i===1)e.push(r,e[0]),e[0]=t;else{for(i--,e.push(e[i-1],e[i]);i>n;){let o=i-2;e[i]=e[o],i--}e[n]=t,e[n+1]=r}}function tp(e,n,t){let r=cs(e,n);return r>=0?e[r|1]=t:(r=~r,fC(e,r,n,t)),r}function np(e,n){let t=cs(e,n);if(t>=0)return e[t|1]}function cs(e,n){return PO(e,n,1)}function PO(e,n,t){let r=0,i=e.length>>t;for(;i!==r;){let o=r+(i-r>>1),a=e[o<n?i=o:r=o+1}return~(i<{t.push(a)};return ep(n,a=>{let s=a;Hu(s,o,[],r)&&(i||=[],i.push(s))}),i!==void 0&&hC(i,o),t}function hC(e,n){for(let t=0;t{n(o,r)})}}function Hu(e,n,t,r){if(e=kn(e),!e)return!1;let i=null,o=pm(e),a=!o&&ji(e);if(!o&&!a){let l=e.ngModule;if(o=pm(l),o)i=l;else return!1}else{if(a&&!a.standalone)return!1;i=e}let s=r.has(i);if(a){if(s)return!1;if(r.add(i),a.dependencies){let l=typeof a.dependencies=="function"?a.dependencies():a.dependencies;for(let c of l)Hu(c,n,t,r)}}else if(o){if(o.imports!=null&&!s){r.add(i);let c;ep(o.imports,d=>{Hu(d,n,t,r)&&(c||=[],c.push(d))}),c!==void 0&&hC(c,n)}if(!s){let c=_o(i)||(()=>new i);n({provide:i,useFactory:c,deps:qn},i),n({provide:Lm,useValue:i,multi:!0},i),n({provide:bo,useValue:()=>se(i),multi:!0},i)}let l=o.providers;if(l!=null&&!s){let c=e;Vm(l,d=>{n(d,c)})}}else return!1;return i!==e&&e.providers!==void 0}function Vm(e,n){for(let t of e)Sm(t)&&(t=t.\u0275providers),Array.isArray(t)?Vm(t,n):n(t)}var OO=Ct({provide:String,useValue:Ct});function gC(e){return e!==null&&typeof e=="object"&&OO in e}function NO(e){return!!(e&&e.useExisting)}function FO(e){return!!(e&&e.useFactory)}function sa(e){return typeof e=="function"}function mC(e){return!!e.useClass}var dc=new le(""),$u={},nC={},um;function us(){return um===void 0&&(um=new rc),um}var Ut=class{},la=class extends Ut{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,t,r,i){super(),this.parent=t,this.source=r,this.scopes=i,vm(n,a=>this.processProvider(a)),this.records.set(Fm,ls(void 0,this)),i.has("environment")&&this.records.set(Ut,ls(void 0,this));let o=this.records.get(dc);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(Lm,qn,{self:!0}))}retrieve(n,t){let r=aa(t)||0;try{return this.get(n,oa,r)}catch(i){if(ss(i))return i;throw i}}destroy(){tc(this),this._destroyed=!0;let n=Ae(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let t=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of t)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Ae(n)}}onDestroy(n){return tc(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){tc(this);let t=ii(this),r=Gn(void 0),i;try{return n()}finally{ii(t),Gn(r)}}get(n,t=oa,r){if(tc(this),n.hasOwnProperty(tC))return n[tC](this);let i=aa(r),o,a=ii(this),s=Gn(void 0);try{if(!(i&4)){let c=this.records.get(n);if(c===void 0){let d=BO(n)&&lc(n);d&&this.injectableDefInScope(d)?c=ls(_m(n),$u):c=null,this.records.set(n,c)}if(c!=null)return this.hydrate(n,c,i)}let l=i&2?us():this.parent;return t=i&8&&t===oa?null:t,l.get(n,t)}catch(l){let c=TO(l);throw c===-200||c===-201?new oe(c,null):l}finally{Gn(s),ii(a)}}resolveInjectorInitializers(){let n=Ae(null),t=ii(this),r=Gn(void 0),i;try{let o=this.get(bo,qn,{self:!0});for(let a of o)a()}finally{ii(t),Gn(r),Ae(n)}}toString(){return"R3Injector[...]"}processProvider(n){n=kn(n);let t=sa(n)?n:kn(n&&n.provide),r=jO(n);if(!sa(n)&&n.multi===!0){let i=this.records.get(t);i||(i=ls(void 0,$u,!0),i.factory=()=>mm(i.multi),this.records.set(t,i)),t=n,i.multi.push(n)}this.records.set(t,r)}hydrate(n,t,r){let i=Ae(null);try{if(t.value===nC)throw Pm("");return t.value===$u&&(t.value=nC,t.value=t.factory(void 0,r)),typeof t.value=="object"&&t.value&&UO(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{Ae(i)}}injectableDefInScope(n){if(!n.providedIn)return!1;let t=kn(n.providedIn);return typeof t=="string"?t==="any"||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(n){let t=this._onDestroyHooks.indexOf(n);t!==-1&&this._onDestroyHooks.splice(t,1)}};function _m(e){let n=lc(e),t=n!==null?n.factory:_o(e);if(t!==null)return t;if(e instanceof le)throw new oe(-204,!1);if(e instanceof Function)return LO(e);throw new oe(-204,!1)}function LO(e){if(e.length>0)throw new oe(-204,!1);let t=DO(e);return t!==null?()=>t.factory(e):()=>new e}function jO(e){if(gC(e))return ls(void 0,e.useValue);{let n=Um(e);return ls(n,$u)}}function Um(e,n,t){let r;if(sa(e)){let i=kn(e);return _o(i)||_m(i)}else if(gC(e))r=()=>kn(e.useValue);else if(FO(e))r=()=>e.useFactory(...mm(e.deps||[]));else if(NO(e))r=(i,o)=>se(kn(e.useExisting),o!==void 0&&o&8?8:void 0);else{let i=kn(e&&(e.useClass||e.provide));if(VO(e))r=()=>new i(...mm(e.deps));else return _o(i)||_m(i)}return r}function tc(e){if(e.destroyed)throw new oe(-205,!1)}function ls(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function VO(e){return!!e.deps}function UO(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function BO(e){return typeof e=="function"||typeof e=="object"&&e.ngMetadataName==="InjectionToken"}function vm(e,n){for(let t of e)Array.isArray(t)?vm(t,n):t&&Sm(t)?vm(t.\u0275providers,n):n(t)}function yn(e,n){let t;e instanceof la?(tc(e),t=e):t=new gm(e);let r,i=ii(t),o=Gn(void 0);try{return n()}finally{ii(i),Gn(o)}}function _C(){return cC()!==void 0||Bu()!=null}var Ur=0,Re=1,Ve=2,mn=3,Cr=4,Er=5,ps=6,fs=7,on=8,Vi=9,Br=10,Mt=11,hs=12,Bm=13,da=14,sr=15,wo=16,ua=17,oi=18,Ui=19,$m=20,Fi=21,ip=22,vo=23,lr=24,pa=25,Co=26,Yt=27,vC=1,zm=6,Eo=7,uc=8,fa=9,tn=10;function Bi(e){return Array.isArray(e)&&typeof e[vC]=="object"}function $r(e){return Array.isArray(e)&&e[vC]===!0}function Hm(e){return(e.flags&4)!==0}function $i(e){return e.componentOffset>-1}function gs(e){return(e.flags&1)===1}function ai(e){return!!e.template}function ms(e){return(e[Ve]&512)!==0}function ha(e){return(e[Ve]&256)===256}var Gm="svg",yC="math";function Dr(e){for(;Array.isArray(e);)e=e[Ur];return e}function qm(e,n){return Dr(n[e])}function zr(e,n){return Dr(n[e.index])}function op(e,n){return e.data[n]}function ap(e,n){return e[n]}function Wm(e,n,t,r){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=r}function Sr(e,n){let t=n[e];return Bi(t)?t:t[Ur]}function xC(e){return(e[Ve]&4)===4}function sp(e){return(e[Ve]&128)===128}function bC(e){return $r(e[mn])}function kr(e,n){return n==null?null:e[n]}function Zm(e){e[ua]=0}function lp(e){e[Ve]&1024||(e[Ve]|=1024,sp(e)&&ga(e))}function wC(e,n){for(;e>0;)n=n[da],e--;return n}function _s(e){return!!(e[Ve]&9216||e[lr]?.dirty)}function cp(e){e[Br].changeDetectionScheduler?.notify(8),e[Ve]&64&&(e[Ve]|=1024),_s(e)&&ga(e)}function ga(e){e[Br].changeDetectionScheduler?.notify(0);let n=yo(e);for(;n!==null&&!(n[Ve]&8192||(n[Ve]|=8192,!sp(n)));)n=yo(n)}function Km(e,n){if(ha(e))throw new oe(911,!1);e[Fi]===null&&(e[Fi]=[]),e[Fi].push(n)}function CC(e,n){if(e[Fi]===null)return;let t=e[Fi].indexOf(n);t!==-1&&e[Fi].splice(t,1)}function yo(e){let n=e[mn];return $r(n)?n[mn]:n}function Ym(e){return e[fs]??=[]}function Qm(e){return e.cleanup??=[]}function EC(e,n,t,r){let i=Ym(n);i.push(t),e.firstCreatePass&&Qm(e).push(r,i.length-1)}var Xe={lFrame:LC(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var ym=!1;function DC(){return Xe.lFrame.elementDepthCount}function SC(){Xe.lFrame.elementDepthCount++}function Xm(){Xe.lFrame.elementDepthCount--}function dp(){return Xe.bindingsEnabled}function kC(){return Xe.skipHydrationRootTNode!==null}function Jm(e){return Xe.skipHydrationRootTNode===e}function e_(){Xe.skipHydrationRootTNode=null}function Ue(){return Xe.lFrame.lView}function Qt(){return Xe.lFrame.tView}function W(e){return Xe.lFrame.contextLView=e,e[on]}function Z(e){return Xe.lFrame.contextLView=null,e}function In(){let e=t_();for(;e!==null&&e.type===64;)e=e.parent;return e}function t_(){return Xe.lFrame.currentTNode}function TC(){let e=Xe.lFrame,n=e.currentTNode;return e.isParent?n:n.parent}function vs(e,n){let t=Xe.lFrame;t.currentTNode=e,t.isParent=n}function n_(){return Xe.lFrame.isParent}function IC(){Xe.lFrame.isParent=!1}function AC(){return Xe.lFrame.contextLView}function r_(){return ym}function ic(e){let n=ym;return ym=e,n}function ys(){let e=Xe.lFrame,n=e.bindingRootIndex;return n===-1&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function MC(e){return Xe.lFrame.bindingIndex=e}function Do(){return Xe.lFrame.bindingIndex++}function i_(e){let n=Xe.lFrame,t=n.bindingIndex;return n.bindingIndex=n.bindingIndex+e,t}function RC(){return Xe.lFrame.inI18n}function PC(e,n){let t=Xe.lFrame;t.bindingIndex=t.bindingRootIndex=e,up(n)}function OC(){return Xe.lFrame.currentDirectiveIndex}function up(e){Xe.lFrame.currentDirectiveIndex=e}function NC(e){let n=Xe.lFrame.currentDirectiveIndex;return n===-1?null:e[n]}function o_(){return Xe.lFrame.currentQueryIndex}function pp(e){Xe.lFrame.currentQueryIndex=e}function $O(e){let n=e[Re];return n.type===2?n.declTNode:n.type===1?e[Er]:null}function a_(e,n,t){if(t&4){let i=n,o=e;for(;i=i.parent,i===null&&!(t&1);)if(i=$O(o),i===null||(o=o[da],i.type&10))break;if(i===null)return!1;n=i,e=o}let r=Xe.lFrame=FC();return r.currentTNode=n,r.lView=e,!0}function fp(e){let n=FC(),t=e[Re];Xe.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function FC(){let e=Xe.lFrame,n=e===null?null:e.child;return n===null?LC(e):n}function LC(e){let n={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=n),n}function jC(){let e=Xe.lFrame;return Xe.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var s_=jC;function hp(){let e=jC();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function VC(e){return(Xe.lFrame.contextLView=wC(e,Xe.lFrame.contextLView))[on]}function zi(){return Xe.lFrame.selectedIndex}function So(e){Xe.lFrame.selectedIndex=e}function pc(){let e=Xe.lFrame;return op(e.tView,e.selectedIndex)}function ue(){Xe.lFrame.currentNamespace=Gm}function Ye(){zO()}function zO(){Xe.lFrame.currentNamespace=null}function UC(){return Xe.lFrame.currentNamespace}var BC=!0;function gp(){return BC}function fc(e){BC=e}function xm(e,n=null,t=null,r){let i=l_(e,n,t,r);return i.resolveInjectorInitializers(),i}function l_(e,n=null,t=null,r,i=new Set){let o=[t||qn,rp(e)],a;return new la(o,n||us(),a||null,i)}var Bt=class e{static THROW_IF_NOT_FOUND=oa;static NULL=new rc;static create(n,t){if(Array.isArray(n))return xm({name:""},t,n,"");{let r=n.name??"";return xm({name:r},n.parent,n.providers,r)}}static \u0275prov=ee({token:e,providedIn:"any",factory:()=>se(Fm)});static __NG_ELEMENT_ID__=-1},Xt=new le(""),an=(()=>{class e{static __NG_ELEMENT_ID__=HO;static __NG_ENV_ID__=t=>t}return e})(),Gu=class extends an{_lView;constructor(n){super(),this._lView=n}get destroyed(){return ha(this._lView)}onDestroy(n){let t=this._lView;return Km(t,n),()=>CC(t,n)}};function HO(){return new Gu(Ue())}var c_=!1,$C=new le(""),si=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new dt(!1);debugTaskTracker=A($C,{optional:!0});get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new De(t=>{t.next(!1),t.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let t=this.taskId++;return this.pendingTasks.add(t),this.debugTaskTracker?.add(t),t}has(t){return this.pendingTasks.has(t)}remove(t){this.pendingTasks.delete(t),this.debugTaskTracker?.remove(t),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=ee({token:e,providedIn:"root",factory:()=>new e})}return e})(),bm=class extends qe{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(n=!1){super(),this.__isAsync=n,_C()&&(this.destroyRef=A(an,{optional:!0})??void 0,this.pendingTasks=A(si,{optional:!0})??void 0)}emit(n){let t=Ae(null);try{super.next(n)}finally{Ae(t)}}subscribe(n,t,r){let i=n,o=t||(()=>null),a=r;if(n&&typeof n=="object"){let l=n;i=l.next?.bind(l),o=l.error?.bind(l),a=l.complete?.bind(l)}this.__isAsync&&(o=this.wrapInTimeout(o),i&&(i=this.wrapInTimeout(i)),a&&(a=this.wrapInTimeout(a)));let s=super.subscribe({next:i,error:o,complete:a});return n instanceof Zt&&n.add(s),s}wrapInTimeout(n){return t=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{n(t)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}},Ft=bm;function qu(...e){}function d_(e){let n,t;function r(){e=qu;try{t!==void 0&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(t),n!==void 0&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame=="function"&&(t=requestAnimationFrame(()=>{e(),r()})),()=>r()}function zC(e){return queueMicrotask(()=>e()),()=>{e=qu}}var u_="isAngularZone",oc=u_+"_ID",GO=0,pt=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new Ft(!1);onMicrotaskEmpty=new Ft(!1);onStable=new Ft(!1);onError=new Ft(!1);constructor(n){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:i=!1,scheduleInRootZone:o=c_}=n;if(typeof Zone>"u")throw new oe(908,!1);Zone.assertZonePatched();let a=this;a._nesting=0,a._outer=a._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(a._inner=a._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(a._inner=a._inner.fork(Zone.longStackTraceZoneSpec)),a.shouldCoalesceEventChangeDetection=!i&&r,a.shouldCoalesceRunChangeDetection=i,a.callbackScheduled=!1,a.scheduleInRootZone=o,ZO(a)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get(u_)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new oe(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new oe(909,!1)}run(n,t,r){return this._inner.run(n,t,r)}runTask(n,t,r,i){let o=this._inner,a=o.scheduleEventTask("NgZoneEvent: "+i,n,qO,qu,qu);try{return o.runTask(a,t,r)}finally{o.cancelTask(a)}}runGuarded(n,t,r){return this._inner.runGuarded(n,t,r)}runOutsideAngular(n){return this._outer.run(n)}},qO={};function p_(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function WO(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function n(){d_(()=>{e.callbackScheduled=!1,wm(e),e.isCheckStableRunning=!0,p_(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{n()}):e._outer.run(()=>{n()}),wm(e)}function ZO(e){let n=()=>{WO(e)},t=GO++;e._inner=e._inner.fork({name:"angular",properties:{[u_]:!0,[oc]:t,[oc+t]:!0},onInvokeTask:(r,i,o,a,s,l)=>{if(KO(l))return r.invokeTask(o,a,s,l);try{return rC(e),r.invokeTask(o,a,s,l)}finally{(e.shouldCoalesceEventChangeDetection&&a.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&n(),iC(e)}},onInvoke:(r,i,o,a,s,l,c)=>{try{return rC(e),r.invoke(o,a,s,l,c)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!YO(l)&&n(),iC(e)}},onHasTask:(r,i,o,a)=>{r.hasTask(o,a),i===o&&(a.change=="microTask"?(e._hasPendingMicrotasks=a.microTask,wm(e),p_(e)):a.change=="macroTask"&&(e.hasPendingMacrotasks=a.macroTask))},onHandleError:(r,i,o,a)=>(r.handleError(o,a),e.runOutsideAngular(()=>e.onError.emit(a)),!1)})}function wm(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function rC(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function iC(e){e._nesting--,p_(e)}var ac=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new Ft;onMicrotaskEmpty=new Ft;onStable=new Ft;onError=new Ft;run(n,t,r){return n.apply(t,r)}runGuarded(n,t,r){return n.apply(t,r)}runOutsideAngular(n){return n()}runTask(n,t,r,i){return n.apply(t,r)}};function KO(e){return HC(e,"__ignore_ng_zone__")}function YO(e){return HC(e,"__scheduler_tick__")}function HC(e,n){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[n]===!0}var Vn=class{_console=console;handleError(n){this._console.error("ERROR",n)}},Tr=new le("",{factory:()=>{let e=A(pt),n=A(Ut),t;return r=>{e.runOutsideAngular(()=>{n.destroyed&&!t?setTimeout(()=>{throw r}):(t??=n.get(Vn),t.handleError(r))})}}}),GC={provide:bo,useValue:()=>{let e=A(Vn,{optional:!0})},multi:!0};function et(e,n){let[t,r,i]=Vg(e,n?.equal),o=t,a=o[Fn];return o.set=r,o.update=i,o.asReadonly=f_.bind(o),o}function f_(){let e=this[Fn];if(e.readonlyFn===void 0){let n=()=>this();n[Fn]=e,e.readonlyFn=n}return e.readonlyFn}var hc=(()=>{class e{view;node;constructor(t,r){this.view=t,this.node=r}static __NG_ELEMENT_ID__=QO}return e})();function QO(){return new hc(Ue(),In())}var br=class{},xs=new le("",{factory:()=>!0});var mp=new le(""),bs=(()=>{class e{internalPendingTasks=A(si);scheduler=A(br);errorHandler=A(Tr);add(){let t=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(t)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(t))}}run(t){let r=this.add();t().catch(this.errorHandler).finally(r)}static \u0275prov=ee({token:e,providedIn:"root",factory:()=>new e})}return e})(),_p=(()=>{class e{static \u0275prov=ee({token:e,providedIn:"root",factory:()=>new Cm})}return e})(),Cm=class{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){let t=n.zone,r=this.queues.get(t);r.has(n)&&(r.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){let t=n.zone;this.queues.has(t)||this.queues.set(t,new Set);let r=this.queues.get(t);r.has(n)||r.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(let[t,r]of this.queues)t===null?n||=this.flushQueue(r):n||=t.run(()=>this.flushQueue(r));n||(this.dirtyEffectCount=0)}}flushQueue(n){let t=!1;for(let r of n)r.dirty&&(this.dirtyEffectCount--,t=!0,r.run());return t}},Wu=class{[Fn];constructor(n){this[Fn]=n}destroy(){this[Fn].destroy()}};function sn(e,n){let t=n?.injector??A(Bt),r=n?.manualCleanup!==!0?t.get(an):null,i,o=t.get(hc,null,{optional:!0}),a=t.get(br);return o!==null?(i=eN(o.view,a,e),r instanceof Gu&&r._lView===o.view&&(r=null)):i=tN(e,t.get(_p),a),i.injector=t,r!==null&&(i.onDestroyFns=[r.onDestroy(()=>i.destroy())]),new Wu(i)}var qC=X(R({},Bg),{cleanupFns:void 0,zone:null,onDestroyFns:null,run(){let e=ic(!1);try{$g(this)}finally{ic(e)}},cleanup(){if(!this.cleanupFns?.length)return;let e=Ae(null);try{for(;this.cleanupFns.length;)this.cleanupFns.pop()()}finally{this.cleanupFns=[],Ae(e)}}}),XO=X(R({},qC),{consumerMarkedDirty(){this.scheduler.schedule(this),this.notifier.notify(12)},destroy(){if(Ko(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.scheduler.remove(this)}}),JO=X(R({},qC),{consumerMarkedDirty(){this.view[Ve]|=8192,ga(this.view),this.notifier.notify(13)},destroy(){if(Ko(this),this.onDestroyFns!==null)for(let e of this.onDestroyFns)e();this.cleanup(),this.view[vo]?.delete(this)}});function eN(e,n,t){let r=Object.create(JO);return r.view=e,r.zone=typeof Zone<"u"?Zone.current:null,r.notifier=n,r.fn=WC(r,t),e[vo]??=new Set,e[vo].add(r),r.consumerMarkedDirty(r),r}function tN(e,n,t){let r=Object.create(XO);return r.fn=WC(r,e),r.scheduler=n,r.notifier=t,r.zone=typeof Zone<"u"?Zone.current:null,r.scheduler.add(r),r.notifier.notify(12),r}function WC(e,n){return()=>{n(t=>(e.cleanupFns??=[]).push(t))}}function ks(e){return{toString:e}.toString()}var vp="__parameters__";function sN(e){return function(...t){if(e){let r=e(...t);for(let i in r)this[i]=r[i]}}}function lN(e,n,t){return ks(()=>{let r=sN(n);function i(...o){if(this instanceof i)return r.apply(this,o),this;let a=new i(...o);return s.annotation=a,s;function s(l,c,d){let u=l.hasOwnProperty(vp)?l[vp]:Object.defineProperty(l,vp,{value:[]})[vp];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(a),l}}return i.prototype.ngMetadataName=e,i.annotationCls=i,i})}var tv=dC(lN("Inject",e=>({token:e})),-1);function cN(e){return typeof e=="function"}function wE(e,n,t,r){n!==null?n.applyValueToInputSignal(n,r):e[t]=r}var Dp=class{previousValue;currentValue;firstChange;constructor(n,t,r){this.previousValue=n,this.currentValue=t,this.firstChange=r}isFirstChange(){return this.firstChange}},dr=(()=>{let e=()=>CE;return e.ngInherit=!0,e})();function CE(e){return e.type.prototype.ngOnChanges&&(e.setInput=uN),dN}function dN(){let e=DE(this),n=e?.current;if(n){let t=e.previous;if(t===xo)e.previous=n;else for(let r in n)t[r]=n[r];e.current=null,this.ngOnChanges(n)}}function uN(e,n,t,r,i){let o=this.declaredInputs[r],a=DE(e)||pN(e,{previous:xo,current:null}),s=a.current||(a.current={}),l=a.previous,c=l[o];s[o]=new Dp(c&&c.currentValue,t,l===xo),wE(e,n,i,t)}var EE="__ngSimpleChanges__";function DE(e){return e[EE]||null}function pN(e,n){return e[EE]=n}var ZC=[];var Et=function(e,n=null,t){for(let r=0;r=r)break}else n[l]<0&&(e[ua]+=65536),(s>14>16&&(e[Ve]&3)===n&&(e[Ve]+=16384,KC(s,o)):KC(s,o)}var Cs=-1,_a=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,t,r,i){this.factory=n,this.name=i,this.canSeeViewProviders=t,this.injectImpl=r}};function gN(e){return(e.flags&8)!==0}function mN(e){return(e.flags&16)!==0}function _N(e,n,t){let r=0;for(;rn){a=o-1;break}}}for(;o>16}function kp(e,n){let t=xN(e),r=n;for(;t>0;)r=r[da],t--;return r}var E_=!0;function Tp(e){let n=E_;return E_=e,n}var bN=256,IE=bN-1,AE=5,wN=0,li={};function CN(e,n,t){let r;typeof t=="string"?r=t.charCodeAt(0)||0:t.hasOwnProperty(ca)&&(r=t[ca]),r==null&&(r=t[ca]=wN++);let i=r&IE,o=1<>AE)]|=o}function Ip(e,n){let t=ME(e,n);if(t!==-1)return t;let r=n[Re];r.firstCreatePass&&(e.injectorIndex=n.length,g_(r.data,e),g_(n,null),g_(r.blueprint,null));let i=nv(e,n),o=e.injectorIndex;if(TE(i)){let a=Sp(i),s=kp(i,n),l=s[Re].data;for(let c=0;c<8;c++)n[o+c]=s[a+c]|l[a+c]}return n[o+8]=i,o}function g_(e,n){e.push(0,0,0,0,0,0,0,0,n)}function ME(e,n){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||n[e.injectorIndex+8]===null?-1:e.injectorIndex}function nv(e,n){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let t=0,r=null,i=n;for(;i!==null;){if(r=FE(i),r===null)return Cs;if(t++,i=i[da],r.injectorIndex!==-1)return r.injectorIndex|t<<16}return Cs}function D_(e,n,t){CN(e,n,t)}function RE(e,n,t){if(t&8||e!==void 0)return e;Ju(n,"NodeInjector")}function PE(e,n,t,r){if(t&8&&r===void 0&&(r=null),(t&3)===0){let i=e[Vi],o=Gn(void 0);try{return i?i.get(n,r,t&8):Om(n,r,t&8)}finally{Gn(o)}}return RE(r,n,t)}function OE(e,n,t,r=0,i){if(e!==null){if(n[Ve]&2048&&!(r&2)){let a=kN(e,n,t,r,li);if(a!==li)return a}let o=NE(e,n,t,r,li);if(o!==li)return o}return PE(n,t,r,i)}function NE(e,n,t,r,i){let o=DN(t);if(typeof o=="function"){if(!a_(n,e,r))return r&1?RE(i,t,r):PE(n,t,r,i);try{let a;if(a=o(r),a==null&&!(r&8))Ju(t);else return a}finally{s_()}}else if(typeof o=="number"){let a=null,s=ME(e,n),l=Cs,c=r&1?n[sr][Er]:null;for((s===-1||r&4)&&(l=s===-1?nv(e,n):n[s+8],l===Cs||!XC(r,!1)?s=-1:(a=n[Re],s=Sp(l),n=kp(l,n)));s!==-1;){let d=n[Re];if(QC(o,s,d.data)){let u=EN(s,n,t,a,r,c);if(u!==li)return u}l=n[s+8],l!==Cs&&XC(r,n[Re].data[s+8]===c)&&QC(o,s,n)?(a=d,s=Sp(l),n=kp(l,n)):s=-1}}return i}function EN(e,n,t,r,i,o){let a=n[Re],s=a.data[e+8],l=r==null?$i(s)&&E_:r!=a&&(s.type&3)!==0,c=i&1&&o===s,d=wp(s,a,t,l,c);return d!==null?_c(n,a,d,s,i):li}function wp(e,n,t,r,i){let o=e.providerIndexes,a=n.data,s=o&1048575,l=e.directiveStart,c=e.directiveEnd,d=o>>20,u=r?s:s+d,p=i?s+d:c;for(let f=u;f=l&&h.type===t)return f}if(i){let f=a[l];if(f&&ai(f)&&f.type===t)return l}return null}function _c(e,n,t,r,i){let o=e[t],a=n.data;if(o instanceof _a){let s=o;if(s.resolving)throw Pm("");let l=Tp(s.canSeeViewProviders);s.resolving=!0;let c=a[t].type||a[t],d,u=s.injectImpl?Gn(s.injectImpl):null,p=a_(e,r,0);try{o=e[t]=s.factory(void 0,i,a,e,r),n.firstCreatePass&&t>=r.directiveStart&&fN(t,a[t],n)}finally{u!==null&&Gn(u),Tp(l),s.resolving=!1,s_()}}return o}function DN(e){if(typeof e=="string")return e.charCodeAt(0)||0;let n=e.hasOwnProperty(ca)?e[ca]:void 0;return typeof n=="number"?n>=0?n&IE:SN:n}function QC(e,n,t){let r=1<>AE)]&r)}function XC(e,n){return!(e&2)&&!(e&1&&n)}var ma=class{_tNode;_lView;constructor(n,t){this._tNode=n,this._lView=t}get(n,t,r){return OE(this._tNode,this._lView,n,aa(r),t)}};function SN(){return new ma(In(),Ue())}function xn(e){return ks(()=>{let n=e.prototype.constructor,t=n[nc]||S_(n),r=Object.prototype,i=Object.getPrototypeOf(e.prototype).constructor;for(;i&&i!==r;){let o=i[nc]||S_(i);if(o&&o!==t)return o;i=Object.getPrototypeOf(i)}return o=>new o})}function S_(e){return Em(e)?()=>{let n=S_(kn(e));return n&&n()}:_o(e)}function kN(e,n,t,r,i){let o=e,a=n;for(;o!==null&&a!==null&&a[Ve]&2048&&!ms(a);){let s=NE(o,a,t,r|2,li);if(s!==li)return s;let l=o.parent;if(!l){let c=a[$m];if(c){let d=c.get(t,li,r&-5);if(d!==li)return d}l=FE(a),a=a[da]}o=l}return i}function FE(e){let n=e[Re],t=n.type;return t===2?n.declTNode:t===1?e[Er]:null}function TN(){return Ts(In(),Ue())}function Ts(e,n){return new An(zr(e,n))}var An=(()=>{class e{nativeElement;constructor(t){this.nativeElement=t}static __NG_ELEMENT_ID__=TN}return e})();function IN(e){return e instanceof An?e.nativeElement:e}function AN(){return this._results[Symbol.iterator]()}var Ap=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new qe}constructor(n=!1){this._emitDistinctChangesOnly=n}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,t){return this._results.reduce(n,t)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,t){this.dirty=!1;let r=pC(n);(this._changesDetected=!uC(this._results,r,t))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(n){this._onDirty=n}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=AN};function LE(e){return(e.flags&128)===128}var rv=(function(e){return e[e.OnPush=0]="OnPush",e[e.Eager=1]="Eager",e[e.Default=1]="Default",e})(rv||{}),jE=new Map,MN=0;function RN(){return MN++}function PN(e){jE.set(e[Ui],e)}function k_(e){jE.delete(e[Ui])}var JC="__ngContext__";function Ds(e,n){Bi(n)?(e[JC]=n[Ui],PN(n)):e[JC]=n}function VE(e){return BE(e[hs])}function UE(e){return BE(e[Cr])}function BE(e){for(;e!==null&&!$r(e);)e=e[Cr];return e}var ON;function iv(e){ON=e}var Hp=new le("",{factory:()=>NN}),NN="ng";var Gp=new le(""),wa=new le("",{providedIn:"platform",factory:()=>"unknown"}),qp=new le(""),Wp=new le("",{factory:()=>A(Xt).body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var $E="r";var zE="di";var HE=!1,GE=new le("",{factory:()=>HE});var FN=(e,n,t,r)=>{};function LN(e,n,t,r){FN(e,n,t,r)}function ov(e){return(e.flags&32)===32}var jN=()=>null;function qE(e,n,t=!1){return jN(e,n,t)}function WE(e,n){let t=e.contentQueries;if(t!==null){let r=Ae(null);try{for(let i=0;i|^->||--!>|)/g,$N="\u200B$1\u200B";function zN(e){return e.replace(UN,n=>n.replace(BN,$N))}function HN(e,n){return e.createText(n)}function GN(e,n,t){e.setValue(n,t)}function qN(e,n){return e.createComment(zN(n))}function QE(e,n,t){return e.createElement(n,t)}function Rp(e,n,t,r,i){e.insertBefore(n,t,r,i)}function XE(e,n,t){e.appendChild(n,t)}function eE(e,n,t,r,i){r!==null?Rp(e,n,t,r,i):XE(e,n,t)}function JE(e,n,t,r){e.removeChild(null,n,t,r)}function WN(e,n,t){e.setAttribute(n,"style",t)}function ZN(e,n,t){t===""?e.removeAttribute(n,"class"):e.setAttribute(n,"class",t)}function eD(e,n,t){let{mergedAttrs:r,classes:i,styles:o}=t;r!==null&&_N(e,n,r),i!==null&&ZN(e,n,i),o!==null&&WN(e,n,o)}var sv=(function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e})(sv||{});function Cc(e){let n=KN();return n?n.sanitize(sv.URL,e)||"":ZE(e,"URL")?Zp(e):YE(Xu(e))}function KN(){let e=Ue();return e&&e[Br].sanitizer}function tD(e){return e instanceof Function?e():e}function YN(e,n,t){let r=e.length;for(;;){let i=e.indexOf(n,t);if(i===-1)return i;if(i===0||e.charCodeAt(i-1)<=32){let o=n.length;if(i+o===r||e.charCodeAt(i+o)<=32)return i}t=i+1}}var nD="ng-template";function QN(e,n,t,r){let i=0;if(r){for(;i-1){let o;for(;++io?u="":u=i[d+1].toLowerCase(),r&2&&c!==u){if(Hr(r))return!1;a=!0}}}}return Hr(r)||a}function Hr(e){return(e&1)===0}function e3(e,n,t,r){if(n===null)return-1;let i=0;if(r||!t){let o=!1;for(;i-1)for(t++;t0?'="'+s+'"':"")+"]"}else r&8?i+="."+a:r&4&&(i+=" "+a);else i!==""&&!Hr(a)&&(n+=tE(o,i),i=""),r=a,o=o||!Hr(r);t++}return i!==""&&(n+=tE(o,i)),n}function o3(e){return e.map(i3).join(",")}function a3(e){let n=[],t=[],r=1,i=2;for(;r=0;o--){let a=t[o],s=a.parentNode;a===n?(t.splice(o,1),M_.add(a),a.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}}))):(i&&a===i||s&&r&&s!==r)&&(t.splice(o,1),a.dispatchEvent(new CustomEvent("animationend",{detail:{cancel:!0}})),a.parentNode?.removeChild(a))}}function p3(e,n){let t=A_.get(e);t?t.includes(n)||t.push(n):A_.set(e,[n])}var va=new Set,Yp=(function(e){return e[e.CHANGE_DETECTION=0]="CHANGE_DETECTION",e[e.AFTER_NEXT_RENDER=1]="AFTER_NEXT_RENDER",e})(Yp||{}),di=new le(""),nE=new Set;function ui(e){nE.has(e)||(nE.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}var fv=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \u0275prov=ee({token:e,providedIn:"root",factory:()=>new e})}return e})(),aD=[0,1,2,3],sD=(()=>{class e{ngZone=A(pt);scheduler=A(br);errorHandler=A(Vn,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){A(di,{optional:!0})}execute(){let t=this.sequences.size>0;t&&Et(gt.AfterRenderHooksStart),this.executing=!0;for(let r of aD)for(let i of this.sequences)if(!(i.erroredOrDestroyed||!i.hooks[r]))try{i.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let o=i.hooks[r];return o(i.pipelinedValue)},i.snapshot))}catch(o){i.erroredOrDestroyed=!0,this.errorHandler?.handleError(o)}this.executing=!1;for(let r of this.sequences)r.afterRun(),r.once&&(this.sequences.delete(r),r.destroy());for(let r of this.deferredRegistrations)this.sequences.add(r);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),t&&Et(gt.AfterRenderHooksEnd)}register(t){let{view:r}=t;r!==void 0?((r[pa]??=[]).push(t),ga(r),r[Ve]|=8192):this.executing?this.deferredRegistrations.add(t):this.addSequence(t)}addSequence(t){this.sequences.add(t),this.scheduler.notify(7)}unregister(t){this.executing&&this.sequences.has(t)?(t.erroredOrDestroyed=!0,t.pipelinedValue=void 0,t.once=!0):(this.sequences.delete(t),this.deferredRegistrations.delete(t))}maybeTrace(t,r){return r?r.run(Yp.AFTER_NEXT_RENDER,t):t()}static \u0275prov=ee({token:e,providedIn:"root",factory:()=>new e})}return e})(),Pp=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,t,r,i,o,a=null){this.impl=n,this.hooks=t,this.view=r,this.once=i,this.snapshot=a,this.unregisterOnDestroy=o?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let n=this.view?.[pa];n&&(this.view[pa]=n.filter(t=>t!==this))}};function Qp(e,n){let t=n?.injector??A(Bt);return ui("NgAfterNextRender"),h3(e,t,n,!0)}function f3(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function h3(e,n,t,r){let i=n.get(fv);i.impl??=n.get(sD);let o=n.get(di,null,{optional:!0}),a=t?.manualCleanup!==!0?n.get(an):null,s=n.get(hc,null,{optional:!0}),l=new Pp(i.impl,f3(e),s?.view,r,a,o?.snapshot(null));return i.impl.register(l),l}var lD=new le("",{factory:()=>({queue:new Set,isScheduled:!1,scheduler:null,injector:A(Ut)})});function cD(e,n,t){let r=e.get(lD);if(Array.isArray(n))for(let i of n)r.queue.add(i),t?.detachedLeaveAnimationFns?.push(i);else r.queue.add(n),t?.detachedLeaveAnimationFns?.push(n);r.scheduler&&r.scheduler(e)}function g3(e,n){let t=e.get(lD);if(n.detachedLeaveAnimationFns){for(let r of n.detachedLeaveAnimationFns)t.queue.delete(r);n.detachedLeaveAnimationFns=void 0}}function m3(e,n){for(let[t,r]of n)cD(e,r.animateFns)}function rE(e,n,t,r){let i=e?.[Co]?.enter;n!==null&&i&&i.has(t.index)&&m3(r,i)}function ws(e,n,t,r,i,o,a,s){if(i!=null){let l,c=!1;$r(i)?l=i:Bi(i)&&(c=!0,i=i[Ur]);let d=Dr(i);e===0&&r!==null?(rE(s,r,o,t),a==null?XE(n,r,d):Rp(n,r,d,a||null,!0)):e===1&&r!==null?(rE(s,r,o,t),Rp(n,r,d,a||null,!0),u3(o,d)):e===2?(s?.[Co]?.leave?.has(o.index)&&p3(o,d),iE(s,o,t,u=>{if(M_.has(d)){M_.delete(d);return}JE(n,d,c,u)})):e===3&&iE(s,o,t,()=>{n.destroyNode(d)}),l!=null&&I3(n,e,t,l,o,r,a)}}function _3(e,n){dD(e,n),n[Ur]=null,n[Er]=null}function v3(e,n,t,r,i,o){r[Ur]=i,r[Er]=n,Jp(e,r,t,1,i,o)}function dD(e,n){n[Br].changeDetectionScheduler?.notify(9),Jp(e,n,n[Mt],2,null,null)}function y3(e){let n=e[hs];if(!n)return m_(e[Re],e);for(;n;){let t=null;if(Bi(n))t=n[hs];else{let r=n[tn];r&&(t=r)}if(!t){for(;n&&!n[Cr]&&n!==e;)Bi(n)&&m_(n[Re],n),n=n[mn];n===null&&(n=e),Bi(n)&&m_(n[Re],n),t=n&&n[Cr]}n=t}}function hv(e,n){let t=e[fa],r=t.indexOf(n);t.splice(r,1)}function Xp(e,n){if(ha(n))return;let t=n[Mt];t.destroyNode&&Jp(e,n,t,3,null,null),y3(n)}function m_(e,n){if(ha(n))return;let t=Ae(null);try{n[Ve]&=-129,n[Ve]|=256,n[lr]&&Ko(n[lr]),w3(e,n),b3(e,n),n[Re].type===1&&n[Mt].destroy();let r=n[wo];if(r!==null&&$r(n[mn])){r!==n[mn]&&hv(r,n);let i=n[oi];i!==null&&i.detachView(e)}k_(n)}finally{Ae(t)}}function iE(e,n,t,r){let i=e?.[Co];if(i==null||i.leave==null||!i.leave.has(n.index))return r(!1);e&&va.add(e[Ui]),cD(t,()=>{if(i.leave&&i.leave.has(n.index)){let a=i.leave.get(n.index),s=[];if(a){for(let l=0;l{e[Co].running=void 0,va.delete(e[Ui]),n(!0)});return}n(!1)}function b3(e,n){let t=e.cleanup,r=n[fs];if(t!==null)for(let a=0;a=0?r[s]():r[-s].unsubscribe(),a+=2}else{let s=r[t[a+1]];t[a].call(s)}r!==null&&(n[fs]=null);let i=n[Fi];if(i!==null){n[Fi]=null;for(let a=0;aYt&&oD(e,n,Yt,!1);let s=a?gt.TemplateUpdateStart:gt.TemplateCreateStart;Et(s,i,t),t(r,i)}finally{So(o);let s=a?gt.TemplateUpdateEnd:gt.TemplateCreateEnd;Et(s,i,t)}}function ef(e,n,t){F3(e,n,t),(t.flags&64)===64&&L3(e,n,t)}function Ec(e,n,t=zr){let r=n.localNames;if(r!==null){let i=n.index+1;for(let o=0;onull;function O3(e){return e==="class"?"className":e==="for"?"htmlFor":e==="formaction"?"formAction":e==="innerHtml"?"innerHTML":e==="readonly"?"readOnly":e==="tabindex"?"tabIndex":e}function fD(e,n,t,r,i,o){let a=n[Re];if(xv(e,a,n,t,r)){$i(e)&&N3(n,e.index);return}e.type&3&&(t=O3(t)),hD(e,n,t,r,i,o)}function hD(e,n,t,r,i,o){if(e.type&3){let a=zr(e,n);r=o!=null?o(r,e.value||"",t):r,i.setProperty(a,t,r)}else e.type&12}function N3(e,n){let t=Sr(n,e);t[Ve]&16||(t[Ve]|=64)}function F3(e,n,t){let r=t.directiveStart,i=t.directiveEnd;$i(t)&&c3(n,t,e.data[r+t.componentOffset]),e.firstCreatePass||Ip(t,n);let o=t.initialInputs;for(let a=r;a{ga(e.lView)},consumerOnSignalRead(){this.lView[lr]=this}});function Y3(e){let n=e[lr]??Object.create(Q3);return n.lView=e,n}var Q3=X(R({},Wo),{consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{let n=yo(e.lView);for(;n&&!vD(n[Re]);)n=yo(n);n&&lp(n)},consumerOnSignalRead(){this.lView[lr]=this}});function vD(e){return e.type!==2}function yD(e){if(e[vo]===null)return;let n=!0;for(;n;){let t=!1;for(let r of e[vo])r.dirty&&(t=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()));n=t&&!!(e[Ve]&8192)}}var X3=100;function xD(e,n=0){let r=e[Br].rendererFactory,i=!1;i||r.begin?.();try{J3(e,n)}finally{i||r.end?.()}}function J3(e,n){let t=r_();try{ic(!0),P_(e,n);let r=0;for(;_s(e);){if(r===X3)throw new oe(103,!1);r++,P_(e,1)}}finally{ic(t)}}function e5(e,n,t,r){if(ha(n))return;let i=n[Ve],o=!1,a=!1;fp(n);let s=!0,l=null,c=null;o||(vD(e)?(c=q3(n),l=Zo(c)):eu()===null?(s=!1,c=Y3(n),l=Zo(c)):n[lr]&&(Ko(n[lr]),n[lr]=null));try{Zm(n),MC(e.bindingStartIndex),t!==null&&pD(e,n,t,2,r);let d=(i&3)===3;if(!o)if(d){let f=e.preOrderCheckHooks;f!==null&&xp(n,f,null)}else{let f=e.preOrderHooks;f!==null&&bp(n,f,0,null),h_(n,0)}if(a||t5(n),yD(n),bD(n,0),e.contentQueries!==null&&WE(e,n),!o)if(d){let f=e.contentCheckHooks;f!==null&&xp(n,f)}else{let f=e.contentHooks;f!==null&&bp(n,f,1),h_(n,1)}r5(e,n);let u=e.components;u!==null&&CD(n,u,0);let p=e.viewQuery;if(p!==null&&T_(2,p,r),!o)if(d){let f=e.viewCheckHooks;f!==null&&xp(n,f)}else{let f=e.viewHooks;f!==null&&bp(n,f,2),h_(n,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),n[ip]){for(let f of n[ip])f();n[ip]=null}o||(mD(n),n[Ve]&=-73)}catch(d){throw o||ga(n),d}finally{c!==null&&(Qa(c,l),s&&Z3(c)),hp()}}function bD(e,n){for(let t=VE(e);t!==null;t=UE(t))for(let r=tn;r0&&(e[t-1][Cr]=r[Cr]);let o=cc(e,tn+n);_3(r[Re],r);let a=o[oi];a!==null&&a.detachView(o[Re]),r[mn]=null,r[Cr]=null,r[Ve]&=-129}return r}function i5(e,n,t,r){let i=tn+r,o=t.length;r>0&&(t[i-1][Cr]=n),r-1&&(xc(n,r),cc(t,r))}this._attachedToViewContainer=!1}Xp(this._lView[Re],this._lView)}onDestroy(n){Km(this._lView,n)}markForCheck(){wv(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[Ve]&=-129}reattach(){cp(this._lView),this._lView[Ve]|=128}detectChanges(){this._lView[Ve]|=1024,xD(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new oe(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let n=ms(this._lView),t=this._lView[wo];t!==null&&!n&&hv(t,this._lView),dD(this._lView[Re],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new oe(902,!1);this._appRef=n;let t=ms(this._lView),r=this._lView[wo];r!==null&&!t&&kD(r,this._lView),cp(this._lView)}};function Cv(e){return _s(e._lView)||!!(e._lView[Ve]&64)}function Ev(e){lp(e._lView)}var ya=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=o5;constructor(t,r,i){this._declarationLView=t,this._declarationTContainer=r,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,r){return this.createEmbeddedViewImpl(t,r)}createEmbeddedViewImpl(t,r,i){let o=tf(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:r,dehydratedView:i});return new ko(o)}}return e})();function o5(){return rf(In(),Ue())}function rf(e,n){return e.type&4?new ya(n,e,Ts(e,n)):null}function Dc(e,n,t,r,i){let o=e.data[n];if(o===null)o=a5(e,n,t,r,i),RC()&&(o.flags|=32);else if(o.type&64){o.type=t,o.value=r,o.attrs=i;let a=TC();o.injectorIndex=a===null?-1:a.injectorIndex}return vs(o,!0),o}function a5(e,n,t,r,i){let o=t_(),a=n_(),s=a?o:o&&o.parent,l=e.data[n]=l5(e,s,t,n,r,i);return s5(e,l,o,a),l}function s5(e,n,t,r){e.firstChild===null&&(e.firstChild=n),t!==null&&(r?t.child==null&&n.parent!==null&&(t.child=n):t.next===null&&(t.next=n,n.prev=t))}function l5(e,n,t,r,i,o){let a=n?n.injectorIndex:-1,s=0;return kC()&&(s|=128),{type:t,index:r,insertBeforeIndex:null,injectorIndex:a,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,controlDirectiveIndex:-1,customControlIndex:-1,propertyBindings:null,flags:s,providerIndexes:0,value:i,attrs:o,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function c5(e){let n=e[zm]??[],r=e[mn][Mt],i=[];for(let o of n)o.data[zE]!==void 0?i.push(o):d5(o,r);e[zm]=i}function d5(e,n){let t=0,r=e.firstChild;if(r){let i=e.data[$E];for(;tnull,p5=()=>null;function O_(e,n){return u5(e,n)}function TD(e,n,t){return p5(e,n,t)}var ID=class{},of=class{},N_=class{resolveComponentFactory(n){throw new oe(917,!1)}},To=class{static NULL=new N_},Hi=class{},Ir=(()=>{class e{destroyNode=null;static __NG_ELEMENT_ID__=()=>f5()}return e})();function f5(){let e=Ue(),n=In(),t=Sr(n.index,e);return(Bi(t)?t:e)[Mt]}var AD=(()=>{class e{static \u0275prov=ee({token:e,providedIn:"root",factory:()=>null})}return e})();var Cp={},F_=class{injector;parentInjector;constructor(n,t){this.injector=n,this.parentInjector=t}get(n,t,r){let i=this.injector.get(n,Cp,r);return i!==Cp||t===Cp?i:this.parentInjector.get(n,t,r)}};function Op(e,n,t){let r=t?e.styles:null,i=t?e.classes:null,o=0;if(n!==null)for(let a=0;a0&&(t.directiveToIndex=new Map);for(let p=0;p0;){let t=e[--n];if(typeof t=="number"&&t<0)return t}return 0}function b5(e,n,t){if(t){if(n.exportAs)for(let r=0;rr(Dr(v[e.index])):e.index;ND(h,n,t,o,s,f,!1)}}return c}function S5(e){return e.startsWith("animation")||e.startsWith("transition")}function k5(e,n,t,r){let i=e.cleanup;if(i!=null)for(let o=0;ol?s[l]:null}typeof a=="string"&&(o+=2)}return null}function ND(e,n,t,r,i,o,a){let s=n.firstCreatePass?Qm(n):null,l=Ym(t),c=l.length;l.push(i,o),s&&s.push(r,e,c,(c+1)*(a?-1:1))}function dE(e,n,t,r,i,o){let a=n[t],s=n[Re],c=s.data[t].outputs[r],u=a[c].subscribe(o);ND(e.index,s,n,i,o,u,!0)}var L_=Symbol("BINDING");function FD(e){return e.debugInfo?.className||e.type.name||null}var Np=class extends To{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){let t=ji(n);return new xa(t,this.ngModule)}};function T5(e){return Object.keys(e).map(n=>{let[t,r,i]=e[n],o={propName:t,templateName:n,isSignal:(r&Kp.SignalBased)!==0};return i&&(o.transform=i),o})}function I5(e){return Object.keys(e).map(n=>({propName:e[n],templateName:n}))}function A5(e,n,t){let r=n instanceof Ut?n:n?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new F_(t,r):t}function M5(e){let n=e.get(Hi,null);if(n===null)throw new oe(407,!1);let t=e.get(AD,null),r=e.get(br,null),i=e.get(di,null,{optional:!0});return{rendererFactory:n,sanitizer:t,changeDetectionScheduler:r,ngReflect:!1,tracingService:i}}function R5(e,n){let t=LD(e);return QE(n,t,t==="svg"?Gm:t==="math"?yC:null)}function LD(e){return(e.selectors[0][0]||"div").toLowerCase()}var xa=class extends of{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=T5(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=I5(this.componentDef.outputs),this.cachedOutputs}constructor(n,t){super(),this.componentDef=n,this.ngModule=t,this.componentType=n.type,this.selector=o3(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!t}create(n,t,r,i,o,a){Et(gt.DynamicComponentStart);let s=Ae(null);try{let l=this.componentDef,c=A5(l,i||this.ngModule,n),d=M5(c),u=d.tracingService;return u&&u.componentCreate?u.componentCreate(FD(l),()=>this.createComponentRef(d,c,t,r,o,a)):this.createComponentRef(d,c,t,r,o,a)}finally{Ae(s)}}createComponentRef(n,t,r,i,o,a){let s=this.componentDef,l=P5(i,s,a,o),c=n.rendererFactory.createRenderer(null,s),d=i?M3(c,i,s.encapsulation,t):R5(s,c),u=a?.some(uE)||o?.some(h=>typeof h!="function"&&h.bindings.some(uE)),p=dv(null,l,null,512|rD(s),null,null,n,c,t,null,qE(d,t,!0));p[Yt]=d,fp(p);let f=null;try{let h=Dv(Yt,p,2,"#host",()=>l.directiveRegistry,!0,0);eD(c,d,h),Ds(d,p),ef(l,p,h),av(l,h,p),Sv(l,h),r!==void 0&&N5(h,this.ngContentSelectors,r),f=Sr(h.index,p),p[on]=f[on],bv(l,p,null)}catch(h){throw f!==null&&k_(f),k_(p),h}finally{Et(gt.DynamicComponentEnd),hp()}return new Fp(this.componentType,p,!!u)}};function P5(e,n,t,r){let i=e?["ng-version","21.2.4"]:a3(n.selectors[0]),o=null,a=null,s=0;if(t)for(let d of t)s+=d[L_].requiredVars,d.create&&(d.targetIdx=0,(o??=[]).push(d)),d.update&&(d.targetIdx=0,(a??=[]).push(d));if(r)for(let d=0;d{if(t&1&&e)for(let r of e)r.create();if(t&2&&n)for(let r of n)r.update()}}function uE(e){let n=e[L_].kind;return n==="input"||n==="twoWay"}var Fp=class extends ID{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(n,t,r){super(),this._rootLView=t,this._hasInputBindings=r,this._tNode=op(t[Re],Yt),this.location=Ts(this._tNode,t),this.instance=Sr(this._tNode.index,t)[on],this.hostView=this.changeDetectorRef=new ko(t,void 0),this.componentType=n}setInput(n,t){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(n)&&Object.is(this.previousInputValues.get(n),t))return;let i=this._rootLView,o=xv(r,i[Re],i,n,t);this.previousInputValues.set(n,t);let a=Sr(r.index,i);wv(a,1)}get injector(){return new ma(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(n){this.hostView.onDestroy(n)}};function N5(e,n,t){let r=e.projection=[];for(let i=0;i{class e{static __NG_ELEMENT_ID__=F5}return e})();function F5(){let e=In();return jD(e,Ue())}var j_=class e extends qi{_lContainer;_hostTNode;_hostLView;constructor(n,t,r){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=r}get element(){return Ts(this._hostTNode,this._hostLView)}get injector(){return new ma(this._hostTNode,this._hostLView)}get parentInjector(){let n=nv(this._hostTNode,this._hostLView);if(TE(n)){let t=kp(n,this._hostLView),r=Sp(n),i=t[Re].data[r+8];return new ma(i,t)}else return new ma(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){let t=pE(this._lContainer);return t!==null&&t[n]||null}get length(){return this._lContainer.length-tn}createEmbeddedView(n,t,r){let i,o;typeof r=="number"?i=r:r!=null&&(i=r.index,o=r.injector);let a=O_(this._lContainer,n.ssrId),s=n.createEmbeddedViewImpl(t||{},o,a);return this.insertImpl(s,i,vc(this._hostTNode,a)),s}createComponent(n,t,r,i,o,a,s){let l=n&&!cN(n),c;if(l)c=t;else{let b=t||{};c=b.index,r=b.injector,i=b.projectableNodes,o=b.environmentInjector||b.ngModuleRef,a=b.directives,s=b.bindings}let d=l?n:new xa(ji(n)),u=r||this.parentInjector;if(!o&&d.ngModule==null){let _=(l?u:this.parentInjector).get(Ut,null);_&&(o=_)}let p=ji(d.componentType??{}),f=O_(this._lContainer,p?.id??null),h=f?.firstChild??null,v=d.create(u,i,h,o,a,s);return this.insertImpl(v.hostView,c,vc(this._hostTNode,f)),v}insert(n,t){return this.insertImpl(n,t,!0)}insertImpl(n,t,r){let i=n._lView;if(bC(i)){let s=this.indexOf(n);if(s!==-1)this.detach(s);else{let l=i[mn],c=new e(l,l[Er],l[mn]);c.detach(c.indexOf(n))}}let o=this._adjustIndex(t),a=this._lContainer;return nf(a,i,o,r),n.attachToViewContainerRef(),Nm(__(a),o,n),n}move(n,t){return this.insert(n,t)}indexOf(n){let t=pE(this._lContainer);return t!==null?t.indexOf(n):-1}remove(n){let t=this._adjustIndex(n,-1),r=xc(this._lContainer,t);r&&(cc(__(this._lContainer),t),Xp(r[Re],r))}detach(n){let t=this._adjustIndex(n,-1),r=xc(this._lContainer,t);return r&&cc(__(this._lContainer),t)!=null?new ko(r):null}_adjustIndex(n,t=0){return n??this.length+t}};function pE(e){return e[uc]}function __(e){return e[uc]||(e[uc]=[])}function jD(e,n){let t,r=n[e.index];return $r(r)?t=r:(t=ED(r,n,null,e),n[e.index]=t,uv(n,t)),j5(t,n,e,r),new j_(t,e,n)}function L5(e,n){let t=e[Mt],r=t.createComment(""),i=zr(n,e),o=t.parentNode(i);return Rp(t,o,r,t.nextSibling(i),!1),r}var j5=B5,V5=()=>!1;function U5(e,n,t){return V5(e,n,t)}function B5(e,n,t,r){if(e[Eo])return;let i;t.type&8?i=Dr(r):i=L5(n,t),e[Eo]=i}var V_=class e{queryList;matches=null;constructor(n){this.queryList=n}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},U_=class e{queries;constructor(n=[]){this.queries=n}createEmbeddedView(n){let t=n.queries;if(t!==null){let r=n.contentQueries!==null?n.contentQueries[0]:t.length,i=[];for(let o=0;o0)r.push(a[s/2]);else{let c=o[s+1],d=n[-l];for(let u=tn;un.trim())}function Y5(e,n,t){e.queries===null&&(e.queries=new $_),e.queries.track(new z_(n,t))}function kv(e,n){return e.queries.getByIndex(n)}function Q5(e,n){let t=e[Re],r=kv(t,n);return r.crossesNgTemplate?H_(t,e,n,[]):VD(t,e,r,n)}var Gi=class{},sf=class{};var Lp=class extends Gi{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new Np(this);constructor(n,t,r,i=!0){super(),this.ngModuleType=n,this._parent=t;let o=Mm(n);this._bootstrapComponents=tD(o.bootstrap),this._r3Injector=l_(n,t,[{provide:Gi,useValue:this},{provide:To,useValue:this.componentFactoryResolver},...r],sc(n),new Set(["environment"])),i&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}},jp=class extends sf{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new Lp(this.moduleType,n,[])}};var bc=class extends Gi{injector;componentFactoryResolver=new Np(this);instance=null;constructor(n){super();let t=new la([...n.providers,{provide:Gi,useValue:this},{provide:To,useValue:this.componentFactoryResolver}],n.parent||us(),n.debugName,new Set(["environment"]));this.injector=t,n.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}};function lf(e,n,t=null){return new bc({providers:e,parent:n,debugName:t,runEnvironmentInitializers:!0}).injector}var X5=(()=>{class e{_injector;cachedInjectors=new Map;constructor(t){this._injector=t}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t)){let r=jm(!1,t.type),i=r.length>0?lf([r],this._injector,""):null;this.cachedInjectors.set(t,i)}return this.cachedInjectors.get(t)}ngOnDestroy(){try{for(let t of this.cachedInjectors.values())t!==null&&t.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=ee({token:e,providedIn:"environment",factory:()=>new e(se(Ut))})}return e})();function yt(e){return ks(()=>{let n=UD(e),t=X(R({},n),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===rv.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&e.dependencies||null,getStandaloneInjector:n.standalone?i=>i.get(X5).getOrCreateStandaloneInjector(t):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||qr.Emulated,styles:e.styles||qn,_:null,schemas:e.schemas||null,tView:null,id:""});n.standalone&&ui("NgStandalone"),BD(t);let r=e.dependencies;return t.directiveDefs=fE(r,J5),t.pipeDefs=fE(r,aC),t.id=nF(t),t})}function J5(e){return ji(e)||Rm(e)}function Bn(e){return ks(()=>({type:e.type,bootstrap:e.bootstrap||qn,declarations:e.declarations||qn,imports:e.imports||qn,exports:e.exports||qn,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function eF(e,n){if(e==null)return xo;let t={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],o,a,s,l;Array.isArray(i)?(s=i[0],o=i[1],a=i[2]??o,l=i[3]||null):(o=i,a=i,s=Kp.None,l=null),t[o]=[r,s,l],n[o]=a}return t}function tF(e){if(e==null)return xo;let n={};for(let t in e)e.hasOwnProperty(t)&&(n[e[t]]=t);return n}function It(e){return ks(()=>{let n=UD(e);return BD(n),n})}function Sc(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function UD(e){let n={};return{type:e.type,providersResolver:null,viewProvidersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:n,inputConfig:e.inputs||xo,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||qn,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,controlDef:null,inputs:eF(e.inputs,n),outputs:tF(e.outputs),debugInfo:null}}function BD(e){e.features?.forEach(n=>n(e))}function fE(e,n){return e?()=>{let t=typeof e=="function"?e():e,r=[];for(let i of t){let o=n(i);o!==null&&r.push(o)}return r}:null}function nF(e){let n=0,t=typeof e.consts=="function"?"":e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,t,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let o of r.join("|"))n=Math.imul(31,n)+o.charCodeAt(0)<<0;return n+=2147483648,"c"+n}function rF(e){return Object.getPrototypeOf(e.prototype).constructor}function Dt(e){let n=rF(e.type),t=!0,r=[e];for(;n;){let i;if(ai(e))i=n.\u0275cmp||n.\u0275dir;else{if(n.\u0275cmp)throw new oe(903,!1);i=n.\u0275dir}if(i){if(t){r.push(i);let a=e;a.inputs=v_(e.inputs),a.declaredInputs=v_(e.declaredInputs),a.outputs=v_(e.outputs);let s=i.hostBindings;s&&lF(e,s);let l=i.viewQuery,c=i.contentQueries;if(l&&aF(e,l),c&&sF(e,c),iF(e,i),oC(e.outputs,i.outputs),ai(i)&&i.data.animation){let d=e.data;d.animation=(d.animation||[]).concat(i.data.animation)}}let o=i.features;if(o)for(let a=0;a=0;r--){let i=e[r];i.hostVars=n+=i.hostVars,i.hostAttrs=Es(i.hostAttrs,t=Es(t,i.hostAttrs))}}function v_(e){return e===xo?{}:e===qn?[]:e}function aF(e,n){let t=e.viewQuery;t?e.viewQuery=(r,i)=>{n(r,i),t(r,i)}:e.viewQuery=n}function sF(e,n){let t=e.contentQueries;t?e.contentQueries=(r,i,o)=>{n(r,i,o),t(r,i,o)}:e.contentQueries=n}function lF(e,n){let t=e.hostBindings;t?e.hostBindings=(r,i)=>{n(r,i),t(r,i)}:e.hostBindings=n}function $D(e,n,t,r,i,o,a,s){if(t.firstCreatePass){e.mergedAttrs=Es(e.mergedAttrs,e.attrs);let d=e.tView=cv(2,e,i,o,a,t.directiveRegistry,t.pipeRegistry,null,t.schemas,t.consts,null);t.queries!==null&&(t.queries.template(t,e),d.queries=t.queries.embeddedTView(e))}s&&(e.flags|=s),vs(e,!1);let l=dF(t,n,e,r);gp()&&gv(t,n,l,e),Ds(l,n);let c=ED(l,n,l,e);n[r+Yt]=c,uv(n,c),U5(c,e,n)}function cF(e,n,t,r,i,o,a,s,l,c,d){let u=t+Yt,p;return n.firstCreatePass?(p=Dc(n,u,4,a||null,s||null),dp()&&MD(n,e,p,kr(n.consts,c),_v),SE(n,p)):p=n.data[u],$D(p,e,n,t,r,i,o,l),gs(p)&&ef(n,e,p),c!=null&&Ec(e,p,d),p}function Vp(e,n,t,r,i,o,a,s,l,c,d){let u=t+Yt,p;if(n.firstCreatePass){if(p=Dc(n,u,4,a||null,s||null),c!=null){let f=kr(n.consts,c);p.localNames=[];for(let h=0;h{class e{log(t){console.log(t)}warn(t){console.warn(t)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();function kc(e){return typeof e=="function"&&e[Fn]!==void 0}function Iv(e){return kc(e)&&typeof e.set=="function"}var Av=new le("");function Wi(e){return!!e&&typeof e.then=="function"}function cf(e){return!!e&&typeof e.subscribe=="function"}var zD=new le("");var Mv=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((t,r)=>{this.resolve=t,this.reject=r});appInits=A(zD,{optional:!0})??[];injector=A(Bt);constructor(){}runInitializers(){if(this.initialized)return;let t=[];for(let i of this.appInits){let o=yn(this.injector,i);if(Wi(o))t.push(o);else if(cf(o)){let a=new Promise((s,l)=>{o.subscribe({complete:s,error:l})});t.push(a)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(t).then(()=>{r()}).catch(i=>{this.reject(i)}),t.length===0&&r(),this.initialized=!0}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),HD=new le("");function GD(){jg(()=>{let e="";throw new oe(600,e)})}function qD(e){return e.isBoundToModule}var pF=10;var pr=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=A(Tr);afterRenderManager=A(fv);zonelessEnabled=A(xs);rootEffectScheduler=A(_p);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new qe;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=A(si);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(de(t=>!t))}constructor(){A(di,{optional:!0})}whenStable(){let t;return new Promise(r=>{t=this.isStable.subscribe({next:i=>{i&&r()}})}).finally(()=>{t.unsubscribe()})}_injector=A(Ut);_rendererFactory=null;get injector(){return this._injector}bootstrap(t,r){return this.bootstrapImpl(t,r)}bootstrapImpl(t,r,i=Bt.NULL){return this._injector.get(pt).run(()=>{Et(gt.BootstrapComponentStart);let a=t instanceof of;if(!this._injector.get(Mv).done){let h="";throw new oe(405,h)}let l;a?l=t:l=this._injector.get(To).resolveComponentFactory(t),this.componentTypes.push(l.componentType);let c=qD(l)?void 0:this._injector.get(Gi),d=r||l.selector,u=l.create(i,[],d,c),p=u.location.nativeElement,f=u.injector.get(Av,null);return f?.registerApplication(p),u.onDestroy(()=>{this.detachView(u.hostView),mc(this.components,u),f?.unregisterApplication(p)}),this._loadComponent(u),Et(gt.BootstrapComponentEnd,u),u})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){Et(gt.ChangeDetectionStart),this.tracingSnapshot!==null?this.tracingSnapshot.run(Yp.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw Et(gt.ChangeDetectionEnd),new oe(101,!1);let t=Ae(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,Ae(t),this.afterTick.next(),Et(gt.ChangeDetectionEnd)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(Hi,null,{optional:!0}));let t=0;for(;this.dirtyFlags!==0&&t++_s(t))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(t){let r=t;this._views.push(r),r.attachToAppRef(this)}detachView(t){let r=t;mc(this._views,r),r.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView);try{this.tick()}catch(i){this.internalErrorHandler(i)}this.components.push(t),this._injector.get(HD,[]).forEach(i=>i(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy())}finally{this._destroyed=!0,this._views=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>mc(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new oe(406,!1);let t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function mc(e,n){let t=e.indexOf(n);t>-1&&e.splice(t,1)}function lt(e,n,t,r){let i=Ue(),o=Do();if(cr(i,o,n)){let a=Qt(),s=pc();V3(s,i,e,n,t,r)}return lt}var G_=class{destroy(n){}updateValue(n,t){}swap(n,t){let r=Math.min(n,t),i=Math.max(n,t),o=this.detach(i);if(i-r>1){let a=this.detach(r);this.attach(r,o),this.attach(i,a)}else this.attach(r,o)}move(n,t){this.attach(t,this.detach(n))}};function y_(e,n,t,r,i){return e===t&&Object.is(n,r)?1:Object.is(i(e,n),i(t,r))?-1:0}function fF(e,n,t,r){let i,o,a=0,s=e.length-1,l=void 0;if(Array.isArray(n)){Ae(r);let c=n.length-1;for(Ae(null);a<=s&&a<=c;){let d=e.at(a),u=n[a],p=y_(a,d,a,u,t);if(p!==0){p<0&&e.updateValue(a,u),a++;continue}let f=e.at(s),h=n[c],v=y_(s,f,c,h,t);if(v!==0){v<0&&e.updateValue(s,h),s--,c--;continue}let b=t(a,d),_=t(s,f),y=t(a,u);if(Object.is(y,_)){let S=t(c,h);Object.is(S,b)?(e.swap(a,s),e.updateValue(s,h),c--,s--):e.move(s,a),e.updateValue(a,u),a++;continue}if(i??=new Up,o??=gE(e,a,s,t),q_(e,i,a,y))e.updateValue(a,u),a++,s++;else if(o.has(y))i.set(b,e.detach(a)),s--;else{let S=e.create(a,n[a]);e.attach(a,S),a++,s++}}for(;a<=c;)hE(e,i,t,a,n[a]),a++}else if(n!=null){Ae(r);let c=n[Symbol.iterator]();Ae(null);let d=c.next();for(;!d.done&&a<=s;){let u=e.at(a),p=d.value,f=y_(a,u,a,p,t);if(f!==0)f<0&&e.updateValue(a,p),a++,d=c.next();else{i??=new Up,o??=gE(e,a,s,t);let h=t(a,p);if(q_(e,i,a,h))e.updateValue(a,p),a++,s++,d=c.next();else if(!o.has(h))e.attach(a,e.create(a,p)),a++,s++,d=c.next();else{let v=t(a,u);i.set(v,e.detach(a)),s--}}}for(;!d.done;)hE(e,i,t,e.length,d.value),d=c.next()}for(;a<=s;)e.destroy(e.detach(s--));i?.forEach(c=>{e.destroy(c)})}function q_(e,n,t,r){return n!==void 0&&n.has(r)?(e.attach(t,n.get(r)),n.delete(r),!0):!1}function hE(e,n,t,r,i){if(q_(e,n,r,t(r,i)))e.updateValue(r,i);else{let o=e.create(r,i);e.attach(r,o)}}function gE(e,n,t,r){let i=new Set;for(let o=n;o<=t;o++)i.add(r(o,e.at(o)));return i}var Up=class{kvMap=new Map;_vMap=void 0;has(n){return this.kvMap.has(n)}delete(n){if(!this.has(n))return!1;let t=this.kvMap.get(n);return this._vMap!==void 0&&this._vMap.has(t)?(this.kvMap.set(n,this._vMap.get(t)),this._vMap.delete(t)):this.kvMap.delete(n),!0}get(n){return this.kvMap.get(n)}set(n,t){if(this.kvMap.has(n)){let r=this.kvMap.get(n);this._vMap===void 0&&(this._vMap=new Map);let i=this._vMap;for(;i.has(r);)r=i.get(r);i.set(r,t)}else this.kvMap.set(n,t)}forEach(n){for(let[t,r]of this.kvMap)if(n(r,t),this._vMap!==void 0){let i=this._vMap;for(;i.has(r);)r=i.get(r),n(r,t)}}};function U(e,n,t,r,i,o,a,s){ui("NgControlFlow");let l=Ue(),c=Qt(),d=kr(c.consts,o);return Vp(l,c,e,n,t,r,i,d,256,a,s),Ca}function Ca(e,n,t,r,i,o,a,s){ui("NgControlFlow");let l=Ue(),c=Qt(),d=kr(c.consts,o);return Vp(l,c,e,n,t,r,i,d,512,a,s),Ca}function B(e,n){ui("NgControlFlow");let t=Ue(),r=Do(),i=t[r]!==ur?t[r]:-1,o=i!==-1?Bp(t,Yt+i):void 0,a=0;if(cr(t,r,e)){let s=Ae(null);try{if(o!==void 0&&SD(o,a),e!==-1){let l=Yt+e,c=Bp(t,l),d=Y_(t[Re],l),u=TD(c,d,t),p=tf(t,d,n,{dehydratedView:u});nf(c,p,a,vc(d,u))}}finally{Ae(s)}}else if(o!==void 0){let s=DD(o,a);s!==void 0&&(s[on]=n)}}var W_=class{lContainer;$implicit;$index;constructor(n,t,r){this.lContainer=n,this.$implicit=t,this.$index=r}get $count(){return this.lContainer.length-tn}};function fr(e,n){return n}var Z_=class{hasEmptyBlock;trackByFn;liveCollection;constructor(n,t,r){this.hasEmptyBlock=n,this.trackByFn=t,this.liveCollection=r}};function Rt(e,n,t,r,i,o,a,s,l,c,d,u,p){ui("NgControlFlow");let f=Ue(),h=Qt(),v=l!==void 0,b=Ue(),_=s?a.bind(b[sr][on]):a,y=new Z_(v,_);b[Yt+e]=y,Vp(f,h,e+1,n,t,r,i,kr(h.consts,o),256),v&&Vp(f,h,e+2,l,c,d,u,kr(h.consts,p),512)}var K_=class extends G_{lContainer;hostLView;templateTNode;operationsCounter=void 0;needsIndexUpdate=!1;constructor(n,t,r){super(),this.lContainer=n,this.hostLView=t,this.templateTNode=r}get length(){return this.lContainer.length-tn}at(n){return this.getLView(n)[on].$implicit}attach(n,t){let r=t[ps];this.needsIndexUpdate||=n!==this.length,nf(this.lContainer,t,n,vc(this.templateTNode,r)),hF(this.lContainer,n)}detach(n){return this.needsIndexUpdate||=n!==this.length-1,gF(this.lContainer,n),mF(this.lContainer,n)}create(n,t){let r=O_(this.lContainer,this.templateTNode.tView.ssrId);return tf(this.hostLView,this.templateTNode,new W_(this.lContainer,t,n),{dehydratedView:r})}destroy(n){Xp(n[Re],n)}updateValue(n,t){this.getLView(n)[on].$implicit=t}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let n=0;n0){let o=r[Vi];g3(o,i),va.delete(r[Ui]),i.detachedLeaveAnimationFns=void 0}}function gF(e,n){if(e.length<=tn)return;let t=tn+n,r=e[t],i=r?r[Co]:void 0;i&&i.leave&&i.leave.size>0&&(i.detachedLeaveAnimationFns=[])}function mF(e,n){return xc(e,n)}function _F(e,n){return DD(e,n)}function Y_(e,n){return op(e,n)}function te(e,n,t){let r=Ue(),i=Do();if(cr(r,i,n)){let o=Qt(),a=pc();fD(a,r,e,n,r[Mt],t)}return te}function Q_(e,n,t,r,i){xv(n,e,t,i?"class":"style",r)}function g(e,n,t,r){let i=Ue(),o=i[Re],a=e+Yt,s=o.firstCreatePass?Dv(a,i,2,n,_v,dp(),t,r):o.data[a];if($i(s)){let l=i[Br].tracingService;if(l&&l.componentCreate){let c=o.data[s.directiveStart+s.componentOffset];return l.componentCreate(FD(c),()=>(mE(e,n,i,s,r),g))}}return mE(e,n,i,s,r),g}function mE(e,n,t,r,i){if(vv(r,t,e,n,WD),gs(r)){let o=t[Re];ef(o,t,r),av(o,r,t)}i!=null&&Ec(t,r)}function m(){let e=Qt(),n=In(),t=yv(n);return e.firstCreatePass&&Sv(e,t),Jm(t)&&e_(),Xm(),t.classesWithoutHost!=null&&gN(t)&&Q_(e,t,Ue(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&mN(t)&&Q_(e,t,Ue(),t.stylesWithoutHost,!1),m}function Q(e,n,t,r){return g(e,n,t,r),m(),Q}function nn(e,n,t,r){let i=Ue(),o=i[Re],a=e+Yt,s=o.firstCreatePass?C5(a,o,2,n,t,r):o.data[a];return vv(s,i,e,n,WD),r!=null&&Ec(i,s),nn}function un(){let e=In(),n=yv(e);return Jm(n)&&e_(),Xm(),un}function Wr(e,n,t,r){return nn(e,n,t,r),un(),Wr}var WD=(e,n,t,r,i)=>(fc(!0),QE(n[Mt],r,UC()));function Rv(e,n,t){let r=Ue(),i=r[Re],o=e+Yt,a=i.firstCreatePass?Dv(o,r,8,"ng-container",_v,dp(),n,t):i.data[o];if(vv(a,r,e,"ng-container",vF),gs(a)){let s=r[Re];ef(s,r,a),av(s,a,r)}return t!=null&&Ec(r,a),Rv}function Pv(){let e=Qt(),n=In(),t=yv(n);return e.firstCreatePass&&Sv(e,t),Pv}function St(e,n,t){return Rv(e,n,t),Pv(),St}var vF=(e,n,t,r,i)=>(fc(!0),qN(n[Mt],""));function be(){return Ue()}function Tc(e,n,t){let r=Ue(),i=Do();if(cr(r,i,n)){let o=Qt(),a=pc();hD(a,r,e,n,r[Mt],t)}return Tc}var Ic="en-US";var yF=Ic;function ZD(e){typeof e=="string"&&(yF=e.toLowerCase().replace(/_/g,"-"))}function J(e,n,t){let r=Ue(),i=Qt(),o=In();return KD(i,r,r[Mt],o,e,n,t),J}function Io(e,n,t){let r=Ue(),i=Qt(),o=In();return(o.type&3||t)&&OD(o,i,r,t,r[Mt],e,n,Ep(o,r,n)),Io}function KD(e,n,t,r,i,o,a){let s=!0,l=null;if((r.type&3||a)&&(l??=Ep(r,n,o),OD(r,e,n,a,t,i,o,l)&&(s=!1)),s){let c=r.outputs?.[i],d=r.hostDirectiveOutputs?.[i];if(d&&d.length)for(let u=0;u>17&32767}function xF(e){return(e&2)==2}function bF(e,n){return e&131071|n<<17}function X_(e){return e|2}function Ss(e){return(e&131068)>>2}function x_(e,n){return e&-131069|n<<2}function wF(e){return(e&1)===1}function J_(e){return e|1}function CF(e,n,t,r,i,o){let a=o?n.classBindings:n.styleBindings,s=ba(a),l=Ss(a);e[r]=t;let c=!1,d;if(Array.isArray(t)){let u=t;d=u[1],(d===null||cs(u,d)>0)&&(c=!0)}else d=t;if(i)if(l!==0){let p=ba(e[s+1]);e[r+1]=yp(p,s),p!==0&&(e[p+1]=x_(e[p+1],r)),e[s+1]=bF(e[s+1],r)}else e[r+1]=yp(s,0),s!==0&&(e[s+1]=x_(e[s+1],r)),s=r;else e[r+1]=yp(l,0),s===0?s=r:e[l+1]=x_(e[l+1],r),l=r;c&&(e[r+1]=X_(e[r+1])),_E(e,d,r,!0),_E(e,d,r,!1),EF(n,d,e,r,o),a=yp(s,l),o?n.classBindings=a:n.styleBindings=a}function EF(e,n,t,r,i){let o=i?e.residualClasses:e.residualStyles;o!=null&&typeof n=="string"&&cs(o,n)>=0&&(t[r+1]=J_(t[r+1]))}function _E(e,n,t,r){let i=e[t+1],o=n===null,a=r?ba(i):Ss(i),s=!1;for(;a!==0&&(s===!1||o);){let l=e[a],c=e[a+1];DF(l,n)&&(s=!0,e[a+1]=r?J_(c):X_(c)),a=r?ba(c):Ss(c)}s&&(e[t+1]=r?X_(i):J_(i))}function DF(e,n){return e===null||n==null||(Array.isArray(e)?e[1]:e)===n?!0:Array.isArray(e)&&typeof n=="string"?cs(e,n)>=0:!1}var Gr={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function SF(e){return e.substring(Gr.key,Gr.keyEnd)}function kF(e){return TF(e),YD(e,QD(e,0,Gr.textEnd))}function YD(e,n){let t=Gr.textEnd;return t===n?-1:(n=Gr.keyEnd=IF(e,Gr.key=n,t),QD(e,n,t))}function TF(e){Gr.key=0,Gr.keyEnd=0,Gr.value=0,Gr.valueEnd=0,Gr.textEnd=e.length}function QD(e,n,t){for(;n32;)n++;return n}function st(e,n,t){return XD(e,n,t,!1),st}function We(e,n){return XD(e,n,null,!0),We}function Ea(e){MF(LF,AF,e,!0)}function AF(e,n){for(let t=kF(n);t>=0;t=YD(n,t))tp(e,SF(n),!0)}function XD(e,n,t,r){let i=Ue(),o=Qt(),a=i_(2);if(o.firstUpdatePass&&eS(o,e,a,r),n!==ur&&cr(i,a,n)){let s=o.data[zi()];tS(o,s,i,i[Mt],e,i[a+1]=VF(n,t),r,a)}}function MF(e,n,t,r){let i=Qt(),o=i_(2);i.firstUpdatePass&&eS(i,null,o,r);let a=Ue();if(t!==ur&&cr(a,o,t)){let s=i.data[zi()];if(nS(s,r)&&!JD(i,o)){let l=r?s.classesWithoutHost:s.stylesWithoutHost;l!==null&&(t=Ku(l,t||"")),Q_(i,s,a,t,r)}else jF(i,s,a,a[Mt],a[o+1],a[o+1]=FF(e,n,t),r,o)}}function JD(e,n){return n>=e.expandoStartIndex}function eS(e,n,t,r){let i=e.data;if(i[t+1]===null){let o=i[zi()],a=JD(e,t);nS(o,r)&&n===null&&!a&&(n=!1),n=RF(i,o,n,r),CF(i,o,n,t,a,r)}}function RF(e,n,t,r){let i=NC(e),o=r?n.residualClasses:n.residualStyles;if(i===null)(r?n.classBindings:n.styleBindings)===0&&(t=b_(null,e,n,t,r),t=wc(t,n.attrs,r),o=null);else{let a=n.directiveStylingLast;if(a===-1||e[a]!==i)if(t=b_(i,e,n,t,r),o===null){let l=PF(e,n,r);l!==void 0&&Array.isArray(l)&&(l=b_(null,e,n,l[1],r),l=wc(l,n.attrs,r),OF(e,n,r,l))}else o=NF(e,n,r)}return o!==void 0&&(r?n.residualClasses=o:n.residualStyles=o),t}function PF(e,n,t){let r=t?n.classBindings:n.styleBindings;if(Ss(r)!==0)return e[ba(r)]}function OF(e,n,t,r){let i=t?n.classBindings:n.styleBindings;e[ba(i)]=r}function NF(e,n,t){let r,i=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0;){let l=e[i],c=Array.isArray(l),d=c?l[1]:l,u=d===null,p=t[i+1];p===ur&&(p=u?qn:void 0);let f=u?np(p,r):d===r?p:void 0;if(c&&!$p(f)&&(f=np(l,r)),$p(f)&&(s=f,a))return s;let h=e[i+1];i=a?ba(h):Ss(h)}if(n!==null){let l=o?n.residualClasses:n.residualStyles;l!=null&&(s=np(l,r))}return s}function $p(e){return e!==void 0}function VF(e,n){return e==null||e===""||(typeof n=="string"?e=e+n:typeof e=="object"&&(e=sc(Zp(e)))),e}function nS(e,n){return(e.flags&(n?8:16))!==0}function E(e,n=""){let t=Ue(),r=Qt(),i=e+Yt,o=r.firstCreatePass?Dc(r,i,1,n,null):r.data[i],a=UF(r,t,o,n);t[i]=a,gp()&&gv(r,t,a,o),vs(o,!1)}var UF=(e,n,t,r)=>(fc(!0),HN(n[Mt],r));function BF(e,n,t,r=""){return cr(e,Do(),t)?n+Xu(t)+r:ur}function _t(e){return Ce("",e),_t}function Ce(e,n,t){let r=Ue(),i=BF(r,e,n,t);return i!==ur&&$F(r,zi(),i),Ce}function $F(e,n,t){let r=qm(n,e);GN(e[Mt],r,t)}function Is(e,n,t){Iv(n)&&(n=n());let r=Ue(),i=Do();if(cr(r,i,n)){let o=Qt(),a=pc();fD(a,r,e,n,r[Mt],t)}return Is}function Ac(e,n){let t=Iv(e);return t&&e.set(n),t}function As(e,n){let t=Ue(),r=Qt(),i=In();return KD(r,t,t[Mt],i,e,n),As}function yE(e,n,t){let r=Qt();r.firstCreatePass&&rS(n,r.data,r.blueprint,ai(e),t)}function rS(e,n,t,r,i){if(e=kn(e),Array.isArray(e))for(let o=0;o>20;if(sa(e)||!e.multi){let f=new _a(c,i,Be,null),h=C_(l,n,i?d:d+p,u);h===-1?(D_(Ip(s,a),o,l),w_(o,e,n.length),n.push(l),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),t.push(f),a.push(f)):(t[h]=f,a[h]=f)}else{let f=C_(l,n,d+p,u),h=C_(l,n,d,d+p),v=f>=0&&t[f],b=h>=0&&t[h];if(i&&!b||!i&&!v){D_(Ip(s,a),o,l);let _=GF(i?HF:zF,t.length,i,r,c,e);!i&&b&&(t[h].providerFactory=_),w_(o,e,n.length,0),n.push(l),s.directiveStart++,s.directiveEnd++,i&&(s.providerIndexes+=1048576),t.push(_),a.push(_)}else{let _=iS(t[i?h:f],c,!i&&r);w_(o,e,f>-1?f:h,_)}!i&&r&&b&&t[h].componentProviders++}}}function w_(e,n,t,r){let i=sa(n),o=mC(n);if(i||o){let l=(o?kn(n.useClass):n).prototype.ngOnDestroy;if(l){let c=e.destroyHooks||(e.destroyHooks=[]);if(!i&&n.multi){let d=c.indexOf(t);d===-1?c.push(t,[r,l]):c[d+1].push(r,l)}else c.push(t,l)}}}function iS(e,n,t){return t&&e.componentProviders++,e.multi.push(n)-1}function C_(e,n,t,r){for(let i=t;i{t.providersResolver=(r,i)=>yE(r,i?i(e):e,!1),n&&(t.viewProvidersResolver=(r,i)=>yE(r,i?i(n):n,!0))}}function Ms(e,n){let t=ys()+e,r=Ue();return r[t]===ur?af(r,t,n()):E5(r,t)}function qt(e,n,t){return oS(Ue(),ys(),e,n,t)}function Ov(e,n,t,r){return qF(Ue(),ys(),e,n,t,r)}function Nv(e,n){let t=e[n];return t===ur?void 0:t}function oS(e,n,t,r,i,o){let a=n+t;return cr(e,a,i)?af(e,a+1,o?r.call(o,i):r(i)):Nv(e,a+1)}function qF(e,n,t,r,i,o,a){let s=n+t;return PD(e,s,i,o)?af(e,s+2,a?r.call(a,i,o):r(i,o)):Nv(e,s+2)}function WF(e,n,t,r,i,o,a,s){let l=n+t;return D5(e,l,i,o,a)?af(e,l+3,s?r.call(s,i,o,a):r(i,o,a)):Nv(e,l+3)}function tt(e,n){let t=Qt(),r,i=e+Yt;t.firstCreatePass?(r=ZF(n,t.pipeRegistry),t.data[i]=r,r.onDestroy&&(t.destroyHooks??=[]).push(i,r.onDestroy)):r=t.data[i];let o=r.factory||(r.factory=_o(r.type,!0)),a,s=Gn(Be);try{let l=Tp(!1),c=o();return Tp(l),Wm(t,Ue(),i,c),c}finally{Gn(s)}}function ZF(e,n){if(n)for(let t=n.length-1;t>=0;t--){let r=n[t];if(e===r.name)return r}}function ot(e,n,t){let r=e+Yt,i=Ue(),o=ap(i,r);return aS(i,r)?oS(i,ys(),n,o.transform,t,o):o.transform(t)}function df(e,n,t,r,i){let o=e+Yt,a=Ue(),s=ap(a,o);return aS(a,o)?WF(a,ys(),n,s.transform,t,r,i,s):s.transform(t,r,i)}function aS(e,n){return e[Re].data[n].pure}function Qn(e,n){return rf(e,n)}var zp=class{ngModuleFactory;componentFactories;constructor(n,t){this.ngModuleFactory=n,this.componentFactories=t}},Fv=(()=>{class e{compileModuleSync(t){return new jp(t)}compileModuleAsync(t){return Promise.resolve(this.compileModuleSync(t))}compileModuleAndAllComponentsSync(t){let r=this.compileModuleSync(t),i=Mm(t),o=tD(i.declarations).reduce((a,s)=>{let l=ji(s);return l&&a.push(new xa(l)),a},[]);return new zp(r,o)}compileModuleAndAllComponentsAsync(t){return Promise.resolve(this.compileModuleAndAllComponentsSync(t))}clearCache(){}clearCacheFor(t){}getModuleId(t){}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var sS=(()=>{class e{applicationErrorHandler=A(Tr);appRef=A(pr);taskService=A(si);ngZone=A(pt);zonelessEnabled=A(xs);tracing=A(di,{optional:!0});zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new Zt;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(oc):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(A(mp,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{let t=this.taskService.add();if(!this.runningTick&&(this.cleanup(),!this.zonelessEnabled||this.appRef.includeAllTestViews)){this.taskService.remove(t);return}this.switchToMicrotaskScheduler(),this.taskService.remove(t)})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()}))}switchToMicrotaskScheduler(){this.ngZone.runOutsideAngular(()=>{let t=this.taskService.add();this.useMicrotaskScheduler=!0,queueMicrotask(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(t)})})}notify(t){if(!this.zonelessEnabled&&t===5)return;switch(t){case 0:{this.appRef.dirtyFlags|=2;break}case 3:case 2:case 4:case 5:case 1:{this.appRef.dirtyFlags|=4;break}case 6:{this.appRef.dirtyFlags|=2;break}case 12:{this.appRef.dirtyFlags|=16;break}case 13:{this.appRef.dirtyFlags|=2;break}case 11:break;default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick())return;let r=this.useMicrotaskScheduler?zC:d_;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>r(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>r(()=>this.tick()))}shouldScheduleTick(){return!(this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(oc+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let t=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.applicationErrorHandler(r)}finally{this.taskService.remove(t),this.cleanup()}}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let t=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(t)}}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function lS(){return[{provide:br,useExisting:sS},{provide:pt,useClass:ac},{provide:xs,useValue:!0}]}function KF(){return typeof $localize<"u"&&$localize.locale||Ic}var uf=new le("",{factory:()=>A(uf,{optional:!0,skipSelf:!0})||KF()});var pf=class{destroyed=!1;listeners=null;errorHandler=A(Vn,{optional:!0});destroyRef=A(an);constructor(){this.destroyRef.onDestroy(()=>{this.destroyed=!0,this.listeners=null})}subscribe(n){if(this.destroyed)throw new oe(953,!1);return(this.listeners??=[]).push(n),{unsubscribe:()=>{let t=this.listeners?.indexOf(n);t!==void 0&&t!==-1&&this.listeners?.splice(t,1)}}}emit(n){if(this.destroyed){console.warn(Li(953,!1));return}if(this.listeners===null)return;let t=Ae(null);try{for(let r of this.listeners)try{r(n)}catch(i){this.errorHandler?.handleError(i)}}finally{Ae(t)}}};function ln(e){return eC(e)}function Wt(e,n){return iu(e,n?.equal)}var uS=Symbol("InputSignalNode#UNSET"),u8=X(R({},ou),{transformFn:void 0,applyValueToInputSignal(e,n){Ja(e,n)}});function pS(e,n){let t=Object.create(u8);t.value=e,t.transformFn=n?.transform;function r(){if(Ya(t),t.value===uS){let i=null;throw new oe(-950,i)}return t.value}return r[Fn]=t,r}function pn(e){return new pf}function cS(e,n){return pS(e,n)}function p8(e){return pS(uS,e)}var Se=(cS.required=p8,cS);var f8=(()=>{class e{zone=A(pt);changeDetectionScheduler=A(br);applicationRef=A(pr);applicationErrorHandler=A(Tr);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(t){this.applicationErrorHandler(t)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),h8=new le("",{factory:()=>!1});function g8({ngZoneFactory:e,scheduleInRootZone:n}){return e??=()=>new pt(X(R({},hS()),{scheduleInRootZone:n})),[{provide:xs,useValue:!1},{provide:pt,useFactory:e},{provide:bo,multi:!0,useFactory:()=>{let t=A(f8,{optional:!0});return()=>t.initialize()}},{provide:bo,multi:!0,useFactory:()=>{let t=A(m8);return()=>{t.initialize()}}},{provide:mp,useValue:n??c_}]}function fS(e){let n=e?.scheduleInRootZone,t=g8({ngZoneFactory:()=>{let r=hS(e);return r.scheduleInRootZone=n,r.shouldCoalesceEventChangeDetection&&ui("NgZone_CoalesceEvent"),new pt(r)},scheduleInRootZone:n});return wr([{provide:h8,useValue:!0},t])}function hS(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}var m8=(()=>{class e{subscription=new Zt;initialized=!1;zone=A(pt);pendingTasks=A(si);initialize(){if(this.initialized)return;this.initialized=!0;let t=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(t=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{pt.assertNotInAngularZone(),queueMicrotask(()=>{t!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(t),t=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{pt.assertInAngularZone(),t??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Lv=new le(""),_8=new le("");function Mc(e){return!e.moduleRef}function v8(e){let n=Mc(e)?e.r3Injector:e.moduleRef.injector,t=n.get(pt);return t.run(()=>{Mc(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=n.get(Tr),i;if(t.runOutsideAngular(()=>{i=t.onError.subscribe({next:r})}),Mc(e)){let o=()=>n.destroy(),a=e.platformInjector.get(Lv);a.add(o),n.onDestroy(()=>{i.unsubscribe(),a.delete(o)})}else{let o=()=>e.moduleRef.destroy(),a=e.platformInjector.get(Lv);a.add(o),e.moduleRef.onDestroy(()=>{mc(e.allPlatformModules,e.moduleRef),i.unsubscribe(),a.delete(o)})}return x8(r,t,()=>{let o=n.get(si),a=o.add(),s=n.get(Mv);return s.runInitializers(),s.donePromise.then(()=>{let l=n.get(uf,Ic);if(ZD(l||Ic),!n.get(_8,!0))return Mc(e)?n.get(pr):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(Mc(e)){let d=n.get(pr);return e.rootComponent!==void 0&&d.bootstrap(e.rootComponent),d}else return y8?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>{o.remove(a)})})})}var y8;function x8(e,n,t){try{let r=t();return Wi(r)?r.catch(i=>{throw n.runOutsideAngular(()=>e(i)),i}):r}catch(r){throw n.runOutsideAngular(()=>e(r)),r}}var ff=null;function b8(e=[],n){return Bt.create({name:n,providers:[{provide:dc,useValue:"platform"},{provide:Lv,useValue:new Set([()=>ff=null])},...e]})}function w8(e=[]){if(ff)return ff;let n=b8(e);return ff=n,GD(),C8(n),n}function C8(e){let n=e.get(Gp,null);yn(e,()=>{n?.forEach(t=>t())})}function hf(){return!1}var E8=1e4;var Nfe=E8-1e3;var cn=(()=>{class e{static __NG_ELEMENT_ID__=D8}return e})();function D8(e){return S8(In(),Ue(),(e&16)===16)}function S8(e,n,t){if($i(e)&&!t){let r=Sr(e.index,n);return new ko(r,r)}else if(e.type&175){let r=n[sr];return new ko(r,n)}return null}function gS(e){let{rootComponent:n,appProviders:t,platformProviders:r,platformRef:i}=e;Et(gt.BootstrapApplicationStart);try{let o=i?.injector??w8(r),a=[lS(),GC,...t||[]],s=new bc({providers:a,parent:o,debugName:"",runEnvironmentInitializers:!1});return v8({r3Injector:s.injector,platformInjector:o,rootComponent:n})}catch(o){return Promise.reject(o)}finally{Et(gt.BootstrapApplicationEnd)}}function mS(e){return typeof e=="boolean"?e:e!=null&&e!=="false"}function gf(e,n){let t=ji(e),r=n.elementInjector||us();return new xa(t).create(r,n.projectableNodes,n.hostElement,n.environmentInjector,n.directives,n.bindings)}var _S=null;function Ar(){return _S}function jv(e){_S??=e}var Rc=class{},Rs=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(vS),providedIn:"platform"})}return e})();var vS=(()=>{class e extends Rs{_location;_history;_doc=A(Xt);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Ar().getBaseHref(this._doc)}onPopState(t){let r=Ar().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",t,!1),()=>r.removeEventListener("popstate",t)}onHashChange(t){let r=Ar().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",t,!1),()=>r.removeEventListener("hashchange",t)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(t){this._location.pathname=t}pushState(t,r,i){this._history.pushState(t,r,i)}replaceState(t,r,i){this._history.replaceState(t,r,i)}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>new e,providedIn:"platform"})}return e})();function bS(e,n){return e?n?e.endsWith("/")?n.startsWith("/")?e+n.slice(1):e+n:n.startsWith("/")?e+n:`${e}/${n}`:e:n}function yS(e){let n=e.search(/#|\?|$/);return e[n-1]==="/"?e.slice(0,n-1)+e.slice(n):e}function Ao(e){return e&&e[0]!=="?"?`?${e}`:e}var mf=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(T8),providedIn:"root"})}return e})(),k8=new le(""),T8=(()=>{class e extends mf{_platformLocation;_baseHref;_removeListenerFns=[];constructor(t,r){super(),this._platformLocation=t,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??A(Xt).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return bS(this._baseHref,t)}path(t=!1){let r=this._platformLocation.pathname+Ao(this._platformLocation.search),i=this._platformLocation.hash;return i&&t?`${r}${i}`:r}pushState(t,r,i,o){let a=this.prepareExternalUrl(i+Ao(o));this._platformLocation.pushState(t,r,a)}replaceState(t,r,i,o){let a=this.prepareExternalUrl(i+Ao(o));this._platformLocation.replaceState(t,r,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}static \u0275fac=function(r){return new(r||e)(se(Rs),se(k8,8))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Mo=(()=>{class e{_subject=new qe;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(t){this._locationStrategy=t;let r=this._locationStrategy.getBaseHref();this._basePath=M8(yS(xS(r))),this._locationStrategy.onPopState(i=>{this._subject.next({url:this.path(!0),pop:!0,state:i.state,type:i.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(t=!1){return this.normalize(this._locationStrategy.path(t))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(t,r=""){return this.path()==this.normalize(t+Ao(r))}normalize(t){return e.stripTrailingSlash(A8(this._basePath,xS(t)))}prepareExternalUrl(t){return t&&t[0]!=="/"&&(t="/"+t),this._locationStrategy.prepareExternalUrl(t)}go(t,r="",i=null){this._locationStrategy.pushState(i,"",t,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Ao(r)),i)}replaceState(t,r="",i=null){this._locationStrategy.replaceState(i,"",t,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Ao(r)),i)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(t=0){this._locationStrategy.historyGo?.(t)}onUrlChange(t){return this._urlChangeListeners.push(t),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(t);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(t="",r){this._urlChangeListeners.forEach(i=>i(t,r))}subscribe(t,r,i){return this._subject.subscribe({next:t,error:r??void 0,complete:i??void 0})}static normalizeQueryParams=Ao;static joinWithSlash=bS;static stripTrailingSlash=yS;static \u0275fac=function(r){return new(r||e)(se(mf))};static \u0275prov=ee({token:e,factory:()=>I8(),providedIn:"root"})}return e})();function I8(){return new Mo(se(mf))}function A8(e,n){if(!e||!n.startsWith(e))return n;let t=n.substring(e.length);return t===""||["/",";","?","#"].includes(t[0])?t:n}function xS(e){return e.replace(/\/index.html$/,"")}function M8(e){if(new RegExp("^(https?:)?//").test(e)){let[,t]=e.split(/\/\/[^\/]+/);return t}return e}var Vv=/\s+/,wS=[],$v=(()=>{class e{_ngEl;_renderer;initialClasses=wS;rawClass;stateMap=new Map;constructor(t,r){this._ngEl=t,this._renderer=r}set klass(t){this.initialClasses=t!=null?t.trim().split(Vv):wS}set ngClass(t){this.rawClass=typeof t=="string"?t.trim().split(Vv):t}ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);let t=this.rawClass;if(Array.isArray(t)||t instanceof Set)for(let r of t)this._updateState(r,!0);else if(t!=null)for(let r of Object.keys(t))this._updateState(r,!!t[r]);this._applyStateDiff()}_updateState(t,r){let i=this.stateMap.get(t);i!==void 0?(i.enabled!==r&&(i.changed=!0,i.enabled=r),i.touched=!0):this.stateMap.set(t,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(let t of this.stateMap){let r=t[0],i=t[1];i.changed?(this._toggleClass(r,i.enabled),i.changed=!1):i.touched||(i.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),i.touched=!1}}_toggleClass(t,r){t=t.trim(),t.length>0&&t.split(Vv).forEach(i=>{r?this._renderer.addClass(this._ngEl.nativeElement,i):this._renderer.removeClass(this._ngEl.nativeElement,i)})}static \u0275fac=function(r){return new(r||e)(Be(An),Be(Ir))};static \u0275dir=It({type:e,selectors:[["","ngClass",""]],inputs:{klass:[0,"class","klass"],ngClass:"ngClass"}})}return e})();var Da=(()=>{class e{_viewContainerRef;_viewRef=null;ngTemplateOutletContext=null;ngTemplateOutlet=null;ngTemplateOutletInjector=null;injector=A(Bt);constructor(t){this._viewContainerRef=t}ngOnChanges(t){if(this._shouldRecreateView(t)){let r=this._viewContainerRef;if(this._viewRef&&r.remove(r.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let i=this._createContextForwardProxy();this._viewRef=r.createEmbeddedView(this.ngTemplateOutlet,i,{injector:this._getInjector()})}}_getInjector(){return this.ngTemplateOutletInjector==="outlet"?this.injector:this.ngTemplateOutletInjector??void 0}_shouldRecreateView(t){return!!t.ngTemplateOutlet||!!t.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(t,r,i)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,r,i):!1,get:(t,r,i)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,r,i)}})}static \u0275fac=function(r){return new(r||e)(Be(qi))};static \u0275dir=It({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},features:[dr]})}return e})();function zv(e,n){return new oe(2100,!1)}var Uv=class{createSubscription(n,t,r){return ln(()=>n.subscribe({next:t,error:r}))}dispose(n){ln(()=>n.unsubscribe())}},Bv=class{createSubscription(n,t,r){return n.then(i=>t?.(i),i=>r?.(i)),{unsubscribe:()=>{t=null,r=null}}}dispose(n){n.unsubscribe()}},R8=new Bv,P8=new Uv,Zi=(()=>{class e{_ref;_latestValue=null;markForCheckOnValueUpdate=!0;_subscription=null;_obj=null;_strategy=null;applicationErrorHandler=A(Tr);constructor(t){this._ref=t}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(t){if(!this._obj){if(t)try{this.markForCheckOnValueUpdate=!1,this._subscribe(t)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return t!==this._obj?(this._dispose(),this.transform(t)):this._latestValue}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,r=>this._updateLatestValue(t,r),r=>this.applicationErrorHandler(r))}_selectStrategy(t){if(Wi(t))return R8;if(cf(t))return P8;throw zv(e,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,r){t===this._obj&&(this._latestValue=r,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static \u0275fac=function(r){return new(r||e)(Be(cn,16))};static \u0275pipe=Sc({name:"async",type:e,pure:!1})}return e})();var Hv=(()=>{class e{transform(t){return t==null?null:(O8(e,t),t.toUpperCase())}static \u0275fac=function(r){return new(r||e)};static \u0275pipe=Sc({name:"uppercase",type:e,pure:!0})}return e})();function O8(e,n){if(typeof n!="string")throw zv(e,n)}var Gv=(()=>{class e{transform(t,r,i){if(t==null)return null;if(!(typeof t=="string"||Array.isArray(t)))throw zv(e,t);return t.slice(r,i)}static \u0275fac=function(r){return new(r||e)};static \u0275pipe=Sc({name:"slice",type:e,pure:!1})}return e})();var wn=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275mod=Bn({type:e});static \u0275inj=Tn({})}return e})();function Pc(e,n){n=encodeURIComponent(n);for(let t of e.split(";")){let r=t.indexOf("="),[i,o]=r==-1?[t,""]:[t.slice(0,r),t.slice(r+1)];if(i.trim()===n)return decodeURIComponent(o)}return null}var Sa=class{};var qv="browser",F8="server";function CS(e){return e===qv}function Wv(e){return e===F8}var Nc=class{_doc;constructor(n){this._doc=n}manager},_f=(()=>{class e extends Nc{constructor(t){super(t)}supports(t){return!0}addEventListener(t,r,i,o){return t.addEventListener(r,i,o),()=>this.removeEventListener(t,r,i,o)}removeEventListener(t,r,i,o){return t.removeEventListener(r,i,o)}static \u0275fac=function(r){return new(r||e)(se(Xt))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),xf=new le(""),Qv=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(t,r){this._zone=r,t.forEach(a=>{a.manager=this});let i=t.filter(a=>!(a instanceof _f));this._plugins=i.slice().reverse();let o=t.find(a=>a instanceof _f);o&&this._plugins.push(o)}addEventListener(t,r,i,o){return this._findPluginFor(r).addEventListener(t,r,i,o)}getZone(){return this._zone}_findPluginFor(t){let r=this._eventNameToPlugin.get(t);if(r)return r;if(r=this._plugins.find(o=>o.supports(t)),!r)throw new oe(5101,!1);return this._eventNameToPlugin.set(t,r),r}static \u0275fac=function(r){return new(r||e)(se(xf),se(pt))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Zv="ng-app-id";function ES(e){for(let n of e)n.remove()}function DS(e,n){let t=n.createElement("style");return t.textContent=e,t}function L8(e,n,t,r){let i=e.head?.querySelectorAll(`style[${Zv}="${n}"],link[${Zv}="${n}"]`);if(i)for(let o of i)o.removeAttribute(Zv),o instanceof HTMLLinkElement?r.set(o.href.slice(o.href.lastIndexOf("/")+1),{usage:0,elements:[o]}):o.textContent&&t.set(o.textContent,{usage:0,elements:[o]})}function Yv(e,n){let t=n.createElement("link");return t.setAttribute("rel","stylesheet"),t.setAttribute("href",e),t}var Xv=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(t,r,i,o={}){this.doc=t,this.appId=r,this.nonce=i,L8(t,r,this.inline,this.external),this.hosts.add(t.head)}addStyles(t,r){for(let i of t)this.addUsage(i,this.inline,DS);r?.forEach(i=>this.addUsage(i,this.external,Yv))}removeStyles(t,r){for(let i of t)this.removeUsage(i,this.inline);r?.forEach(i=>this.removeUsage(i,this.external))}addUsage(t,r,i){let o=r.get(t);o?o.usage++:r.set(t,{usage:1,elements:[...this.hosts].map(a=>this.addElement(a,i(t,this.doc)))})}removeUsage(t,r){let i=r.get(t);i&&(i.usage--,i.usage<=0&&(ES(i.elements),r.delete(t)))}ngOnDestroy(){for(let[,{elements:t}]of[...this.inline,...this.external])ES(t);this.hosts.clear()}addHost(t){this.hosts.add(t);for(let[r,{elements:i}]of this.inline)i.push(this.addElement(t,DS(r,this.doc)));for(let[r,{elements:i}]of this.external)i.push(this.addElement(t,Yv(r,this.doc)))}removeHost(t){this.hosts.delete(t)}addElement(t,r){return this.nonce&&r.setAttribute("nonce",this.nonce),t.appendChild(r)}static \u0275fac=function(r){return new(r||e)(se(Xt),se(Hp),se(Wp,8),se(wa))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Kv={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/Math/MathML"},Jv=/%COMP%/g;var kS="%COMP%",j8=`_nghost-${kS}`,V8=`_ngcontent-${kS}`,U8=!0,B8=new le("",{factory:()=>U8});function $8(e){return V8.replace(Jv,e)}function z8(e){return j8.replace(Jv,e)}function TS(e,n){return n.map(t=>t.replace(Jv,e))}var jc=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;constructor(t,r,i,o,a,s,l=null,c=null){this.eventManager=t,this.sharedStylesHost=r,this.appId=i,this.removeStylesOnCompDestroy=o,this.doc=a,this.ngZone=s,this.nonce=l,this.tracingService=c,this.defaultRenderer=new Fc(t,a,s,this.tracingService)}createRenderer(t,r){if(!t||!r)return this.defaultRenderer;let i=this.getOrCreateRenderer(t,r);return i instanceof yf?i.applyToHost(t):i instanceof Lc&&i.applyStyles(),i}getOrCreateRenderer(t,r){let i=this.rendererByCompId,o=i.get(r.id);if(!o){let a=this.doc,s=this.ngZone,l=this.eventManager,c=this.sharedStylesHost,d=this.removeStylesOnCompDestroy,u=this.tracingService;switch(r.encapsulation){case qr.Emulated:o=new yf(l,c,r,this.appId,d,a,s,u);break;case qr.ShadowDom:return new vf(l,t,r,a,s,this.nonce,u,c);case qr.ExperimentalIsolatedShadowDom:return new vf(l,t,r,a,s,this.nonce,u);default:o=new Lc(l,c,r,d,a,s,u);break}i.set(r.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(t){this.rendererByCompId.delete(t)}static \u0275fac=function(r){return new(r||e)(se(Qv),se(Xv),se(Hp),se(B8),se(Xt),se(pt),se(Wp),se(di,8))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Fc=class{eventManager;doc;ngZone;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,t,r,i){this.eventManager=n,this.doc=t,this.ngZone=r,this.tracingService=i}destroy(){}destroyNode=null;createElement(n,t){return t?this.doc.createElementNS(Kv[t]||t,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,t){(SS(n)?n.content:n).appendChild(t)}insertBefore(n,t,r){n&&(SS(n)?n.content:n).insertBefore(t,r)}removeChild(n,t){t.remove()}selectRootElement(n,t){let r=typeof n=="string"?this.doc.querySelector(n):n;if(!r)throw new oe(-5104,!1);return t||(r.textContent=""),r}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,r,i){if(i){t=i+":"+t;let o=Kv[i];o?n.setAttributeNS(o,t,r):n.setAttribute(t,r)}else n.setAttribute(t,r)}removeAttribute(n,t,r){if(r){let i=Kv[r];i?n.removeAttributeNS(i,t):n.removeAttribute(`${r}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,r,i){i&(ci.DashCase|ci.Important)?n.style.setProperty(t,r,i&ci.Important?"important":""):n.style[t]=r}removeStyle(n,t,r){r&ci.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,r){n!=null&&(n[t]=r)}setValue(n,t){n.nodeValue=t}listen(n,t,r,i){if(typeof n=="string"&&(n=Ar().getGlobalEventTarget(this.doc,n),!n))throw new oe(5102,!1);let o=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(o=this.tracingService.wrapEventListener(n,t,o)),this.eventManager.addEventListener(n,t,o,i)}decoratePreventDefault(n){return t=>{if(t==="__ngUnwrap__")return n;n(t)===!1&&t.preventDefault()}}};function SS(e){return e.tagName==="TEMPLATE"&&e.content!==void 0}var vf=class extends Fc{hostEl;sharedStylesHost;shadowRoot;constructor(n,t,r,i,o,a,s,l){super(n,i,o,s),this.hostEl=t,this.sharedStylesHost=l,this.shadowRoot=t.attachShadow({mode:"open"}),this.sharedStylesHost&&this.sharedStylesHost.addHost(this.shadowRoot);let c=r.styles;c=TS(r.id,c);for(let u of c){let p=document.createElement("style");a&&p.setAttribute("nonce",a),p.textContent=u,this.shadowRoot.appendChild(p)}let d=r.getExternalStyles?.();if(d)for(let u of d){let p=Yv(u,i);a&&p.setAttribute("nonce",a),this.shadowRoot.appendChild(p)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,t){return super.appendChild(this.nodeOrShadowRoot(n),t)}insertBefore(n,t,r){return super.insertBefore(this.nodeOrShadowRoot(n),t,r)}removeChild(n,t){return super.removeChild(null,t)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost&&this.sharedStylesHost.removeHost(this.shadowRoot)}},Lc=class extends Fc{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,t,r,i,o,a,s,l){super(n,o,a,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=i;let c=r.styles;this.styles=l?TS(l,c):c,this.styleUrls=r.getExternalStyles?.(l)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&va.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},yf=class extends Lc{contentAttr;hostAttr;constructor(n,t,r,i,o,a,s,l){let c=i+"-"+r.id;super(n,t,r,o,a,s,l,c),this.contentAttr=$8(c),this.hostAttr=z8(c)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,t){let r=super.createElement(n,t);return super.setAttribute(r,this.contentAttr,""),r}};var bf=class e extends Rc{supportsDOMEvents=!0;static makeCurrent(){jv(new e)}onAndCancel(n,t,r,i){return n.addEventListener(t,r,i),()=>{n.removeEventListener(t,r,i)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.remove()}createElement(n,t){return t=t||this.getDefaultDocument(),t.createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return t==="window"?window:t==="document"?n:t==="body"?n.body:null}getBaseHref(n){let t=H8();return t==null?null:G8(t)}resetBaseElement(){Vc=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return Pc(document.cookie,n)}},Vc=null;function H8(){return Vc=Vc||document.head.querySelector("base"),Vc?Vc.getAttribute("href"):null}function G8(e){return new URL(e,document.baseURI).pathname}var q8=(()=>{class e{build(){return new XMLHttpRequest}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),IS=["alt","control","meta","shift"],W8={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Z8={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},AS=(()=>{class e extends Nc{constructor(t){super(t)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,r,i,o){let a=e.parseEventName(r),s=e.eventCallback(a.fullKey,i,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ar().onAndCancel(t,a.domEventName,s,o))}static parseEventName(t){let r=t.toLowerCase().split("."),i=r.shift();if(r.length===0||!(i==="keydown"||i==="keyup"))return null;let o=e._normalizeKey(r.pop()),a="",s=r.indexOf("code");if(s>-1&&(r.splice(s,1),a="code."),IS.forEach(c=>{let d=r.indexOf(c);d>-1&&(r.splice(d,1),a+=c+".")}),a+=o,r.length!=0||o.length===0)return null;let l={};return l.domEventName=i,l.fullKey=a,l}static matchEventFullKeyCode(t,r){let i=W8[t.key]||t.key,o="";return r.indexOf("code.")>-1&&(i=t.code,o="code."),i==null||!i?!1:(i=i.toLowerCase(),i===" "?i="space":i==="."&&(i="dot"),IS.forEach(a=>{if(a!==i){let s=Z8[a];s(t)&&(o+=a+".")}}),o+=i,o===r)}static eventCallback(t,r,i){return o=>{e.matchEventFullKeyCode(o,t)&&i.runGuarded(()=>r(o))}}static _normalizeKey(t){return t==="esc"?"escape":t}static \u0275fac=function(r){return new(r||e)(se(Xt))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();async function ey(e,n){return gS(K8(e,n))}function K8(e,n){return{platformRef:n?.platformRef,appProviders:[...eL,...e?.providers??[]],platformProviders:J8}}function Y8(){bf.makeCurrent()}function Q8(){return new Vn}function X8(){return iv(document),document}var J8=[{provide:wa,useValue:qv},{provide:Gp,useValue:Y8,multi:!0},{provide:Xt,useFactory:X8}];var eL=[{provide:dc,useValue:"root"},{provide:Vn,useFactory:Q8},{provide:xf,useClass:_f,multi:!0},{provide:xf,useClass:AS,multi:!0},jc,Xv,Qv,{provide:Hi,useExisting:jc},{provide:Sa,useClass:q8},[]];var pi=class e{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?typeof n=="string"?this.lazyInit=()=>{this.headers=new Map,n.split(` +`).forEach(t=>{let r=t.indexOf(":");if(r>0){let i=t.slice(0,r),o=t.slice(r+1).trim();this.addHeaderEntry(i,o)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((t,r)=>{this.addHeaderEntry(r,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([t,r])=>{this.setHeaderEntries(t,r)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();let t=this.headers.get(n.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,t){return this.clone({name:n,value:t,op:"a"})}set(n,t){return this.clone({name:n,value:t,op:"s"})}delete(n,t){return this.clone({name:n,value:t,op:"d"})}maybeSetNormalizedName(n,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,n)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(t=>{this.headers.set(t,n.headers.get(t)),this.normalizedNames.set(t,n.normalizedNames.get(t))})}clone(n){let t=new e;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([n]),t}applyUpdate(n){let t=n.name.toLowerCase();switch(n.op){case"a":case"s":let r=n.value;if(typeof r=="string"&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(n.name,t);let i=(n.op==="a"?this.headers.get(t):void 0)||[];i.push(...r),this.headers.set(t,i);break;case"d":let o=n.value;if(!o)this.headers.delete(t),this.normalizedNames.delete(t);else{let a=this.headers.get(t);if(!a)return;a=a.filter(s=>o.indexOf(s)===-1),a.length===0?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,a)}break}}addHeaderEntry(n,t){let r=n.toLowerCase();this.maybeSetNormalizedName(n,r),this.headers.has(r)?this.headers.get(r).push(t):this.headers.set(r,[t])}setHeaderEntries(n,t){let r=(Array.isArray(t)?t:[t]).map(o=>o.toString()),i=n.toLowerCase();this.headers.set(i,r),this.maybeSetNormalizedName(n,i)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>n(this.normalizedNames.get(t),this.headers.get(t)))}};var Cf=class{map=new Map;set(n,t){return this.map.set(n,t),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}},Ef=class{encodeKey(n){return MS(n)}encodeValue(n){return MS(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}};function tL(e,n){let t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(i=>{let o=i.indexOf("="),[a,s]=o==-1?[n.decodeKey(i),""]:[n.decodeKey(i.slice(0,o)),n.decodeValue(i.slice(o+1))],l=t.get(a)||[];l.push(s),t.set(a,l)}),t}var nL=/%(\d[a-f0-9])/gi,rL={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function MS(e){return encodeURIComponent(e).replace(nL,(n,t)=>rL[t]??n)}function wf(e){return`${e}`}var Ki=class e{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new Ef,n.fromString){if(n.fromObject)throw new oe(2805,!1);this.map=tL(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(t=>{let r=n.fromObject[t],i=Array.isArray(r)?r.map(wf):[wf(r)];this.map.set(t,i)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();let t=this.map.get(n);return t?t[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,t){return this.clone({param:n,value:t,op:"a"})}appendAll(n){let t=[];return Object.keys(n).forEach(r=>{let i=n[r];Array.isArray(i)?i.forEach(o=>{t.push({param:r,value:o,op:"a"})}):t.push({param:r,value:i,op:"a"})}),this.clone(t)}set(n,t){return this.clone({param:n,value:t,op:"s"})}delete(n,t){return this.clone({param:n,value:t,op:"d"})}toString(){return this.init(),this.keys().map(n=>{let t=this.encoder.encodeKey(n);return this.map.get(n).map(r=>t+"="+this.encoder.encodeValue(r)).join("&")}).filter(n=>n!=="").join("&")}clone(n){let t=new e({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(n),t}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":let t=(n.op==="a"?this.map.get(n.param):void 0)||[];t.push(wf(n.value)),this.map.set(n.param,t);break;case"d":if(n.value!==void 0){let r=this.map.get(n.param)||[],i=r.indexOf(wf(n.value));i!==-1&&r.splice(i,1),r.length>0?this.map.set(n.param,r):this.map.delete(n.param)}else{this.map.delete(n.param);break}}}),this.cloneFrom=this.updates=null)}};function iL(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function RS(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function PS(e){return typeof Blob<"u"&&e instanceof Blob}function OS(e){return typeof FormData<"u"&&e instanceof FormData}function oL(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}var NS="Content-Type",FS="Accept",LS="text/plain",jS="application/json",aL=`${jS}, ${LS}, */*`,Ps=class e{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;referrerPolicy;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,t,r,i){this.url=t,this.method=n.toUpperCase();let o;if(iL(this.method)||i?(this.body=r!==void 0?r:null,o=i):o=r,o){if(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,this.keepalive=!!o.keepalive,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),o.priority&&(this.priority=o.priority),o.cache&&(this.cache=o.cache),o.credentials&&(this.credentials=o.credentials),typeof o.timeout=="number"){if(o.timeout<1||!Number.isInteger(o.timeout))throw new oe(2822,"");this.timeout=o.timeout}o.mode&&(this.mode=o.mode),o.redirect&&(this.redirect=o.redirect),o.integrity&&(this.integrity=o.integrity),o.referrer&&(this.referrer=o.referrer),o.referrerPolicy&&(this.referrerPolicy=o.referrerPolicy),this.transferCache=o.transferCache}if(this.headers??=new pi,this.context??=new Cf,!this.params)this.params=new Ki,this.urlWithParams=t;else{let a=this.params.toString();if(a.length===0)this.urlWithParams=t;else{let s=t.indexOf("?"),l=s===-1?"?":sN.set(V,n.setHeaders[V]),S)),n.setParams&&(w=Object.keys(n.setParams).reduce((N,V)=>N.set(V,n.setParams[V]),w)),new e(t,r,b,{params:w,headers:S,context:P,reportProgress:y,responseType:i,withCredentials:_,transferCache:h,keepalive:o,cache:s,priority:a,timeout:v,mode:l,redirect:c,credentials:d,referrer:u,integrity:p,referrerPolicy:f})}},ka=(function(e){return e[e.Sent=0]="Sent",e[e.UploadProgress=1]="UploadProgress",e[e.ResponseHeader=2]="ResponseHeader",e[e.DownloadProgress=3]="DownloadProgress",e[e.Response=4]="Response",e[e.User=5]="User",e})(ka||{}),Ns=class{headers;status;statusText;url;ok;type;redirected;responseType;constructor(n,t=200,r="OK"){this.headers=n.headers||new pi,this.status=n.status!==void 0?n.status:t,this.statusText=n.statusText||r,this.url=n.url||null,this.redirected=n.redirected,this.responseType=n.responseType,this.ok=this.status>=200&&this.status<300}},Df=class e extends Ns{constructor(n={}){super(n)}type=ka.ResponseHeader;clone(n={}){return new e({headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}},Uc=class e extends Ns{body;constructor(n={}){super(n),this.body=n.body!==void 0?n.body:null}type=ka.Response;clone(n={}){return new e({body:n.body!==void 0?n.body:this.body,headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected,responseType:n.responseType??this.responseType})}},Os=class extends Ns{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${n.url||"(unknown url)"}`:this.message=`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}},sL=200,lL=204;var cL=new le("");var dL=/^\)\]\}',?\n/;var ny=(()=>{class e{xhrFactory;tracingService=A(di,{optional:!0});constructor(t){this.xhrFactory=t}maybePropagateTrace(t){return this.tracingService?.propagate?this.tracingService.propagate(t):t}handle(t){if(t.method==="JSONP")throw new oe(-2800,!1);let r=this.xhrFactory;return fe(null).pipe($e(()=>new De(o=>{let a=r.build();if(a.open(t.method,t.urlWithParams),t.withCredentials&&(a.withCredentials=!0),t.headers.forEach((b,_)=>a.setRequestHeader(b,_.join(","))),t.headers.has(FS)||a.setRequestHeader(FS,aL),!t.headers.has(NS)){let b=t.detectContentTypeHeader();b!==null&&a.setRequestHeader(NS,b)}if(t.timeout&&(a.timeout=t.timeout),t.responseType){let b=t.responseType.toLowerCase();a.responseType=b!=="json"?b:"text"}let s=t.serializeBody(),l=null,c=()=>{if(l!==null)return l;let b=a.statusText||"OK",_=new pi(a.getAllResponseHeaders()),y=a.responseURL||t.url;return l=new Df({headers:_,status:a.status,statusText:b,url:y}),l},d=this.maybePropagateTrace(()=>{let{headers:b,status:_,statusText:y,url:S}=c(),w=null;_!==lL&&(w=typeof a.response>"u"?a.responseText:a.response),_===0&&(_=w?sL:0);let P=_>=200&&_<300;if(t.responseType==="json"&&typeof w=="string"){let N=w;w=w.replace(dL,"");try{w=w!==""?JSON.parse(w):null}catch(V){w=N,P&&(P=!1,w={error:V,text:w})}}P?(o.next(new Uc({body:w,headers:b,status:_,statusText:y,url:S||void 0})),o.complete()):o.error(new Os({error:w,headers:b,status:_,statusText:y,url:S||void 0}))}),u=this.maybePropagateTrace(b=>{let{url:_}=c(),y=new Os({error:b,status:a.status||0,statusText:a.statusText||"Unknown Error",url:_||void 0});o.error(y)}),p=u;t.timeout&&(p=this.maybePropagateTrace(b=>{let{url:_}=c(),y=new Os({error:new DOMException("Request timed out","TimeoutError"),status:a.status||0,statusText:a.statusText||"Request timeout",url:_||void 0});o.error(y)}));let f=!1,h=this.maybePropagateTrace(b=>{f||(o.next(c()),f=!0);let _={type:ka.DownloadProgress,loaded:b.loaded};b.lengthComputable&&(_.total=b.total),t.responseType==="text"&&a.responseText&&(_.partialText=a.responseText),o.next(_)}),v=this.maybePropagateTrace(b=>{let _={type:ka.UploadProgress,loaded:b.loaded};b.lengthComputable&&(_.total=b.total),o.next(_)});return a.addEventListener("load",d),a.addEventListener("error",u),a.addEventListener("timeout",p),a.addEventListener("abort",u),t.reportProgress&&(a.addEventListener("progress",h),s!==null&&a.upload&&a.upload.addEventListener("progress",v)),a.send(s),o.next({type:ka.Sent}),()=>{a.removeEventListener("error",u),a.removeEventListener("abort",u),a.removeEventListener("load",d),a.removeEventListener("timeout",p),t.reportProgress&&(a.removeEventListener("progress",h),s!==null&&a.upload&&a.upload.removeEventListener("progress",v)),a.readyState!==a.DONE&&a.abort()}})))}static \u0275fac=function(r){return new(r||e)(se(Sa))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function uL(e,n){return n(e)}function pL(e,n,t){return(r,i)=>yn(t,()=>n(r,o=>e(o,i)))}var VS=new le("",{factory:()=>[]}),US=new le(""),BS=new le("",{factory:()=>!0});var ry=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:function(r){let i=null;return r?i=new(r||e):i=se(ny),i},providedIn:"root"})}return e})();var Sf=(()=>{class e{backend;injector;chain=null;pendingTasks=A(bs);contributeToStability=A(BS);constructor(t,r){this.backend=t,this.injector=r}handle(t){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(VS),...this.injector.get(US,[])]));this.chain=r.reduceRight((i,o)=>pL(i,o,this.injector),uL)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(t,i=>this.backend.handle(i)).pipe(jn(r))}else return this.chain(t,r=>this.backend.handle(r))}static \u0275fac=function(r){return new(r||e)(se(ry),se(Ut))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),iy=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:function(r){let i=null;return r?i=new(r||e):i=se(Sf),i},providedIn:"root"})}return e})();function ty(e,n){return{body:n,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials,credentials:e.credentials,transferCache:e.transferCache,timeout:e.timeout,keepalive:e.keepalive,priority:e.priority,cache:e.cache,mode:e.mode,redirect:e.redirect,integrity:e.integrity,referrer:e.referrer,referrerPolicy:e.referrerPolicy}}var kf=(()=>{class e{handler;constructor(t){this.handler=t}request(t,r,i={}){let o;if(t instanceof Ps)o=t;else{let l;i.headers instanceof pi?l=i.headers:l=new pi(i.headers);let c;i.params&&(i.params instanceof Ki?c=i.params:c=new Ki({fromObject:i.params})),o=new Ps(t,r,i.body!==void 0?i.body:null,{headers:l,context:i.context,params:c,reportProgress:i.reportProgress,responseType:i.responseType||"json",withCredentials:i.withCredentials,transferCache:i.transferCache,keepalive:i.keepalive,priority:i.priority,cache:i.cache,mode:i.mode,redirect:i.redirect,credentials:i.credentials,referrer:i.referrer,referrerPolicy:i.referrerPolicy,integrity:i.integrity,timeout:i.timeout})}let a=fe(o).pipe(Oi(l=>this.handler.handle(l)));if(t instanceof Ps||i.observe==="events")return a;let s=a.pipe(Je(l=>l instanceof Uc));switch(i.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return s.pipe(de(l=>{if(l.body!==null&&!(l.body instanceof ArrayBuffer))throw new oe(2806,!1);return l.body}));case"blob":return s.pipe(de(l=>{if(l.body!==null&&!(l.body instanceof Blob))throw new oe(2807,!1);return l.body}));case"text":return s.pipe(de(l=>{if(l.body!==null&&typeof l.body!="string")throw new oe(2808,!1);return l.body}));default:return s.pipe(de(l=>l.body))}case"response":return s;default:throw new oe(2809,!1)}}delete(t,r={}){return this.request("DELETE",t,r)}get(t,r={}){return this.request("GET",t,r)}head(t,r={}){return this.request("HEAD",t,r)}jsonp(t,r){return this.request("JSONP",t,{params:new Ki().append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,r={}){return this.request("OPTIONS",t,r)}patch(t,r,i={}){return this.request("PATCH",t,ty(i,r))}post(t,r,i={}){return this.request("POST",t,ty(i,r))}put(t,r,i={}){return this.request("PUT",t,ty(i,r))}static \u0275fac=function(r){return new(r||e)(se(iy))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var fL=new le("",{factory:()=>!0}),hL="XSRF-TOKEN",gL=new le("",{factory:()=>hL}),mL="X-XSRF-TOKEN",_L=new le("",{factory:()=>mL}),vL=(()=>{class e{cookieName=A(gL);doc=A(Xt);lastCookieString="";lastToken=null;parseCount=0;getToken(){let t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=Pc(t,this.cookieName),this.lastCookieString=t),this.lastToken}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),$S=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:function(r){let i=null;return r?i=new(r||e):i=se(vL),i},providedIn:"root"})}return e})();function yL(e,n){if(!A(fL)||e.method==="GET"||e.method==="HEAD")return n(e);try{let i=A(Rs).href,{origin:o}=new URL(i),{origin:a}=new URL(e.url,o);if(o!==a)return n(e)}catch{return n(e)}let t=A($S).getToken(),r=A(_L);return t!=null&&!e.headers.has(r)&&(e=e.clone({headers:e.headers.set(r,t)})),n(e)}function oy(...e){let n=[kf,Sf,{provide:iy,useExisting:Sf},{provide:ry,useFactory:()=>A(cL,{optional:!0})??A(ny)},{provide:VS,useValue:yL,multi:!0}];for(let t of e)n.push(...t.\u0275providers);return wr(n)}var zS=(()=>{class e{_doc;constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}static \u0275fac=function(r){return new(r||e)(se(Xt))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var wL={schedule(e,n){let t=setTimeout(e,n);return()=>clearTimeout(t)}};function CL(e){return e.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)}function EL(e){return!!e&&e.nodeType===Node.ELEMENT_NODE}var ay;function DL(e,n){if(!ay){let t=Element.prototype;ay=t.matches||t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector}return e.nodeType===Node.ELEMENT_NODE?ay.call(e,n):!1}function SL(e){let n={};return e.forEach(({propName:t,templateName:r,transform:i})=>{n[CL(r)]=[t,i]}),n}function kL(e,n){return n.get(To).resolveComponentFactory(e).inputs}function TL(e,n){let t=e.childNodes,r=n.map(()=>[]),i=-1;n.some((o,a)=>o==="*"?(i=a,!0):!1);for(let o=0,a=t.length;oi!=="*"&&DL(e,i)?(r=o,!0):!1),r}var AL=10,sy=class{componentFactory;inputMap=new Map;constructor(n,t){this.componentFactory=t.get(To).resolveComponentFactory(n);for(let r of this.componentFactory.inputs)this.inputMap.set(r.propName,r.templateName)}create(n){return new ly(this.componentFactory,n,this.inputMap)}},ly=class{componentFactory;injector;inputMap;eventEmitters=new ar(1);events=this.eventEmitters.pipe($e(n=>Pi(...n)));componentRef=null;scheduledDestroyFn=null;initialInputValues=new Map;ngZone;elementZone;appRef;cdScheduler;constructor(n,t,r){this.componentFactory=n,this.injector=t,this.inputMap=r,this.ngZone=this.injector.get(pt),this.appRef=this.injector.get(pr),this.cdScheduler=t.get(br),this.elementZone=typeof Zone>"u"?null:this.ngZone.run(()=>Zone.current)}connect(n){this.runInZone(()=>{if(this.scheduledDestroyFn!==null){this.scheduledDestroyFn(),this.scheduledDestroyFn=null;return}this.componentRef===null&&this.initializeComponent(n)})}disconnect(){this.runInZone(()=>{this.componentRef===null||this.scheduledDestroyFn!==null||(this.scheduledDestroyFn=wL.schedule(()=>{this.componentRef!==null&&(this.componentRef.destroy(),this.componentRef=null)},AL))})}getInputValue(n){return this.runInZone(()=>this.componentRef===null?this.initialInputValues.get(n):this.componentRef.instance[n])}setInputValue(n,t){if(this.componentRef===null){this.initialInputValues.set(n,t);return}this.runInZone(()=>{this.componentRef.setInput(this.inputMap.get(n)??n,t),Cv(this.componentRef.hostView)&&(Ev(this.componentRef.changeDetectorRef),this.cdScheduler.notify(6))})}initializeComponent(n){let t=Bt.create({providers:[],parent:this.injector}),r=TL(n,this.componentFactory.ngContentSelectors);this.componentRef=this.componentFactory.create(t,r,n),this.initializeInputs(),this.initializeOutputs(this.componentRef),this.appRef.attachView(this.componentRef.hostView),this.componentRef.hostView.detectChanges()}initializeInputs(){for(let[n,t]of this.initialInputValues)this.setInputValue(n,t);this.initialInputValues.clear()}initializeOutputs(n){let t=this.componentFactory.outputs.map(({propName:r,templateName:i})=>{let o=n.instance[r];return new De(a=>{let s=o.subscribe(l=>a.next({name:i,value:l}));return()=>s.unsubscribe()})});this.eventEmitters.next(t)}runInZone(n){return this.elementZone&&Zone.current!==this.elementZone?this.ngZone.run(n):n()}},cy=class extends HTMLElement{ngElementEventsSubscription=null};function HS(e,n){let t=kL(e,n.injector),r=n.strategyFactory||new sy(e,n.injector),i=SL(t);class o extends cy{injector;static observedAttributes=Object.keys(i);get ngElementStrategy(){if(!this._ngElementStrategy){let s=this._ngElementStrategy=r.create(this.injector||n.injector);t.forEach(({propName:l,transform:c})=>{if(!this.hasOwnProperty(l))return;let d=this[l];delete this[l],s.setInputValue(l,d,c)})}return this._ngElementStrategy}_ngElementStrategy;constructor(s){super(),this.injector=s}attributeChangedCallback(s,l,c,d){let[u,p]=i[s];this.ngElementStrategy.setInputValue(u,c,p)}connectedCallback(){let s=!1;this.ngElementStrategy.events&&(this.subscribeToEvents(),s=!0),this.ngElementStrategy.connect(this),s||this.subscribeToEvents()}disconnectedCallback(){this._ngElementStrategy&&this._ngElementStrategy.disconnect(),this.ngElementEventsSubscription&&(this.ngElementEventsSubscription.unsubscribe(),this.ngElementEventsSubscription=null)}subscribeToEvents(){this.ngElementEventsSubscription=this.ngElementStrategy.events.subscribe(s=>{let l=new CustomEvent(s.name,{detail:s.value});this.dispatchEvent(l)})}}return t.forEach(({propName:a,transform:s,isSignal:l})=>{Object.defineProperty(o.prototype,a,{get(){let c=this.ngElementStrategy.getInputValue(a);return l&&kc(c)?c():c},set(c){this.ngElementStrategy.setInputValue(a,c,s)},configurable:!0,enumerable:!0})}),o}var nt=(function(e){return e[e.State=0]="State",e[e.Transition=1]="Transition",e[e.Sequence=2]="Sequence",e[e.Group=3]="Group",e[e.Animate=4]="Animate",e[e.Keyframes=5]="Keyframes",e[e.Style=6]="Style",e[e.Trigger=7]="Trigger",e[e.Reference=8]="Reference",e[e.AnimateChild=9]="AnimateChild",e[e.AnimateRef=10]="AnimateRef",e[e.Query=11]="Query",e[e.Stagger=12]="Stagger",e})(nt||{}),Zr="*";function GS(e,n=null){return{type:nt.Sequence,steps:e,options:n}}function dy(e){return{type:nt.Style,styles:e,offset:null}}var Yi=class{_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_originalOnDoneFns=[];_originalOnStartFns=[];_started=!1;_destroyed=!1;_finished=!1;_position=0;parentPlayer=null;totalTime;constructor(n=0,t=0){this.totalTime=n+t}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(n=>n()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(n){this._position=this.totalTime?n*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(n){let t=n=="start"?this._onStartFns:this._onDoneFns;t.forEach(r=>r()),t.length=0}},Fs=class{_onDoneFns=[];_onStartFns=[];_finished=!1;_started=!1;_destroyed=!1;_onDestroyFns=[];parentPlayer=null;totalTime=0;players;constructor(n){this.players=n;let t=0,r=0,i=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(a=>{a.onDone(()=>{++t==o&&this._onFinish()}),a.onDestroy(()=>{++r==o&&this._onDestroy()}),a.onStart(()=>{++i==o&&this._onStart()})}),this.totalTime=this.players.reduce((a,s)=>Math.max(a,s.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this.players.forEach(n=>n.init())}onStart(n){this._onStartFns.push(n)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(n=>n()),this._onStartFns=[])}onDone(n){this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(n=>n.play())}pause(){this.players.forEach(n=>n.pause())}restart(){this.players.forEach(n=>n.restart())}finish(){this._onFinish(),this.players.forEach(n=>n.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(n=>n.destroy()),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}reset(){this.players.forEach(n=>n.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(n){let t=n*this.totalTime;this.players.forEach(r=>{let i=r.totalTime?Math.min(1,t/r.totalTime):1;r.setPosition(i)})}getPosition(){let n=this.players.reduce((t,r)=>t===null||r.totalTime>t.totalTime?r:t,null);return n!=null?n.getPosition():0}beforeDestroy(){this.players.forEach(n=>{n.beforeDestroy&&n.beforeDestroy()})}triggerCallback(n){let t=n=="start"?this._onStartFns:this._onDoneFns;t.forEach(r=>r()),t.length=0}},Bc="!";function qS(e){return new oe(3e3,!1)}function ML(){return new oe(3100,!1)}function RL(){return new oe(3101,!1)}function PL(e){return new oe(3001,!1)}function OL(e){return new oe(3003,!1)}function NL(e){return new oe(3004,!1)}function ZS(e,n){return new oe(3005,!1)}function KS(){return new oe(3006,!1)}function YS(){return new oe(3007,!1)}function QS(e,n){return new oe(3008,!1)}function XS(e){return new oe(3002,!1)}function JS(e,n,t,r,i){return new oe(3010,!1)}function ek(){return new oe(3011,!1)}function tk(){return new oe(3012,!1)}function nk(){return new oe(3200,!1)}function rk(){return new oe(3202,!1)}function ik(){return new oe(3013,!1)}function ok(e){return new oe(3014,!1)}function ak(e){return new oe(3015,!1)}function sk(e){return new oe(3016,!1)}function lk(e,n){return new oe(3404,!1)}function FL(e){return new oe(3502,!1)}function ck(e){return new oe(3503,!1)}function dk(){return new oe(3300,!1)}function uk(e){return new oe(3504,!1)}function pk(e){return new oe(3301,!1)}function fk(e,n){return new oe(3302,!1)}function hk(e){return new oe(3303,!1)}function gk(e,n){return new oe(3400,!1)}function mk(e){return new oe(3401,!1)}function _k(e){return new oe(3402,!1)}function vk(e,n){return new oe(3505,!1)}function Qi(e){switch(e.length){case 0:return new Yi;case 1:return e[0];default:return new Fs(e)}}function hy(e,n,t=new Map,r=new Map){let i=[],o=[],a=-1,s=null;if(n.forEach(l=>{let c=l.get("offset"),d=c==a,u=d&&s||new Map;l.forEach((p,f)=>{let h=f,v=p;if(f!=="offset")switch(h=e.normalizePropertyName(h,i),v){case Bc:v=t.get(f);break;case Zr:v=r.get(f);break;default:v=e.normalizeStyleValue(f,h,v,i);break}u.set(h,v)}),d||o.push(u),s=u,a=c}),i.length)throw FL(i);return o}function Tf(e,n,t,r){switch(n){case"start":e.onStart(()=>r(t&&uy(t,"start",e)));break;case"done":e.onDone(()=>r(t&&uy(t,"done",e)));break;case"destroy":e.onDestroy(()=>r(t&&uy(t,"destroy",e)));break}}function uy(e,n,t){let r=t.totalTime,i=!!t.disabled,o=If(e.element,e.triggerName,e.fromState,e.toState,n||e.phaseName,r??e.totalTime,i),a=e._data;return a!=null&&(o._data=a),o}function If(e,n,t,r,i="",o=0,a){return{element:e,triggerName:n,fromState:t,toState:r,phaseName:i,totalTime:o,disabled:!!a}}function Xn(e,n,t){let r=e.get(n);return r||e.set(n,r=t),r}function gy(e){let n=e.indexOf(":"),t=e.substring(1,n),r=e.slice(n+1);return[t,r]}var LL=typeof document>"u"?null:document.documentElement;function Af(e){let n=e.parentNode||e.host||null;return n===LL?null:n}function jL(e){return e.substring(1,6)=="ebkit"}var Ta=null,WS=!1;function yk(e){Ta||(Ta=VL()||{},WS=Ta.style?"WebkitAppearance"in Ta.style:!1);let n=!0;return Ta.style&&!jL(e)&&(n=e in Ta.style,!n&&WS&&(n="Webkit"+e.charAt(0).toUpperCase()+e.slice(1)in Ta.style)),n}function VL(){return typeof document<"u"?document.body:null}function my(e,n){for(;n;){if(n===e)return!0;n=Af(n)}return!1}function _y(e,n,t){if(t)return Array.from(e.querySelectorAll(n));let r=e.querySelector(n);return r?[r]:[]}var UL=1e3,vy="{{",BL="}}",yy="ng-enter",Mf="ng-leave",$c="ng-trigger",zc=".ng-trigger",xy="ng-animating",Rf=".ng-animating";function fi(e){if(typeof e=="number")return e;let n=e.match(/^(-?[\.\d]+)(m?s)/);return!n||n.length<2?0:py(parseFloat(n[1]),n[2])}function py(e,n){return n==="s"?e*UL:e}function Hc(e,n,t){return e.hasOwnProperty("duration")?e:zL(e,n,t)}var $L=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function zL(e,n,t){let r,i=0,o="";if(typeof e=="string"){let a=e.match($L);if(a===null)return n.push(qS(e)),{duration:0,delay:0,easing:""};r=py(parseFloat(a[1]),a[2]);let s=a[3];s!=null&&(i=py(parseFloat(s),a[4]));let l=a[5];l&&(o=l)}else r=e;if(!t){let a=!1,s=n.length;r<0&&(n.push(ML()),a=!0),i<0&&(n.push(RL()),a=!0),a&&n.splice(s,0,qS(e))}return{duration:r,delay:i,easing:o}}function xk(e){return e.length?e[0]instanceof Map?e:e.map(n=>new Map(Object.entries(n))):[]}function Kr(e,n,t){n.forEach((r,i)=>{let o=Pf(i);t&&!t.has(i)&&t.set(i,e.style[o]),e.style[o]=r})}function Ro(e,n){n.forEach((t,r)=>{let i=Pf(r);e.style[i]=""})}function Ls(e){return Array.isArray(e)?e.length==1?e[0]:GS(e):e}function bk(e,n,t){let r=n.params||{},i=by(e);i.length&&i.forEach(o=>{r.hasOwnProperty(o)||t.push(PL(o))})}var fy=new RegExp(`${vy}\\s*(.+?)\\s*${BL}`,"g");function by(e){let n=[];if(typeof e=="string"){let t;for(;t=fy.exec(e);)n.push(t[1]);fy.lastIndex=0}return n}function js(e,n,t){let r=`${e}`,i=r.replace(fy,(o,a)=>{let s=n[a];return s==null&&(t.push(OL(a)),s=""),s.toString()});return i==r?e:i}var HL=/-+([a-z0-9])/g;function Pf(e){return e.replace(HL,(...n)=>n[1].toUpperCase())}function wk(e,n){return e===0||n===0}function Ck(e,n,t){if(t.size&&n.length){let r=n[0],i=[];if(t.forEach((o,a)=>{r.has(a)||i.push(a),r.set(a,o)}),i.length)for(let o=1;oa.set(s,Of(e,s)))}}return n}function Jn(e,n,t){switch(n.type){case nt.Trigger:return e.visitTrigger(n,t);case nt.State:return e.visitState(n,t);case nt.Transition:return e.visitTransition(n,t);case nt.Sequence:return e.visitSequence(n,t);case nt.Group:return e.visitGroup(n,t);case nt.Animate:return e.visitAnimate(n,t);case nt.Keyframes:return e.visitKeyframes(n,t);case nt.Style:return e.visitStyle(n,t);case nt.Reference:return e.visitReference(n,t);case nt.AnimateChild:return e.visitAnimateChild(n,t);case nt.AnimateRef:return e.visitAnimateRef(n,t);case nt.Query:return e.visitQuery(n,t);case nt.Stagger:return e.visitStagger(n,t);default:throw NL(n.type)}}function Of(e,n){return window.getComputedStyle(e)[n]}var jy=(()=>{class e{validateStyleProperty(t){return yk(t)}containsElement(t,r){return my(t,r)}getParentElement(t){return Af(t)}query(t,r,i){return _y(t,r,i)}computeStyle(t,r,i){return i||""}animate(t,r,i,o,a,s=[],l){return new Yi(i,o)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})(),Aa=class{static NOOP=new jy},Ma=class{};var GL=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),Vf=class extends Ma{normalizePropertyName(n,t){return Pf(n)}normalizeStyleValue(n,t,r,i){let o="",a=r.toString().trim();if(GL.has(t)&&r!==0&&r!=="0")if(typeof r=="number")o="px";else{let s=r.match(/^[+-]?[\d\.]+([a-z]*)$/);s&&s[1].length==0&&i.push(ZS(n,r))}return a+o}};var Uf="*";function qL(e,n){let t=[];return typeof e=="string"?e.split(/\s*,\s*/).forEach(r=>WL(r,t,n)):t.push(e),t}function WL(e,n,t){if(e[0]==":"){let l=ZL(e,t);if(typeof l=="function"){n.push(l);return}e=l}let r=e.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(r==null||r.length<4)return t.push(ak(e)),n;let i=r[1],o=r[2],a=r[3];n.push(Ek(i,a));let s=i==Uf&&a==Uf;o[0]=="<"&&!s&&n.push(Ek(a,i))}function ZL(e,n){switch(e){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,r)=>parseFloat(r)>parseFloat(t);case":decrement":return(t,r)=>parseFloat(r) *"}}var Nf=new Set(["true","1"]),Ff=new Set(["false","0"]);function Ek(e,n){let t=Nf.has(e)||Ff.has(e),r=Nf.has(n)||Ff.has(n);return(i,o)=>{let a=e==Uf||e==i,s=n==Uf||n==o;return!a&&t&&typeof i=="boolean"&&(a=i?Nf.has(e):Ff.has(e)),!s&&r&&typeof o=="boolean"&&(s=o?Nf.has(n):Ff.has(n)),a&&s}}var Ok=":self",KL=new RegExp(`s*${Ok}s*,?`,"g");function Nk(e,n,t,r){return new ky(e).build(n,t,r)}var Dk="",ky=class{_driver;constructor(n){this._driver=n}build(n,t,r){let i=new Ty(t);return this._resetContextStyleTimingState(i),Jn(this,Ls(n),i)}_resetContextStyleTimingState(n){n.currentQuerySelector=Dk,n.collectedStyles=new Map,n.collectedStyles.set(Dk,new Map),n.currentTime=0}visitTrigger(n,t){let r=t.queryCount=0,i=t.depCount=0,o=[],a=[];return n.name.charAt(0)=="@"&&t.errors.push(KS()),n.definitions.forEach(s=>{if(this._resetContextStyleTimingState(t),s.type==nt.State){let l=s,c=l.name;c.toString().split(/\s*,\s*/).forEach(d=>{l.name=d,o.push(this.visitState(l,t))}),l.name=c}else if(s.type==nt.Transition){let l=this.visitTransition(s,t);r+=l.queryCount,i+=l.depCount,a.push(l)}else t.errors.push(YS())}),{type:nt.Trigger,name:n.name,states:o,transitions:a,queryCount:r,depCount:i,options:null}}visitState(n,t){let r=this.visitStyle(n.styles,t),i=n.options&&n.options.params||null;if(r.containsDynamicStyles){let o=new Set,a=i||{};r.styles.forEach(s=>{s instanceof Map&&s.forEach(l=>{by(l).forEach(c=>{a.hasOwnProperty(c)||o.add(c)})})}),o.size&&t.errors.push(QS(n.name,[...o.values()]))}return{type:nt.State,name:n.name,style:r,options:i?{params:i}:null}}visitTransition(n,t){t.queryCount=0,t.depCount=0;let r=Jn(this,Ls(n.animation),t),i=qL(n.expr,t.errors);return{type:nt.Transition,matchers:i,animation:r,queryCount:t.queryCount,depCount:t.depCount,options:Ia(n.options)}}visitSequence(n,t){return{type:nt.Sequence,steps:n.steps.map(r=>Jn(this,r,t)),options:Ia(n.options)}}visitGroup(n,t){let r=t.currentTime,i=0,o=n.steps.map(a=>{t.currentTime=r;let s=Jn(this,a,t);return i=Math.max(i,t.currentTime),s});return t.currentTime=i,{type:nt.Group,steps:o,options:Ia(n.options)}}visitAnimate(n,t){let r=JL(n.timings,t.errors);t.currentAnimateTimings=r;let i,o=n.styles?n.styles:dy({});if(o.type==nt.Keyframes)i=this.visitKeyframes(o,t);else{let a=n.styles,s=!1;if(!a){s=!0;let c={};r.easing&&(c.easing=r.easing),a=dy(c)}t.currentTime+=r.duration+r.delay;let l=this.visitStyle(a,t);l.isEmptyStep=s,i=l}return t.currentAnimateTimings=null,{type:nt.Animate,timings:r,style:i,options:null}}visitStyle(n,t){let r=this._makeStyleAst(n,t);return this._validateStyleAst(r,t),r}_makeStyleAst(n,t){let r=[],i=Array.isArray(n.styles)?n.styles:[n.styles];for(let s of i)typeof s=="string"?s===Zr?r.push(s):t.errors.push(XS(s)):r.push(new Map(Object.entries(s)));let o=!1,a=null;return r.forEach(s=>{if(s instanceof Map&&(s.has("easing")&&(a=s.get("easing"),s.delete("easing")),!o)){for(let l of s.values())if(l.toString().indexOf(vy)>=0){o=!0;break}}}),{type:nt.Style,styles:r,easing:a,offset:n.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(n,t){let r=t.currentAnimateTimings,i=t.currentTime,o=t.currentTime;r&&o>0&&(o-=r.duration+r.delay),n.styles.forEach(a=>{typeof a!="string"&&a.forEach((s,l)=>{let c=t.collectedStyles.get(t.currentQuerySelector),d=c.get(l),u=!0;d&&(o!=i&&o>=d.startTime&&i<=d.endTime&&(t.errors.push(JS(l,d.startTime,d.endTime,o,i)),u=!1),o=d.startTime),u&&c.set(l,{startTime:o,endTime:i}),t.options&&bk(s,t.options,t.errors)})})}visitKeyframes(n,t){let r={type:nt.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(ek()),r;let i=1,o=0,a=[],s=!1,l=!1,c=0,d=n.steps.map(_=>{let y=this._makeStyleAst(_,t),S=y.offset!=null?y.offset:XL(y.styles),w=0;return S!=null&&(o++,w=y.offset=S),l=l||w<0||w>1,s=s||w0&&o{let S=p>0?y==f?1:p*y:a[y],w=S*b;t.currentTime=h+v.delay+w,v.duration=w,this._validateStyleAst(_,t),_.offset=S,r.styles.push(_)}),r}visitReference(n,t){return{type:nt.Reference,animation:Jn(this,Ls(n.animation),t),options:Ia(n.options)}}visitAnimateChild(n,t){return t.depCount++,{type:nt.AnimateChild,options:Ia(n.options)}}visitAnimateRef(n,t){return{type:nt.AnimateRef,animation:this.visitReference(n.animation,t),options:Ia(n.options)}}visitQuery(n,t){let r=t.currentQuerySelector,i=n.options||{};t.queryCount++,t.currentQuery=n;let[o,a]=YL(n.selector);t.currentQuerySelector=r.length?r+" "+o:o,Xn(t.collectedStyles,t.currentQuerySelector,new Map);let s=Jn(this,Ls(n.animation),t);return t.currentQuery=null,t.currentQuerySelector=r,{type:nt.Query,selector:o,limit:i.limit||0,optional:!!i.optional,includeSelf:a,animation:s,originalSelector:n.selector,options:Ia(n.options)}}visitStagger(n,t){t.currentQuery||t.errors.push(ik());let r=n.timings==="full"?{duration:0,delay:0,easing:"full"}:Hc(n.timings,t.errors,!0);return{type:nt.Stagger,animation:Jn(this,Ls(n.animation),t),timings:r,options:null}}};function YL(e){let n=!!e.split(/\s*,\s*/).find(t=>t==Ok);return n&&(e=e.replace(KL,"")),e=e.replace(/@\*/g,zc).replace(/@\w+/g,t=>zc+"-"+t.slice(1)).replace(/:animating/g,Rf),[e,n]}function QL(e){return e?R({},e):null}var Ty=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(n){this.errors=n}};function XL(e){if(typeof e=="string")return null;let n=null;if(Array.isArray(e))e.forEach(t=>{if(t instanceof Map&&t.has("offset")){let r=t;n=parseFloat(r.get("offset")),r.delete("offset")}});else if(e instanceof Map&&e.has("offset")){let t=e;n=parseFloat(t.get("offset")),t.delete("offset")}return n}function JL(e,n){if(e.hasOwnProperty("duration"))return e;if(typeof e=="number"){let o=Hc(e,n).duration;return wy(o,0,"")}let t=e;if(t.split(/\s+/).some(o=>o.charAt(0)=="{"&&o.charAt(1)=="{")){let o=wy(0,0,"");return o.dynamic=!0,o.strValue=t,o}let i=Hc(t,n);return wy(i.duration,i.delay,i.easing)}function Ia(e){return e?(e=R({},e),e.params&&(e.params=QL(e.params))):e={},e}function wy(e,n,t){return{duration:e,delay:n,easing:t}}function Vy(e,n,t,r,i,o,a=null,s=!1){return{type:1,element:e,keyframes:n,preStyleProps:t,postStyleProps:r,duration:i,delay:o,totalTime:i+o,easing:a,subTimeline:s}}var qc=class{_map=new Map;get(n){return this._map.get(n)||[]}append(n,t){let r=this._map.get(n);r||this._map.set(n,r=[]),r.push(...t)}has(n){return this._map.has(n)}clear(){this._map.clear()}},e6=1,t6=":enter",n6=new RegExp(t6,"g"),r6=":leave",i6=new RegExp(r6,"g");function Fk(e,n,t,r,i,o=new Map,a=new Map,s,l,c=[]){return new Iy().buildKeyframes(e,n,t,r,i,o,a,s,l,c)}var Iy=class{buildKeyframes(n,t,r,i,o,a,s,l,c,d=[]){c=c||new qc;let u=new Ay(n,t,c,i,o,d,[]);u.options=l;let p=l.delay?fi(l.delay):0;u.currentTimeline.delayNextStep(p),u.currentTimeline.setStyles([a],null,u.errors,l),Jn(this,r,u);let f=u.timelines.filter(h=>h.containsAnimation());if(f.length&&s.size){let h;for(let v=f.length-1;v>=0;v--){let b=f[v];if(b.element===t){h=b;break}}h&&!h.allowOnlyTimelineStyles()&&h.setStyles([s],null,u.errors,l)}return f.length?f.map(h=>h.buildKeyframes()):[Vy(t,[],[],[],0,p,"",!1)]}visitTrigger(n,t){}visitState(n,t){}visitTransition(n,t){}visitAnimateChild(n,t){let r=t.subInstructions.get(t.element);if(r){let i=t.createSubContext(n.options),o=t.currentTimeline.currentTime,a=this._visitSubInstructions(r,i,i.options);o!=a&&t.transformIntoNewTimeline(a)}t.previousNode=n}visitAnimateRef(n,t){let r=t.createSubContext(n.options);r.transformIntoNewTimeline(),this._applyAnimationRefDelays([n.options,n.animation.options],t,r),this.visitReference(n.animation,r),t.transformIntoNewTimeline(r.currentTimeline.currentTime),t.previousNode=n}_applyAnimationRefDelays(n,t,r){for(let i of n){let o=i?.delay;if(o){let a=typeof o=="number"?o:fi(js(o,i?.params??{},t.errors));r.delayNextStep(a)}}}_visitSubInstructions(n,t,r){let o=t.currentTimeline.currentTime,a=r.duration!=null?fi(r.duration):null,s=r.delay!=null?fi(r.delay):null;return a!==0&&n.forEach(l=>{let c=t.appendInstructionToTimeline(l,a,s);o=Math.max(o,c.duration+c.delay)}),o}visitReference(n,t){t.updateOptions(n.options,!0),Jn(this,n.animation,t),t.previousNode=n}visitSequence(n,t){let r=t.subContextCount,i=t,o=n.options;if(o&&(o.params||o.delay)&&(i=t.createSubContext(o),i.transformIntoNewTimeline(),o.delay!=null)){i.previousNode.type==nt.Style&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Bf);let a=fi(o.delay);i.delayNextStep(a)}n.steps.length&&(n.steps.forEach(a=>Jn(this,a,i)),i.currentTimeline.applyStylesToKeyframe(),i.subContextCount>r&&i.transformIntoNewTimeline()),t.previousNode=n}visitGroup(n,t){let r=[],i=t.currentTimeline.currentTime,o=n.options&&n.options.delay?fi(n.options.delay):0;n.steps.forEach(a=>{let s=t.createSubContext(n.options);o&&s.delayNextStep(o),Jn(this,a,s),i=Math.max(i,s.currentTimeline.currentTime),r.push(s.currentTimeline)}),r.forEach(a=>t.currentTimeline.mergeTimelineCollectedStyles(a)),t.transformIntoNewTimeline(i),t.previousNode=n}_visitTiming(n,t){if(n.dynamic){let r=n.strValue,i=t.params?js(r,t.params,t.errors):r;return Hc(i,t.errors)}else return{duration:n.duration,delay:n.delay,easing:n.easing}}visitAnimate(n,t){let r=t.currentAnimateTimings=this._visitTiming(n.timings,t),i=t.currentTimeline;r.delay&&(t.incrementTime(r.delay),i.snapshotCurrentStyles());let o=n.style;o.type==nt.Keyframes?this.visitKeyframes(o,t):(t.incrementTime(r.duration),this.visitStyle(o,t),i.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=n}visitStyle(n,t){let r=t.currentTimeline,i=t.currentAnimateTimings;!i&&r.hasCurrentStyleProperties()&&r.forwardFrame();let o=i&&i.easing||n.easing;n.isEmptyStep?r.applyEmptyStep(o):r.setStyles(n.styles,o,t.errors,t.options),t.previousNode=n}visitKeyframes(n,t){let r=t.currentAnimateTimings,i=t.currentTimeline.duration,o=r.duration,s=t.createSubContext().currentTimeline;s.easing=r.easing,n.styles.forEach(l=>{let c=l.offset||0;s.forwardTime(c*o),s.setStyles(l.styles,l.easing,t.errors,t.options),s.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(s),t.transformIntoNewTimeline(i+o),t.previousNode=n}visitQuery(n,t){let r=t.currentTimeline.currentTime,i=n.options||{},o=i.delay?fi(i.delay):0;o&&(t.previousNode.type===nt.Style||r==0&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=Bf);let a=r,s=t.invokeQuery(n.selector,n.originalSelector,n.limit,n.includeSelf,!!i.optional,t.errors);t.currentQueryTotal=s.length;let l=null;s.forEach((c,d)=>{t.currentQueryIndex=d;let u=t.createSubContext(n.options,c);o&&u.delayNextStep(o),c===t.element&&(l=u.currentTimeline),Jn(this,n.animation,u),u.currentTimeline.applyStylesToKeyframe();let p=u.currentTimeline.currentTime;a=Math.max(a,p)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(a),l&&(t.currentTimeline.mergeTimelineCollectedStyles(l),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=n}visitStagger(n,t){let r=t.parentContext,i=t.currentTimeline,o=n.timings,a=Math.abs(o.duration),s=a*(t.currentQueryTotal-1),l=a*t.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=s-l;break;case"full":l=r.currentStaggerTime;break}let d=t.currentTimeline;l&&d.delayNextStep(l);let u=d.currentTime;Jn(this,n.animation,t),t.previousNode=n,r.currentStaggerTime=i.currentTime-u+(i.startTime-r.currentTimeline.startTime)}},Bf={},Ay=class e{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=Bf;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(n,t,r,i,o,a,s,l){this._driver=n,this.element=t,this.subInstructions=r,this._enterClassName=i,this._leaveClassName=o,this.errors=a,this.timelines=s,this.currentTimeline=l||new $f(this._driver,t,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(n,t){if(!n)return;let r=n,i=this.options;r.duration!=null&&(i.duration=fi(r.duration)),r.delay!=null&&(i.delay=fi(r.delay));let o=r.params;if(o){let a=i.params;a||(a=this.options.params={}),Object.keys(o).forEach(s=>{(!t||!a.hasOwnProperty(s))&&(a[s]=js(o[s],a,this.errors))})}}_copyOptions(){let n={};if(this.options){let t=this.options.params;if(t){let r=n.params={};Object.keys(t).forEach(i=>{r[i]=t[i]})}}return n}createSubContext(n=null,t,r){let i=t||this.element,o=new e(this._driver,i,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(i,r||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(n),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(n){return this.previousNode=Bf,this.currentTimeline=this.currentTimeline.fork(this.element,n),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(n,t,r){let i={duration:t??n.duration,delay:this.currentTimeline.currentTime+(r??0)+n.delay,easing:""},o=new My(this._driver,n.element,n.keyframes,n.preStyleProps,n.postStyleProps,i,n.stretchStartingKeyframe);return this.timelines.push(o),i}incrementTime(n){this.currentTimeline.forwardTime(this.currentTimeline.duration+n)}delayNextStep(n){n>0&&this.currentTimeline.delayNextStep(n)}invokeQuery(n,t,r,i,o,a){let s=[];if(i&&s.push(this.element),n.length>0){n=n.replace(n6,"."+this._enterClassName),n=n.replace(i6,"."+this._leaveClassName);let l=r!=1,c=this._driver.query(this.element,n,l);r!==0&&(c=r<0?c.slice(c.length+r,c.length):c.slice(0,r)),s.push(...c)}return!o&&s.length==0&&a.push(ok(t)),s}},$f=class e{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(n,t,r,i){this._driver=n,this.element=t,this.startTime=r,this._elementTimelineStylesLookup=i,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(n){let t=this._keyframes.size===1&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+n),t&&this.snapshotCurrentStyles()):this.startTime+=n}fork(n,t){return this.applyStylesToKeyframe(),new e(this._driver,n,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=e6,this._loadKeyframe()}forwardTime(n){this.applyStylesToKeyframe(),this.duration=n,this._loadKeyframe()}_updateStyle(n,t){this._localTimelineStyles.set(n,t),this._globalTimelineStyles.set(n,t),this._styleSummary.set(n,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(n){n&&this._previousKeyframe.set("easing",n);for(let[t,r]of this._globalTimelineStyles)this._backFill.set(t,r||Zr),this._currentKeyframe.set(t,Zr);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(n,t,r,i){t&&this._previousKeyframe.set("easing",t);let o=i&&i.params||{},a=o6(n,this._globalTimelineStyles);for(let[s,l]of a){let c=js(l,o,r);this._pendingStyles.set(s,c),this._localTimelineStyles.has(s)||this._backFill.set(s,this._globalTimelineStyles.get(s)??Zr),this._updateStyle(s,c)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((n,t)=>{this._currentKeyframe.set(t,n)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((n,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,n)}))}snapshotCurrentStyles(){for(let[n,t]of this._localTimelineStyles)this._pendingStyles.set(n,t),this._updateStyle(n,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let n=[];for(let t in this._currentKeyframe)n.push(t);return n}mergeTimelineCollectedStyles(n){n._styleSummary.forEach((t,r)=>{let i=this._styleSummary.get(r);(!i||t.time>i.time)&&this._updateStyle(r,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();let n=new Set,t=new Set,r=this._keyframes.size===1&&this.duration===0,i=[];this._keyframes.forEach((s,l)=>{let c=new Map([...this._backFill,...s]);c.forEach((d,u)=>{d===Bc?n.add(u):d===Zr&&t.add(u)}),r||c.set("offset",l/this.duration),i.push(c)});let o=[...n.values()],a=[...t.values()];if(r){let s=i[0],l=new Map(s);s.set("offset",0),l.set("offset",1),i=[s,l]}return Vy(this.element,i,o,a,this.duration,this.startTime,this.easing,!1)}},My=class extends $f{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(n,t,r,i,o,a,s=!1){super(n,t,a.delay),this.keyframes=r,this.preStyleProps=i,this.postStyleProps=o,this._stretchStartingKeyframe=s,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let n=this.keyframes,{delay:t,duration:r,easing:i}=this.timings;if(this._stretchStartingKeyframe&&t){let o=[],a=r+t,s=t/a,l=new Map(n[0]);l.set("offset",0),o.push(l);let c=new Map(n[0]);c.set("offset",Sk(s)),o.push(c);let d=n.length-1;for(let u=1;u<=d;u++){let p=new Map(n[u]),f=p.get("offset"),h=t+f*r;p.set("offset",Sk(h/a)),o.push(p)}r=a,t=0,i="",n=o}return Vy(this.element,n,this.preStyleProps,this.postStyleProps,r,t,i,!0)}};function Sk(e,n=3){let t=Math.pow(10,n-1);return Math.round(e*t)/t}function o6(e,n){let t=new Map,r;return e.forEach(i=>{if(i==="*"){r??=n.keys();for(let o of r)t.set(o,Zr)}else for(let[o,a]of i)t.set(o,a)}),t}function kk(e,n,t,r,i,o,a,s,l,c,d,u,p){return{type:0,element:e,triggerName:n,isRemovalTransition:i,fromState:t,fromStyles:o,toState:r,toStyles:a,timelines:s,queriedElements:l,preStyleProps:c,postStyleProps:d,totalTime:u,errors:p}}var Cy={},zf=class{_triggerName;ast;_stateStyles;constructor(n,t,r){this._triggerName=n,this.ast=t,this._stateStyles=r}match(n,t,r,i){return a6(this.ast.matchers,n,t,r,i)}buildStyles(n,t,r){let i=this._stateStyles.get("*");return n!==void 0&&(i=this._stateStyles.get(n?.toString())||i),i?i.buildStyles(t,r):new Map}build(n,t,r,i,o,a,s,l,c,d){let u=[],p=this.ast.options&&this.ast.options.params||Cy,f=s&&s.params||Cy,h=this.buildStyles(r,f,u),v=l&&l.params||Cy,b=this.buildStyles(i,v,u),_=new Set,y=new Map,S=new Map,w=i==="void",P={params:Lk(v,p),delay:this.ast.options?.delay},N=d?[]:Fk(n,t,this.ast.animation,o,a,h,b,P,c,u),V=0;return N.forEach(M=>{V=Math.max(M.duration+M.delay,V)}),u.length?kk(t,this._triggerName,r,i,w,h,b,[],[],y,S,V,u):(N.forEach(M=>{let K=M.element,Y=Xn(y,K,new Set);M.preStyleProps.forEach(I=>Y.add(I));let T=Xn(S,K,new Set);M.postStyleProps.forEach(I=>T.add(I)),K!==t&&_.add(K)}),kk(t,this._triggerName,r,i,w,h,b,N,[..._.values()],y,S,V))}};function a6(e,n,t,r,i){return e.some(o=>o(n,t,r,i))}function Lk(e,n){let t=R({},n);return Object.entries(e).forEach(([r,i])=>{i!=null&&(t[r]=i)}),t}var Ry=class{styles;defaultParams;normalizer;constructor(n,t,r){this.styles=n,this.defaultParams=t,this.normalizer=r}buildStyles(n,t){let r=new Map,i=Lk(n,this.defaultParams);return this.styles.styles.forEach(o=>{typeof o!="string"&&o.forEach((a,s)=>{a&&(a=js(a,i,t));let l=this.normalizer.normalizePropertyName(s,t);a=this.normalizer.normalizeStyleValue(s,l,a,t),r.set(s,a)})}),r}};function s6(e,n,t){return new Py(e,n,t)}var Py=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(n,t,r){this.name=n,this.ast=t,this._normalizer=r,t.states.forEach(i=>{let o=i.options&&i.options.params||{};this.states.set(i.name,new Ry(i.style,o,r))}),Tk(this.states,"true","1"),Tk(this.states,"false","0"),t.transitions.forEach(i=>{this.transitionFactories.push(new zf(n,i,this.states))}),this.fallbackTransition=l6(n,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(n,t,r,i){return this.transitionFactories.find(a=>a.match(n,t,r,i))||null}matchStyles(n,t,r){return this.fallbackTransition.buildStyles(n,t,r)}};function l6(e,n,t){let r=[(a,s)=>!0],i={type:nt.Sequence,steps:[],options:null},o={type:nt.Transition,animation:i,matchers:r,options:null,queryCount:0,depCount:0};return new zf(e,o,n)}function Tk(e,n,t){e.has(n)?e.has(t)||e.set(t,e.get(n)):e.has(t)&&e.set(n,e.get(t))}var c6=new qc,Oy=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(n,t,r){this.bodyNode=n,this._driver=t,this._normalizer=r}register(n,t){let r=[],i=[],o=Nk(this._driver,t,r,i);if(r.length)throw ck(r);this._animations.set(n,o)}_buildPlayer(n,t,r){let i=n.element,o=hy(this._normalizer,n.keyframes,t,r);return this._driver.animate(i,o,n.duration,n.delay,n.easing,[],!0)}create(n,t,r={}){let i=[],o=this._animations.get(n),a,s=new Map;if(o?(a=Fk(this._driver,t,o,yy,Mf,new Map,new Map,r,c6,i),a.forEach(d=>{let u=Xn(s,d.element,new Map);d.postStyleProps.forEach(p=>u.set(p,null))})):(i.push(dk()),a=[]),i.length)throw uk(i);s.forEach((d,u)=>{d.forEach((p,f)=>{d.set(f,this._driver.computeStyle(u,f,Zr))})});let l=a.map(d=>{let u=s.get(d.element);return this._buildPlayer(d,new Map,u)}),c=Qi(l);return this._playersById.set(n,c),c.onDestroy(()=>this.destroy(n)),this.players.push(c),c}destroy(n){let t=this._getPlayer(n);t.destroy(),this._playersById.delete(n);let r=this.players.indexOf(t);r>=0&&this.players.splice(r,1)}_getPlayer(n){let t=this._playersById.get(n);if(!t)throw pk(n);return t}listen(n,t,r,i){let o=If(t,"","","");return Tf(this._getPlayer(n),r,o,i),()=>{}}command(n,t,r,i){if(r=="register"){this.register(n,i[0]);return}if(r=="create"){let a=i[0]||{};this.create(n,t,a);return}let o=this._getPlayer(n);switch(r){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(n);break}}},Ik="ng-animate-queued",d6=".ng-animate-queued",Ey="ng-animate-disabled",u6=".ng-animate-disabled",p6="ng-star-inserted",f6=".ng-star-inserted",h6=[],jk={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},g6={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Yr="__ng_removed",Wc=class{namespaceId;value;options;get params(){return this.options.params}constructor(n,t=""){this.namespaceId=t;let r=n&&n.hasOwnProperty("value"),i=r?n.value:n;if(this.value=_6(i),r){let o=n,{value:a}=o,s=bg(o,["value"]);this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(n){let t=n.params;if(t){let r=this.options.params;Object.keys(t).forEach(i=>{r[i]==null&&(r[i]=t[i])})}}},Gc="void",Dy=new Wc(Gc),Ny=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(n,t,r){this.id=n,this.hostElement=t,this._engine=r,this._hostClassName="ng-tns-"+n,Mr(t,this._hostClassName)}listen(n,t,r,i){if(!this._triggers.has(t))throw fk(r,t);if(r==null||r.length==0)throw hk(t);if(!v6(r))throw gk(r,t);let o=Xn(this._elementListeners,n,[]),a={name:t,phase:r,callback:i};o.push(a);let s=Xn(this._engine.statesByElement,n,new Map);return s.has(t)||(Mr(n,$c),Mr(n,$c+"-"+t),s.set(t,Dy)),()=>{this._engine.afterFlush(()=>{let l=o.indexOf(a);l>=0&&o.splice(l,1),this._triggers.has(t)||s.delete(t)})}}register(n,t){return this._triggers.has(n)?!1:(this._triggers.set(n,t),!0)}_getTrigger(n){let t=this._triggers.get(n);if(!t)throw mk(n);return t}trigger(n,t,r,i=!0){let o=this._getTrigger(t),a=new Zc(this.id,t,n),s=this._engine.statesByElement.get(n);s||(Mr(n,$c),Mr(n,$c+"-"+t),this._engine.statesByElement.set(n,s=new Map));let l=s.get(t),c=new Wc(r,this.id);if(!(r&&r.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),s.set(t,c),l||(l=Dy),!(c.value===Gc)&&l.value===c.value){if(!b6(l.params,c.params)){let v=[],b=o.matchStyles(l.value,l.params,v),_=o.matchStyles(c.value,c.params,v);v.length?this._engine.reportError(v):this._engine.afterFlush(()=>{Ro(n,b),Kr(n,_)})}return}let p=Xn(this._engine.playersByElement,n,[]);p.forEach(v=>{v.namespaceId==this.id&&v.triggerName==t&&v.queued&&v.destroy()});let f=o.matchTransition(l.value,c.value,n,c.params),h=!1;if(!f){if(!i)return;f=o.fallbackTransition,h=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:t,transition:f,fromState:l,toState:c,player:a,isFallbackTransition:h}),h||(Mr(n,Ik),a.onStart(()=>{Vs(n,Ik)})),a.onDone(()=>{let v=this.players.indexOf(a);v>=0&&this.players.splice(v,1);let b=this._engine.playersByElement.get(n);if(b){let _=b.indexOf(a);_>=0&&b.splice(_,1)}}),this.players.push(a),p.push(a),a}deregister(n){this._triggers.delete(n),this._engine.statesByElement.forEach(t=>t.delete(n)),this._elementListeners.forEach((t,r)=>{this._elementListeners.set(r,t.filter(i=>i.name!=n))})}clearElementCache(n){this._engine.statesByElement.delete(n),this._elementListeners.delete(n);let t=this._engine.playersByElement.get(n);t&&(t.forEach(r=>r.destroy()),this._engine.playersByElement.delete(n))}_signalRemovalForInnerTriggers(n,t){let r=this._engine.driver.query(n,zc,!0);r.forEach(i=>{if(i[Yr])return;let o=this._engine.fetchNamespacesByElement(i);o.size?o.forEach(a=>a.triggerLeaveAnimation(i,t,!1,!0)):this.clearElementCache(i)}),this._engine.afterFlushAnimationsDone(()=>r.forEach(i=>this.clearElementCache(i)))}triggerLeaveAnimation(n,t,r,i){let o=this._engine.statesByElement.get(n),a=new Map;if(o){let s=[];if(o.forEach((l,c)=>{if(a.set(c,l.value),this._triggers.has(c)){let d=this.trigger(n,c,Gc,i);d&&s.push(d)}}),s.length)return this._engine.markElementAsRemoved(this.id,n,!0,t,a),r&&Qi(s).onDone(()=>this._engine.processLeaveNode(n)),!0}return!1}prepareLeaveAnimationListeners(n){let t=this._elementListeners.get(n),r=this._engine.statesByElement.get(n);if(t&&r){let i=new Set;t.forEach(o=>{let a=o.name;if(i.has(a))return;i.add(a);let l=this._triggers.get(a).fallbackTransition,c=r.get(a)||Dy,d=new Wc(Gc),u=new Zc(this.id,a,n);this._engine.totalQueuedPlayers++,this._queue.push({element:n,triggerName:a,transition:l,fromState:c,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(n,t){let r=this._engine;if(n.childElementCount&&this._signalRemovalForInnerTriggers(n,t),this.triggerLeaveAnimation(n,t,!0))return;let i=!1;if(r.totalAnimations){let o=r.players.length?r.playersByQueriedElement.get(n):[];if(o&&o.length)i=!0;else{let a=n;for(;a=a.parentNode;)if(r.statesByElement.get(a)){i=!0;break}}}if(this.prepareLeaveAnimationListeners(n),i)r.markElementAsRemoved(this.id,n,!1,t);else{let o=n[Yr];(!o||o===jk)&&(r.afterFlush(()=>this.clearElementCache(n)),r.destroyInnerAnimations(n),r._onRemovalComplete(n,t))}}insertNode(n,t){Mr(n,this._hostClassName)}drainQueuedTransitions(n){let t=[];return this._queue.forEach(r=>{let i=r.player;if(i.destroyed)return;let o=r.element,a=this._elementListeners.get(o);a&&a.forEach(s=>{if(s.name==r.triggerName){let l=If(o,r.triggerName,r.fromState.value,r.toState.value);l._data=n,Tf(r.player,s.phase,l,s.callback)}}),i.markedForDestroy?this._engine.afterFlush(()=>{i.destroy()}):t.push(r)}),this._queue=[],t.sort((r,i)=>{let o=r.transition.ast.depCount,a=i.transition.ast.depCount;return o==0||a==0?o-a:this._engine.driver.containsElement(r.element,i.element)?1:-1})}destroy(n){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,n)}},Fy=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(n,t)=>{};_onRemovalComplete(n,t){this.onRemovalComplete(n,t)}constructor(n,t,r){this.bodyNode=n,this.driver=t,this._normalizer=r}get queuedPlayers(){let n=[];return this._namespaceList.forEach(t=>{t.players.forEach(r=>{r.queued&&n.push(r)})}),n}createNamespace(n,t){let r=new Ny(n,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(r,t):(this.newHostElements.set(t,r),this.collectEnterElement(t)),this._namespaceLookup[n]=r}_balanceNamespaceList(n,t){let r=this._namespaceList,i=this.namespacesByHostElement;if(r.length-1>=0){let a=!1,s=this.driver.getParentElement(t);for(;s;){let l=i.get(s);if(l){let c=r.indexOf(l);r.splice(c+1,0,n),a=!0;break}s=this.driver.getParentElement(s)}a||r.unshift(n)}else r.push(n);return i.set(t,n),n}register(n,t){let r=this._namespaceLookup[n];return r||(r=this.createNamespace(n,t)),r}registerTrigger(n,t,r){let i=this._namespaceLookup[n];i&&i.register(t,r)&&this.totalAnimations++}destroy(n,t){n&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let r=this._fetchNamespace(n);this.namespacesByHostElement.delete(r.hostElement);let i=this._namespaceList.indexOf(r);i>=0&&this._namespaceList.splice(i,1),r.destroy(t),delete this._namespaceLookup[n]}))}_fetchNamespace(n){return this._namespaceLookup[n]}fetchNamespacesByElement(n){let t=new Set,r=this.statesByElement.get(n);if(r){for(let i of r.values())if(i.namespaceId){let o=this._fetchNamespace(i.namespaceId);o&&t.add(o)}}return t}trigger(n,t,r,i){if(Lf(t)){let o=this._fetchNamespace(n);if(o)return o.trigger(t,r,i),!0}return!1}insertNode(n,t,r,i){if(!Lf(t))return;let o=t[Yr];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;let a=this.collectedLeaveElements.indexOf(t);a>=0&&this.collectedLeaveElements.splice(a,1)}if(n){let a=this._fetchNamespace(n);a&&a.insertNode(t,r)}i&&this.collectEnterElement(t)}collectEnterElement(n){this.collectedEnterElements.push(n)}markElementAsDisabled(n,t){t?this.disabledNodes.has(n)||(this.disabledNodes.add(n),Mr(n,Ey)):this.disabledNodes.has(n)&&(this.disabledNodes.delete(n),Vs(n,Ey))}removeNode(n,t,r){if(Lf(t)){let i=n?this._fetchNamespace(n):null;i?i.removeNode(t,r):this.markElementAsRemoved(n,t,!1,r);let o=this.namespacesByHostElement.get(t);o&&o.id!==n&&o.removeNode(t,r)}else this._onRemovalComplete(t,r)}markElementAsRemoved(n,t,r,i,o){this.collectedLeaveElements.push(t),t[Yr]={namespaceId:n,setForRemoval:i,hasAnimation:r,removedBeforeQueried:!1,previousTriggersValues:o}}listen(n,t,r,i,o){return Lf(t)?this._fetchNamespace(n).listen(t,r,i,o):()=>{}}_buildInstruction(n,t,r,i,o){return n.transition.build(this.driver,n.element,n.fromState.value,n.toState.value,r,i,n.fromState.options,n.toState.options,t,o)}destroyInnerAnimations(n){let t=this.driver.query(n,zc,!0);t.forEach(r=>this.destroyActiveAnimationsForElement(r)),this.playersByQueriedElement.size!=0&&(t=this.driver.query(n,Rf,!0),t.forEach(r=>this.finishActiveQueriedAnimationOnElement(r)))}destroyActiveAnimationsForElement(n){let t=this.playersByElement.get(n);t&&t.forEach(r=>{r.queued?r.markedForDestroy=!0:r.destroy()})}finishActiveQueriedAnimationOnElement(n){let t=this.playersByQueriedElement.get(n);t&&t.forEach(r=>r.finish())}whenRenderingDone(){return new Promise(n=>{if(this.players.length)return Qi(this.players).onDone(()=>n());n()})}processLeaveNode(n){let t=n[Yr];if(t&&t.setForRemoval){if(n[Yr]=jk,t.namespaceId){this.destroyInnerAnimations(n);let r=this._fetchNamespace(t.namespaceId);r&&r.clearElementCache(n)}this._onRemovalComplete(n,t.setForRemoval)}n.classList?.contains(Ey)&&this.markElementAsDisabled(n,!1),this.driver.query(n,u6,!0).forEach(r=>{this.markElementAsDisabled(r,!1)})}flush(n=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((r,i)=>this._balanceNamespaceList(r,i)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let r=0;rr()),this._flushFns=[],this._whenQuietFns.length){let r=this._whenQuietFns;this._whenQuietFns=[],t.length?Qi(t).onDone(()=>{r.forEach(i=>i())}):r.forEach(i=>i())}}reportError(n){throw _k(n)}_flushAnimations(n,t){let r=new qc,i=[],o=new Map,a=[],s=new Map,l=new Map,c=new Map,d=new Set;this.disabledNodes.forEach(F=>{d.add(F);let L=this.driver.query(F,d6,!0);for(let D=0;D{let D=yy+v++;h.set(L,D),F.forEach(C=>Mr(C,D))});let b=[],_=new Set,y=new Set;for(let F=0;F_.add(C)):y.add(L))}let S=new Map,w=Rk(p,Array.from(_));w.forEach((F,L)=>{let D=Mf+v++;S.set(L,D),F.forEach(C=>Mr(C,D))}),n.push(()=>{f.forEach((F,L)=>{let D=h.get(L);F.forEach(C=>Vs(C,D))}),w.forEach((F,L)=>{let D=S.get(L);F.forEach(C=>Vs(C,D))}),b.forEach(F=>{this.processLeaveNode(F)})});let P=[],N=[];for(let F=this._namespaceList.length-1;F>=0;F--)this._namespaceList[F].drainQueuedTransitions(t).forEach(D=>{let C=D.player,j=D.element;if(P.push(C),this.collectedEnterElements.length){let Fe=j[Yr];if(Fe&&Fe.setForMove){if(Fe.previousTriggersValues&&Fe.previousTriggersValues.has(D.triggerName)){let ie=Fe.previousTriggersValues.get(D.triggerName),re=this.statesByElement.get(D.element);if(re&&re.has(D.triggerName)){let H=re.get(D.triggerName);H.value=ie,re.set(D.triggerName,H)}}C.destroy();return}}let $=!u||!this.driver.containsElement(u,j),G=S.get(j),pe=h.get(j),we=this._buildInstruction(D,r,pe,G,$);if(we.errors&&we.errors.length){N.push(we);return}if($){C.onStart(()=>Ro(j,we.fromStyles)),C.onDestroy(()=>Kr(j,we.toStyles)),i.push(C);return}if(D.isFallbackTransition){C.onStart(()=>Ro(j,we.fromStyles)),C.onDestroy(()=>Kr(j,we.toStyles)),i.push(C);return}let ht=[];we.timelines.forEach(Fe=>{Fe.stretchStartingKeyframe=!0,this.disabledNodes.has(Fe.element)||ht.push(Fe)}),we.timelines=ht,r.append(j,we.timelines);let Te={instruction:we,player:C,element:j};a.push(Te),we.queriedElements.forEach(Fe=>Xn(s,Fe,[]).push(C)),we.preStyleProps.forEach((Fe,ie)=>{if(Fe.size){let re=l.get(ie);re||l.set(ie,re=new Set),Fe.forEach((H,ae)=>re.add(ae))}}),we.postStyleProps.forEach((Fe,ie)=>{let re=c.get(ie);re||c.set(ie,re=new Set),Fe.forEach((H,ae)=>re.add(ae))})});if(N.length){let F=[];N.forEach(L=>{F.push(vk(L.triggerName,L.errors))}),P.forEach(L=>L.destroy()),this.reportError(F)}let V=new Map,M=new Map;a.forEach(F=>{let L=F.element;r.has(L)&&(M.set(L,L),this._beforeAnimationBuild(F.player.namespaceId,F.instruction,V))}),i.forEach(F=>{let L=F.element;this._getPreviousPlayers(L,!1,F.namespaceId,F.triggerName,null).forEach(C=>{Xn(V,L,[]).push(C),C.destroy()})});let K=b.filter(F=>Pk(F,l,c)),Y=new Map;Mk(Y,this.driver,y,c,Zr).forEach(F=>{Pk(F,l,c)&&K.push(F)});let I=new Map;f.forEach((F,L)=>{Mk(I,this.driver,new Set(F),l,Bc)}),K.forEach(F=>{let L=Y.get(F),D=I.get(F);Y.set(F,new Map([...L?.entries()??[],...D?.entries()??[]]))});let O=[],z=[],q={};a.forEach(F=>{let{element:L,player:D,instruction:C}=F;if(r.has(L)){if(d.has(L)){D.onDestroy(()=>Kr(L,C.toStyles)),D.disabled=!0,D.overrideTotalTime(C.totalTime),i.push(D);return}let j=q;if(M.size>1){let G=L,pe=[];for(;G=G.parentNode;){let we=M.get(G);if(we){j=we;break}pe.push(G)}pe.forEach(we=>M.set(we,j))}let $=this._buildAnimation(D.namespaceId,C,V,o,I,Y);if(D.setRealPlayer($),j===q)O.push(D);else{let G=this.playersByElement.get(j);G&&G.length&&(D.parentPlayer=Qi(G)),i.push(D)}}else Ro(L,C.fromStyles),D.onDestroy(()=>Kr(L,C.toStyles)),z.push(D),d.has(L)&&i.push(D)}),z.forEach(F=>{let L=o.get(F.element);if(L&&L.length){let D=Qi(L);F.setRealPlayer(D)}}),i.forEach(F=>{F.parentPlayer?F.syncPlayerEvents(F.parentPlayer):F.destroy()});for(let F=0;F!$.destroyed);j.length?y6(this,L,j):this.processLeaveNode(L)}return b.length=0,O.forEach(F=>{this.players.push(F),F.onDone(()=>{F.destroy();let L=this.players.indexOf(F);this.players.splice(L,1)}),F.play()}),O}afterFlush(n){this._flushFns.push(n)}afterFlushAnimationsDone(n){this._whenQuietFns.push(n)}_getPreviousPlayers(n,t,r,i,o){let a=[];if(t){let s=this.playersByQueriedElement.get(n);s&&(a=s)}else{let s=this.playersByElement.get(n);if(s){let l=!o||o==Gc;s.forEach(c=>{c.queued||!l&&c.triggerName!=i||a.push(c)})}}return(r||i)&&(a=a.filter(s=>!(r&&r!=s.namespaceId||i&&i!=s.triggerName))),a}_beforeAnimationBuild(n,t,r){let i=t.triggerName,o=t.element,a=t.isRemovalTransition?void 0:n,s=t.isRemovalTransition?void 0:i;for(let l of t.timelines){let c=l.element,d=c!==o,u=Xn(r,c,[]);this._getPreviousPlayers(c,d,a,s,t.toState).forEach(f=>{let h=f.getRealPlayer();h.beforeDestroy&&h.beforeDestroy(),f.destroy(),u.push(f)})}Ro(o,t.fromStyles)}_buildAnimation(n,t,r,i,o,a){let s=t.triggerName,l=t.element,c=[],d=new Set,u=new Set,p=t.timelines.map(h=>{let v=h.element;d.add(v);let b=v[Yr];if(b&&b.removedBeforeQueried)return new Yi(h.duration,h.delay);let _=v!==l,y=x6((r.get(v)||h6).map(V=>V.getRealPlayer())).filter(V=>{let M=V;return M.element?M.element===v:!1}),S=o.get(v),w=a.get(v),P=hy(this._normalizer,h.keyframes,S,w),N=this._buildPlayer(h,P,y);if(h.subTimeline&&i&&u.add(v),_){let V=new Zc(n,s,v);V.setRealPlayer(N),c.push(V)}return N});c.forEach(h=>{Xn(this.playersByQueriedElement,h.element,[]).push(h),h.onDone(()=>m6(this.playersByQueriedElement,h.element,h))}),d.forEach(h=>Mr(h,xy));let f=Qi(p);return f.onDestroy(()=>{d.forEach(h=>Vs(h,xy)),Kr(l,t.toStyles)}),u.forEach(h=>{Xn(i,h,[]).push(f)}),f}_buildPlayer(n,t,r){return t.length>0?this.driver.animate(n.element,t,n.duration,n.delay,n.easing,r):new Yi(n.duration,n.delay)}},Zc=class{namespaceId;triggerName;element;_player=new Yi;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(n,t,r){this.namespaceId=n,this.triggerName=t,this.element=r}setRealPlayer(n){this._containsRealPlayer||(this._player=n,this._queuedCallbacks.forEach((t,r)=>{t.forEach(i=>Tf(n,r,void 0,i))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(n.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(n){this.totalTime=n}syncPlayerEvents(n){let t=this._player;t.triggerCallback&&n.onStart(()=>t.triggerCallback("start")),n.onDone(()=>this.finish()),n.onDestroy(()=>this.destroy())}_queueEvent(n,t){Xn(this._queuedCallbacks,n,[]).push(t)}onDone(n){this.queued&&this._queueEvent("done",n),this._player.onDone(n)}onStart(n){this.queued&&this._queueEvent("start",n),this._player.onStart(n)}onDestroy(n){this.queued&&this._queueEvent("destroy",n),this._player.onDestroy(n)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(n){this.queued||this._player.setPosition(n)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(n){let t=this._player;t.triggerCallback&&t.triggerCallback(n)}};function m6(e,n,t){let r=e.get(n);if(r){if(r.length){let i=r.indexOf(t);r.splice(i,1)}r.length==0&&e.delete(n)}return r}function _6(e){return e??null}function Lf(e){return e&&e.nodeType===1}function v6(e){return e=="start"||e=="done"}function Ak(e,n){let t=e.style.display;return e.style.display=n??"none",t}function Mk(e,n,t,r,i){let o=[];t.forEach(l=>o.push(Ak(l)));let a=[];r.forEach((l,c)=>{let d=new Map;l.forEach(u=>{let p=n.computeStyle(c,u,i);d.set(u,p),(!p||p.length==0)&&(c[Yr]=g6,a.push(c))}),e.set(c,d)});let s=0;return t.forEach(l=>Ak(l,o[s++])),a}function Rk(e,n){let t=new Map;if(e.forEach(s=>t.set(s,[])),n.length==0)return t;let r=1,i=new Set(n),o=new Map;function a(s){if(!s)return r;let l=o.get(s);if(l)return l;let c=s.parentNode;return t.has(c)?l=c:i.has(c)?l=r:l=a(c),o.set(s,l),l}return n.forEach(s=>{let l=a(s);l!==r&&t.get(l).push(s)}),t}function Mr(e,n){e.classList?.add(n)}function Vs(e,n){e.classList?.remove(n)}function y6(e,n,t){Qi(t).onDone(()=>e.processLeaveNode(n))}function x6(e){let n=[];return Vk(e,n),n}function Vk(e,n){for(let t=0;ti.add(o)):n.set(e,r),t.delete(e),!0}var Us=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(n,t)=>{};constructor(n,t,r){this._driver=t,this._normalizer=r,this._transitionEngine=new Fy(n.body,t,r),this._timelineEngine=new Oy(n.body,t,r),this._transitionEngine.onRemovalComplete=(i,o)=>this.onRemovalComplete(i,o)}registerTrigger(n,t,r,i,o){let a=n+"-"+i,s=this._triggerCache[a];if(!s){let l=[],c=[],d=Nk(this._driver,o,l,c);if(l.length)throw lk(i,l);s=s6(i,d,this._normalizer),this._triggerCache[a]=s}this._transitionEngine.registerTrigger(t,i,s)}register(n,t){this._transitionEngine.register(n,t)}destroy(n,t){this._transitionEngine.destroy(n,t)}onInsert(n,t,r,i){this._transitionEngine.insertNode(n,t,r,i)}onRemove(n,t,r){this._transitionEngine.removeNode(n,t,r)}disableAnimations(n,t){this._transitionEngine.markElementAsDisabled(n,t)}process(n,t,r,i){if(r.charAt(0)=="@"){let[o,a]=gy(r),s=i;this._timelineEngine.command(o,t,a,s)}else this._transitionEngine.trigger(n,t,r,i)}listen(n,t,r,i,o){if(r.charAt(0)=="@"){let[a,s]=gy(r);return this._timelineEngine.listen(a,t,s,o)}return this._transitionEngine.listen(n,t,r,i,o)}flush(n=-1){this._transitionEngine.flush(n)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(n){this._transitionEngine.afterFlushAnimationsDone(n)}};function w6(e,n){let t=null,r=null;return Array.isArray(n)&&n.length?(t=Sy(n[0]),n.length>1&&(r=Sy(n[n.length-1]))):n instanceof Map&&(t=Sy(n)),t||r?new C6(e,t,r):null}var C6=(()=>{class e{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(t,r,i){this._element=t,this._startStyles=r,this._endStyles=i;let o=e.initialStylesByElement.get(t);o||e.initialStylesByElement.set(t,o=new Map),this._initialStyles=o}start(){this._state<1&&(this._startStyles&&Kr(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Kr(this._element,this._initialStyles),this._endStyles&&(Kr(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(e.initialStylesByElement.delete(this._element),this._startStyles&&(Ro(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Ro(this._element,this._endStyles),this._endStyles=null),Kr(this._element,this._initialStyles),this._state=3)}}return e})();function Sy(e){let n=null;return e.forEach((t,r)=>{E6(r)&&(n=n||new Map,n.set(r,t))}),n}function E6(e){return e==="display"||e==="position"}var Hf=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(n,t,r,i){this.element=n,this.keyframes=t,this.options=r,this._specialStyles=i,this._duration=r.duration,this._delay=r.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(n=>n()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;let n=this.keyframes,t=this._triggerWebAnimation(this.element,n,this.options);if(!t)return this._onFinish(),null;this.domPlayer=t,this._finalKeyframe=n.length?n[n.length-1]:new Map;let r=()=>this._onFinish();return t.addEventListener("finish",r),this.onDestroy(()=>{t.removeEventListener("finish",r)}),t}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(n){let t=[];return n.forEach(r=>{t.push(Object.fromEntries(r))}),t}_triggerWebAnimation(n,t,r){let i=this._convertKeyframesToObject(t);try{return n.animate(i,r)}catch{return null}}onStart(n){this._originalOnStartFns.push(n),this._onStartFns.push(n)}onDone(n){this._originalOnDoneFns.push(n),this._onDoneFns.push(n)}onDestroy(n){this._onDestroyFns.push(n)}play(){let n=this._buildPlayer();n&&(this.hasStarted()||(this._onStartFns.forEach(t=>t()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),n.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(n=>n()),this._onDestroyFns=[])}setPosition(n){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=n*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){let n=new Map;this.hasStarted()&&this._finalKeyframe.forEach((r,i)=>{i!=="offset"&&n.set(i,this._finished?r:Of(this.element,i))}),this.currentSnapshot=n}triggerCallback(n){let t=n==="start"?this._onStartFns:this._onDoneFns;t.forEach(r=>r()),t.length=0}},Gf=class{validateStyleProperty(n){return!0}validateAnimatableStyleProperty(n){return!0}containsElement(n,t){return my(n,t)}getParentElement(n){return Af(n)}query(n,t,r){return _y(n,t,r)}computeStyle(n,t,r){return Of(n,t)}animate(n,t,r,i,o,a=[]){let s=i==0?"both":"forwards",l={duration:r,delay:i,fill:s};o&&(l.easing=o);let c=new Map,d=a.filter(f=>f instanceof Hf);wk(r,i)&&d.forEach(f=>{f.currentSnapshot.forEach((h,v)=>c.set(v,h))});let u=xk(t).map(f=>new Map(f));u=Ck(n,u,c);let p=w6(n,u);return new Hf(n,u,l,p)}};var jf="@",Uk="@.disabled",qf=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(n,t,r,i){this.namespaceId=n,this.delegate=t,this.engine=r,this._onDestroy=i}get data(){return this.delegate.data}destroyNode(n){this.delegate.destroyNode?.(n)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(n,t){return this.delegate.createElement(n,t)}createComment(n){return this.delegate.createComment(n)}createText(n){return this.delegate.createText(n)}appendChild(n,t){this.delegate.appendChild(n,t),this.engine.onInsert(this.namespaceId,t,n,!1)}insertBefore(n,t,r,i=!0){this.delegate.insertBefore(n,t,r),this.engine.onInsert(this.namespaceId,t,n,i)}removeChild(n,t,r,i){if(i){this.delegate.removeChild(n,t,r,i);return}this.parentNode(t)&&this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(n,t){return this.delegate.selectRootElement(n,t)}parentNode(n){return this.delegate.parentNode(n)}nextSibling(n){return this.delegate.nextSibling(n)}setAttribute(n,t,r,i){this.delegate.setAttribute(n,t,r,i)}removeAttribute(n,t,r){this.delegate.removeAttribute(n,t,r)}addClass(n,t){this.delegate.addClass(n,t)}removeClass(n,t){this.delegate.removeClass(n,t)}setStyle(n,t,r,i){this.delegate.setStyle(n,t,r,i)}removeStyle(n,t,r){this.delegate.removeStyle(n,t,r)}setProperty(n,t,r){t.charAt(0)==jf&&t==Uk?this.disableAnimations(n,!!r):this.delegate.setProperty(n,t,r)}setValue(n,t){this.delegate.setValue(n,t)}listen(n,t,r,i){return this.delegate.listen(n,t,r,i)}disableAnimations(n,t){this.engine.disableAnimations(n,t)}},Ly=class extends qf{factory;constructor(n,t,r,i,o){super(t,r,i,o),this.factory=n,this.namespaceId=t}setProperty(n,t,r){t.charAt(0)==jf?t.charAt(1)=="."&&t==Uk?(r=r===void 0?!0:!!r,this.disableAnimations(n,r)):this.engine.process(this.namespaceId,n,t.slice(1),r):this.delegate.setProperty(n,t,r)}listen(n,t,r,i){if(t.charAt(0)==jf){let o=D6(n),a=t.slice(1),s="";return a.charAt(0)!=jf&&([a,s]=S6(a)),this.engine.listen(this.namespaceId,o,a,s,l=>{let c=l._data||-1;this.factory.scheduleListenerCallback(c,r,l)})}return this.delegate.listen(n,t,r,i)}};function D6(e){switch(e){case"body":return document.body;case"document":return document;case"window":return window;default:return e}}function S6(e){let n=e.indexOf("."),t=e.substring(0,n),r=e.slice(n+1);return[t,r]}var Wf=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(n,t,r){this.delegate=n,this.engine=t,this._zone=r,t.onRemovalComplete=(i,o)=>{o?.removeChild(null,i)}}createRenderer(n,t){let i=this.delegate.createRenderer(n,t);if(!n||!t?.data?.animation){let c=this._rendererCache,d=c.get(i);if(!d){let u=()=>c.delete(i);d=new qf("",i,this.engine,u),c.set(i,d)}return d}let o=t.id,a=t.id+"-"+this._currentId;this._currentId++,this.engine.register(a,n);let s=c=>{Array.isArray(c)?c.forEach(s):this.engine.registerTrigger(o,a,n,c.name,c)};return t.data.animation.forEach(s),new Ly(this,a,i,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(n,t,r){if(n>=0&&nt(r));return}let i=this._animationCallbacksBuffer;i.length==0&&queueMicrotask(()=>{this._zone.run(()=>{i.forEach(o=>{let[a,s]=o;a(s)}),this._animationCallbacksBuffer=[]})}),i.push([t,r])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(n){this.engine.flush(),this.delegate.componentReplaced?.(n)}};var T6=(()=>{class e extends Us{constructor(t,r,i){super(t,r,i)}ngOnDestroy(){this.flush()}static \u0275fac=function(r){return new(r||e)(se(Xt),se(Aa),se(Ma))};static \u0275prov=ee({token:e,factory:e.\u0275fac})}return e})();function I6(){return new Vf}function A6(){return new Wf(A(jc),A(Us),A(pt))}var Bk=[{provide:Ma,useFactory:I6},{provide:Us,useClass:T6},{provide:Hi,useFactory:A6}],Zge=[{provide:Aa,useClass:jy},{provide:qp,useValue:"NoopAnimations"},...Bk],M6=[{provide:Aa,useFactory:()=>new Gf},{provide:qp,useFactory:()=>"BrowserAnimations"},...Bk];function $k(){return ui("NgEagerAnimations"),[...M6]}function _n(e){e||(e=A(an));let n=new De(t=>{if(e.destroyed){t.next();return}return e.onDestroy(t.next.bind(t))});return t=>t.pipe(ce(n))}function Rr(e,n){let r=!n?.manualCleanup?n?.injector?.get(an)??A(an):null,i=R6(n?.equal),o;n?.requireSync?o=et({kind:0},{equal:i}):o=et({kind:1,value:n?.initialValue},{equal:i});let a,s=e.subscribe({next:l=>o.set({kind:1,value:l}),error:l=>{o.set({kind:2,error:l}),a?.()},complete:()=>{a?.()}});if(n?.requireSync&&o().kind===0)throw new oe(601,!1);return a=r?.onDestroy(s.unsubscribe.bind(s)),Wt(()=>{let l=o();switch(l.kind){case 1:return l.value;case 2:throw l.error;case 0:throw new oe(601,!1)}},{equal:n?.equal})}function R6(e=Object.is){return(n,t)=>n.kind===1&&t.kind===1&&e(n.value,t.value)}var $y={};function ge(e,n){if($y[e]=($y[e]||0)+1,typeof n=="function")return Uy(e,(...r)=>X(R({},n(...r)),{type:e}));switch(n?n._as:"empty"){case"empty":return Uy(e,()=>({type:e}));case"props":return Uy(e,r=>X(R({},r),{type:e}));default:throw new Error("Unexpected config.")}}function ye(){return{_as:"props",_p:void 0}}function Uy(e,n){return Object.defineProperty(n,"type",{value:e,writable:!1})}function P6(e,n){if(e==null)throw new Error(`${n} must be defined.`)}var Qc="@ngrx/store/init",hi=(()=>{class e extends dt{constructor(){super({type:Qc})}next(t){if(typeof t=="function")throw new TypeError(` + Dispatch expected an object, instead it received a function. + If you're using the createAction function, make sure to invoke the function + before dispatching the action. For example, someAction should be someAction().`);if(typeof t>"u")throw new TypeError("Actions must be objects");if(typeof t.type>"u")throw new TypeError("Actions must have a type property");super.next(t)}complete(){}ngOnDestroy(){super.complete()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),O6=[hi],tT=new le("@ngrx/store Internal Root Guard"),zk=new le("@ngrx/store Internal Initial State"),Xc=new le("@ngrx/store Initial State"),nT=new le("@ngrx/store Reducer Factory"),Hk=new le("@ngrx/store Internal Reducer Factory Provider"),rT=new le("@ngrx/store Initial Reducers"),By=new le("@ngrx/store Internal Initial Reducers");var Gk=new le("@ngrx/store Internal Store Reducers");var N6=new le("@ngrx/store Internal Store Features");var F6=new le("@ngrx/store Feature Reducers"),qk=new le("@ngrx/store User Provided Meta Reducers"),Zf=new le("@ngrx/store Meta Reducers"),Wk=new le("@ngrx/store Internal Resolved Meta Reducers"),Zk=new le("@ngrx/store User Runtime Checks Config"),Kk=new le("@ngrx/store Internal User Runtime Checks Config"),Kc=new le("@ngrx/store Internal Runtime Checks"),qy=new le("@ngrx/store Check if Action types are unique"),Yc=new le("@ngrx/store Root Store Provider"),Kf=new le("@ngrx/store Feature State Provider");function L6(e,n={}){let t=Object.keys(e),r={};for(let o=0;ot!==n).reduce((t,r)=>Object.assign(t,{[r]:e[r]}),{})}function iT(...e){return function(n){if(e.length===0)return n;let t=e[e.length-1];return e.slice(0,-1).reduceRight((i,o)=>o(i),t(n))}}function oT(e,n){return Array.isArray(n)&&n.length>0&&(e=iT.apply(null,[...n,e])),(t,r)=>{let i=e(t);return(o,a)=>(o=o===void 0?r:o,i(o,a))}}function V6(e){let n=Array.isArray(e)&&e.length>0?iT(...e):t=>t;return(t,r)=>(t=n(t),(i,o)=>(i=i===void 0?r:i,t(i,o)))}var Ra=class extends De{},Bs=class extends hi{},Qf="@ngrx/store/update-reducers",Yf=(()=>{class e extends dt{get currentReducers(){return this.reducers}constructor(t,r,i,o){super(o(i,r)),this.dispatcher=t,this.initialState=r,this.reducers=i,this.reducerFactory=o}addFeature(t){this.addFeatures([t])}addFeatures(t){let r=t.reduce((i,{reducers:o,reducerFactory:a,metaReducers:s,initialState:l,key:c})=>{let d=typeof o=="function"?V6(s)(o,l):oT(a,s)(o,l);return i[c]=d,i},{});this.addReducers(r)}removeFeature(t){this.removeFeatures([t])}removeFeatures(t){this.removeReducers(t.map(r=>r.key))}addReducer(t,r){this.addReducers({[t]:r})}addReducers(t){this.reducers=R(R({},this.reducers),t),this.updateReducers(Object.keys(t))}removeReducer(t){this.removeReducers([t])}removeReducers(t){t.forEach(r=>{this.reducers=j6(this.reducers,r)}),this.updateReducers(t)}updateReducers(t){this.next(this.reducerFactory(this.reducers,this.initialState)),this.dispatcher.next({type:Qf,features:t})}ngOnDestroy(){this.complete()}static{this.\u0275fac=function(r){return new(r||e)(se(Bs),se(Xc),se(rT),se(nT))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),U6=[Yf,{provide:Ra,useExisting:Yf},{provide:Bs,useExisting:hi}],Pa=(()=>{class e extends qe{ngOnDestroy(){this.complete()}static{this.\u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})()}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),B6=[Pa],$s=class extends De{},Yk=(()=>{class e extends dt{static{this.INIT=Qc}constructor(t,r,i,o){super(o);let s=t.pipe(Vr(fo)).pipe(mo(r)),l={state:o},c=s.pipe(Jl($6,l));this.stateSubscription=c.subscribe(({state:d,action:u})=>{this.next(d),i.next(u)}),this.state=Rr(this,{manualCleanup:!0,requireSync:!0})}ngOnDestroy(){this.stateSubscription.unsubscribe(),this.complete()}static{this.\u0275fac=function(r){return new(r||e)(se(hi),se(Ra),se(Pa),se(Xc))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();function $6(e={state:void 0},[n,t]){let{state:r}=e;return{state:t(r,n),action:n}}var z6=[Yk,{provide:$s,useExisting:Yk}],dn=(()=>{class e extends De{constructor(t,r,i,o){super(),this.actionsObserver=r,this.reducerManager=i,this.injector=o,this.source=t,this.state=t.state}select(t,...r){return ke.call(null,t,...r)(this)}selectSignal(t,r){return Wt(()=>t(this.state()),r)}lift(t){let r=new e(this,this.actionsObserver,this.reducerManager);return r.operator=t,r}dispatch(t,r){if(typeof t=="function")return this.processDispatchFn(t,r);this.actionsObserver.next(t)}next(t){this.actionsObserver.next(t)}error(t){this.actionsObserver.error(t)}complete(){this.actionsObserver.complete()}addReducer(t,r){this.reducerManager.addReducer(t,r)}removeReducer(t){this.reducerManager.removeReducer(t)}processDispatchFn(t,r){P6(this.injector,"Store Injector");let i=r?.injector??G6()??this.injector;return sn(()=>{let o=t();ln(()=>this.dispatch(o))},{injector:i})}static{this.\u0275fac=function(r){return new(r||e)(se($s),se(hi),se(Yf),se(Bt))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),H6=[dn];function ke(e,n,...t){return function(i){let o;if(typeof e=="string"){let a=[n,...t].filter(Boolean);o=i.pipe(am(e,...a))}else if(typeof e=="function")o=i.pipe(de(a=>e(a,n)));else throw new TypeError(`Unexpected type '${typeof e}' in select operator, expected 'string' or 'function'`);return o.pipe(Ie())}}function G6(){try{return A(Bt)}catch{return}}var Wy="https://ngrx.io/guide/store/configuration/runtime-checks";function Qk(e){return e===void 0}function Xk(e){return e===null}function aT(e){return Array.isArray(e)}function q6(e){return typeof e=="string"}function W6(e){return typeof e=="boolean"}function Z6(e){return typeof e=="number"}function sT(e){return typeof e=="object"&&e!==null}function K6(e){return sT(e)&&!aT(e)}function Y6(e){if(!K6(e))return!1;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function zy(e){return typeof e=="function"}function Q6(e){return zy(e)&&e.hasOwnProperty("\u0275cmp")}function X6(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Jk(e,n){return e===n}function J6(e,n,t){for(let r=0;ra(e));return r.memoized.apply(null,o)}let i=n.map(o=>o(e,t));return r.memoized.apply(null,[...i,t])}function tj(e,n={stateFn:ej}){return function(...t){let r=t;if(Array.isArray(r[0])){let[d,...u]=r;r=[...d,...u]}else r.length===1&&nj(r[0])&&(r=rj(r[0]));let i=r.slice(0,r.length-1),o=r[r.length-1],a=i.filter(d=>d.release&&typeof d.release=="function"),s=e(function(...d){return o.apply(null,d)}),l=lT(function(d,u){return n.stateFn.apply(null,[d,i,u,s])});function c(){l.reset(),s.reset(),a.forEach(d=>d.release())}return Object.assign(l.memoized,{release:c,projector:s.memoized,setResult:l.setResult,clearResult:l.clearResult})}}function nj(e){return!!e&&typeof e=="object"&&Object.values(e).every(n=>typeof n=="function")}function rj(e){let n=Object.values(e),t=Object.keys(e),r=(...i)=>t.reduce((o,a,s)=>X(R({},o),{[a]:i[s]}),{});return[...n,r]}function ij(e){return e instanceof le?A(e):e}function cT(e){return typeof e=="function"?e():e}function oj(e,n){return e.concat(n)}function aj(){if(A(dn,{optional:!0,skipSelf:!0}))throw new TypeError("The root Store has been provided more than once. Feature modules should provide feature states instead.");return"guarded"}function sj(e,n){return function(t,r){let i=n.action(r)?Hy(r):r,o=e(t,i);return n.state()?Hy(o):o}}function Hy(e){Object.freeze(e);let n=zy(e);return Object.getOwnPropertyNames(e).forEach(t=>{if(!t.startsWith("\u0275")&&X6(e,t)&&(!n||t!=="caller"&&t!=="callee"&&t!=="arguments")){let r=e[t];(sT(r)||zy(r))&&!Object.isFrozen(r)&&Hy(r)}}),e}function lj(e,n){return function(t,r){if(n.action(r)){let o=Gy(r);eT(o,"action")}let i=e(t,r);if(n.state()){let o=Gy(i);eT(o,"state")}return i}}function Gy(e,n=[]){return(Qk(e)||Xk(e))&&n.length===0?{path:["root"],value:e}:Object.keys(e).reduce((r,i)=>{if(r)return r;let o=e[i];return Q6(o)?r:Qk(o)||Xk(o)||Z6(o)||W6(o)||q6(o)||aT(o)?!1:Y6(o)?Gy(o,[...n,i]):{path:[...n,i],value:o}},!1)}function eT(e,n){if(e===!1)return;let t=e.path.join("."),r=new Error(`Detected unserializable ${n} at "${t}". ${Wy}#strict${n}serializability`);throw r.value=e.value,r.unserializablePath=t,r}function cj(e,n){return function(t,r){if(n.action(r)&&!pt.isInAngularZone())throw new Error(`Action '${r.type}' running outside NgZone. ${Wy}#strictactionwithinngzone`);return e(t,r)}}function dj(e){return hf()?R({strictStateSerializability:!1,strictActionSerializability:!1,strictStateImmutability:!0,strictActionImmutability:!0,strictActionWithinNgZone:!1,strictActionTypeUniqueness:!1},e):{strictStateSerializability:!1,strictActionSerializability:!1,strictStateImmutability:!1,strictActionImmutability:!1,strictActionWithinNgZone:!1,strictActionTypeUniqueness:!1}}function uj({strictActionSerializability:e,strictStateSerializability:n}){return t=>e||n?lj(t,{action:r=>e&&!Zy(r),state:()=>n}):t}function pj({strictActionImmutability:e,strictStateImmutability:n}){return t=>e||n?sj(t,{action:r=>e&&!Zy(r),state:()=>n}):t}function Zy(e){return e.type.startsWith("@ngrx")}function fj({strictActionWithinNgZone:e}){return n=>e?cj(n,{action:t=>e&&!Zy(t)}):n}function hj(e){return[{provide:Kk,useValue:e},{provide:Zk,useFactory:mj,deps:[Kk]},{provide:Kc,deps:[Zk],useFactory:dj},{provide:Zf,multi:!0,deps:[Kc],useFactory:pj},{provide:Zf,multi:!0,deps:[Kc],useFactory:uj},{provide:Zf,multi:!0,deps:[Kc],useFactory:fj}]}function gj(){return[{provide:qy,multi:!0,deps:[Kc],useFactory:_j}]}function mj(e){return e}function _j(e){if(!e.strictActionTypeUniqueness)return;let n=Object.entries($y).filter(([,t])=>t>1).map(([t])=>t);if(n.length)throw new Error(`Action types are registered more than once, ${n.map(t=>`"${t}"`).join(", ")}. ${Wy}#strictactiontypeuniqueness`)}function vj(e={},n={}){return[{provide:tT,useFactory:aj},{provide:zk,useValue:n.initialState},{provide:Xc,useFactory:cT,deps:[zk]},{provide:By,useValue:e},{provide:Gk,useExisting:e instanceof le?e:By},{provide:rT,deps:[By,[new tv(Gk)]],useFactory:ij},{provide:qk,useValue:n.metaReducers?n.metaReducers:[]},{provide:Wk,deps:[Zf,qk],useFactory:oj},{provide:Hk,useValue:n.reducerFactory?n.reducerFactory:L6},{provide:nT,deps:[Hk,Wk],useFactory:oT},O6,U6,B6,z6,H6,hj(n.runtimeChecks),gj()]}function yj(){A(hi),A(Ra),A(Pa),A(dn),A(tT,{optional:!0}),A(qy,{optional:!0})}var xj=[{provide:Yc,useFactory:yj},ds(()=>A(Yc))];function dT(e,n){return wr([...vj(e,n),xj])}function bj(){A(Yc);let e=A(N6),n=A(F6),t=A(Yf);A(qy,{optional:!0});let r=e.map((i,o)=>{let s=n.shift()[o];return X(R({},i),{reducers:s,initialState:cT(i.initialState)})});t.addFeatures(r)}var ume=[{provide:Kf,useFactory:bj},ds(()=>A(Kf))];function _e(...e){let n=e.pop(),t=e.map(r=>r.type);return{reducer:n,types:t}}function uT(e,...n){let t=new Map;for(let r of n)for(let i of r.types){let o=t.get(i);if(o){let a=(s,l)=>r.reducer(o(s,l),l);t.set(i,a)}else t.set(i,r.reducer)}return function(r=e,i){let o=t.get(i.type);return o?o(r,i):r}}var wj={dispatch:!0,functional:!1,useEffectsErrorHandler:!0},Xf="__@ngrx/effects_create__";function Jt(e,n={}){let t=n.functional?e:e(),r=R(R({},wj),n);return Object.defineProperty(t,Xf,{value:r}),t}function Cj(e){return Object.getOwnPropertyNames(e).filter(r=>e[r]&&e[r].hasOwnProperty(Xf)?e[r][Xf].hasOwnProperty("dispatch"):!1).map(r=>{let i=e[r][Xf];return R({propertyName:r},i)})}function Ej(e){return Cj(e)}function fT(e){return Object.getPrototypeOf(e)}function Dj(e){return!!e.constructor&&e.constructor.name!=="Object"&&e.constructor.name!=="Function"}function hT(e){return typeof e=="function"}function Sj(e){return e.filter(hT)}function kj(e,n,t){let r=fT(e),o=!!r&&r.constructor.name!=="Object"?r.constructor.name:null,a=Ej(e).map(({propertyName:s,dispatch:l,useEffectsErrorHandler:c})=>{let d=typeof e[s]=="function"?e[s]():e[s],u=c?t(d,n):d;return l===!1?u.pipe(rm()):u.pipe(om()).pipe(de(f=>({effect:e[s],notification:f,propertyName:s,sourceName:o,sourceInstance:e})))});return Pi(...a)}var Tj=10;function gT(e,n,t=Tj){return e.pipe(at(r=>(n&&n.handleError(r),t<=1?e:gT(e,n,t-1))))}var mT=(()=>{class e extends De{constructor(t){super(),t&&(this.source=t)}lift(t){let r=new e;return r.source=this,r.operator=t,r}static{this.\u0275fac=function(r){return new(r||e)(se(Pa))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function en(...e){return Je(n=>e.some(t=>typeof t=="string"?t===n.type:t.type===n.type))}var Ij=new le("@ngrx/effects Effects Error Handler",{providedIn:"root",factory:()=>gT}),Aj="@ngrx/effects/init",Mj=ge(Aj);function Rj(e,n){if(e.notification.kind==="N"){let t=e.notification.value;!Pj(t)&&n.handleError(new Error(`Effect ${Oj(e)} dispatched an invalid action: ${Nj(t)}`))}}function Pj(e){return typeof e!="function"&&e&&e.type&&typeof e.type=="string"}function Oj({propertyName:e,sourceInstance:n,sourceName:t}){let r=typeof n[e]=="function";return!!t?`"${t}.${String(e)}${r?"()":""}"`:`"${String(e)}()"`}function Nj(e){try{return JSON.stringify(e)}catch{return e}}var Fj="ngrxOnIdentifyEffects";function Lj(e){return Ky(e,Fj)}var jj="ngrxOnRunEffects";function Vj(e){return Ky(e,jj)}var Uj="ngrxOnInitEffects";function Bj(e){return Ky(e,Uj)}function Ky(e,n){return e&&n in e&&typeof e[n]=="function"}var _T=(()=>{class e extends qe{constructor(t,r){super(),this.errorHandler=t,this.effectsErrorHandler=r}addEffects(t){this.next(t)}toActions(){return this.pipe(Vu(t=>Dj(t)?fT(t):t),vn(t=>t.pipe(Vu($j))),vn(t=>{let r=t.pipe(ju(o=>zj(this.errorHandler,this.effectsErrorHandler)(o)),de(o=>(Rj(o,this.errorHandler),o.notification)),Je(o=>o.kind==="N"&&o.value!=null),im()),i=t.pipe(Tt(1),Je(Bj),de(o=>o.ngrxOnInitEffects()));return Pi(r,i)}))}static{this.\u0275fac=function(r){return new(r||e)(se(Vn),se(Ij))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function $j(e){return Lj(e)?e.ngrxOnIdentifyEffects():""}function zj(e,n){return t=>{let r=kj(t,e,n);return Vj(t)?t.ngrxOnRunEffects(r):r}}var Hj=(()=>{class e{get isStarted(){return!!this.effectsSubscription}constructor(t,r){this.effectSources=t,this.store=r,this.effectsSubscription=null}start(){this.effectsSubscription||(this.effectsSubscription=this.effectSources.toActions().subscribe(this.store))}ngOnDestroy(){this.effectsSubscription&&(this.effectsSubscription.unsubscribe(),this.effectsSubscription=null)}static{this.\u0275fac=function(r){return new(r||e)(se(_T),se(dn))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function vT(...e){let n=e.flat(),t=Sj(n);return wr([t,ds(()=>{A(Yc),A(Kf,{optional:!0});let r=A(Hj),i=A(_T),o=!r.isStarted;o&&r.start();for(let a of n){let s=hT(a)?A(a):a;i.addEffects(s)}o&&A(dn).dispatch(Mj())})])}var ed="PERFORM_ACTION",Gj="REFRESH",ET="RESET",DT="ROLLBACK",ST="COMMIT",kT="SWEEP",TT="TOGGLE_ACTION",qj="SET_ACTIONS_ACTIVE",IT="JUMP_TO_STATE",AT="JUMP_TO_ACTION",lx="IMPORT_STATE",MT="LOCK_CHANGES",RT="PAUSE_RECORDING",zs=class{constructor(n,t){if(this.action=n,this.timestamp=t,this.type=ed,typeof n.type>"u")throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?')}},Yy=class{constructor(){this.type=Gj}},Qy=class{constructor(n){this.timestamp=n,this.type=ET}},Xy=class{constructor(n){this.timestamp=n,this.type=DT}},Jy=class{constructor(n){this.timestamp=n,this.type=ST}},ex=class{constructor(){this.type=kT}},tx=class{constructor(n){this.id=n,this.type=TT}};var nx=class{constructor(n){this.index=n,this.type=IT}},rx=class{constructor(n){this.actionId=n,this.type=AT}},ix=class{constructor(n){this.nextLiftedState=n,this.type=lx}},ox=class{constructor(n){this.status=n,this.type=MT}},ax=class{constructor(n){this.status=n,this.type=RT}};var nh=new le("@ngrx/store-devtools Options"),yT=new le("@ngrx/store-devtools Initial Config");function PT(){return null}var Wj="NgRx Store DevTools";function Zj(e){let n={maxAge:!1,monitor:PT,actionSanitizer:void 0,stateSanitizer:void 0,name:Wj,serialize:!1,logOnly:!1,autoPause:!1,trace:!1,traceLimit:75,features:{pause:!0,lock:!0,persist:!0,export:!0,import:"custom",jump:!0,skip:!0,reorder:!0,dispatch:!0,test:!0},connectInZone:!1},t=typeof e=="function"?e():e,r=t.logOnly?{pause:!0,export:!0,test:!0}:!1,i=t.features||r||n.features;i.import===!0&&(i.import="custom");let o=Object.assign({},n,{features:i},t);if(o.maxAge&&o.maxAge<2)throw new Error(`Devtools 'maxAge' cannot be less than 2, got ${o.maxAge}`);return o}function xT(e,n){return e.filter(t=>n.indexOf(t)<0)}function OT(e){let{computedStates:n,currentStateIndex:t}=e;if(t>=n.length){let{state:i}=n[n.length-1];return i}let{state:r}=n[t];return r}function Jc(e){return new zs(e,+Date.now())}function Kj(e,n){return Object.keys(n).reduce((t,r)=>{let i=Number(r);return t[i]=NT(e,n[i],i),t},{})}function NT(e,n,t){return X(R({},n),{action:e(n.action,t)})}function Yj(e,n){return n.map((t,r)=>({state:FT(e,t.state,r),error:t.error}))}function FT(e,n,t){return e(n,t)}function LT(e){return e.predicate||e.actionsSafelist||e.actionsBlocklist}function Qj(e,n,t,r){let i=[],o={},a=[];return e.stagedActionIds.forEach((s,l)=>{let c=e.actionsById[s];c&&(l&&cx(e.computedStates[l],c,n,t,r)||(o[s]=c,i.push(s),a.push(e.computedStates[l])))}),X(R({},e),{stagedActionIds:i,actionsById:o,computedStates:a})}function cx(e,n,t,r,i){let o=t&&!t(e,n.action),a=r&&!n.action.type.match(r.map(l=>bT(l)).join("|")),s=i&&n.action.type.match(i.map(l=>bT(l)).join("|"));return o||a||s}function bT(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function jT(e){return{ngZone:e?A(pt):null,connectInZone:e}}var rh=(()=>{class e extends hi{static{this.\u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})()}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),Jf={START:"START",DISPATCH:"DISPATCH",STOP:"STOP",ACTION:"ACTION"},sx=new le("@ngrx/store-devtools Redux Devtools Extension"),VT=(()=>{class e{constructor(t,r,i){this.config=r,this.dispatcher=i,this.zoneConfig=jT(this.config.connectInZone),this.devtoolsExtension=t,this.createActionStreams()}notify(t,r){if(this.devtoolsExtension)if(t.type===ed){if(r.isLocked||r.isPaused)return;let i=OT(r);if(LT(this.config)&&cx(i,t,this.config.predicate,this.config.actionsSafelist,this.config.actionsBlocklist))return;let o=this.config.stateSanitizer?FT(this.config.stateSanitizer,i,r.currentStateIndex):i,a=this.config.actionSanitizer?NT(this.config.actionSanitizer,t,r.nextActionId):t;this.sendToReduxDevtools(()=>this.extensionConnection.send(a,o))}else{let i=X(R({},r),{stagedActionIds:r.stagedActionIds,actionsById:this.config.actionSanitizer?Kj(this.config.actionSanitizer,r.actionsById):r.actionsById,computedStates:this.config.stateSanitizer?Yj(this.config.stateSanitizer,r.computedStates):r.computedStates});this.sendToReduxDevtools(()=>this.devtoolsExtension.send(null,i,this.getExtensionConfig(this.config)))}}createChangesObservable(){return this.devtoolsExtension?new De(t=>{let r=this.zoneConfig.connectInZone?this.zoneConfig.ngZone.runOutsideAngular(()=>this.devtoolsExtension.connect(this.getExtensionConfig(this.config))):this.devtoolsExtension.connect(this.getExtensionConfig(this.config));return this.extensionConnection=r,r.init(),r.subscribe(i=>t.next(i)),r.unsubscribe}):At}createActionStreams(){let t=this.createChangesObservable().pipe(ec()),r=t.pipe(Je(c=>c.type===Jf.START)),i=t.pipe(Je(c=>c.type===Jf.STOP)),o=t.pipe(Je(c=>c.type===Jf.DISPATCH),de(c=>this.unwrapAction(c.payload)),Oi(c=>c.type===lx?this.dispatcher.pipe(Je(d=>d.type===Qf),tm(1e3),go(1e3),de(()=>c),at(()=>fe(c)),Tt(1)):fe(c))),s=t.pipe(Je(c=>c.type===Jf.ACTION),de(c=>this.unwrapAction(c.payload))).pipe(ce(i)),l=o.pipe(ce(i));this.start$=r.pipe(ce(i)),this.actions$=this.start$.pipe($e(()=>s)),this.liftedActions$=this.start$.pipe($e(()=>l))}unwrapAction(t){return typeof t=="string"?(0,eval)(`(${t})`):t}getExtensionConfig(t){let r={name:t.name,features:t.features,serialize:t.serialize,autoPause:t.autoPause??!1,trace:t.trace??!1,traceLimit:t.traceLimit??75};return t.maxAge!==!1&&(r.maxAge=t.maxAge),r}sendToReduxDevtools(t){try{t()}catch(r){console.warn("@ngrx/store-devtools: something went wrong inside the redux devtools",r)}}static{this.\u0275fac=function(r){return new(r||e)(se(sx),se(nh),se(rh))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),th={type:Qc},Xj="@ngrx/store-devtools/recompute",Jj={type:Xj};function UT(e,n,t,r,i){if(r)return{state:t,error:"Interrupted by an error up the chain"};let o=t,a;try{o=e(t,n)}catch(s){a=s.toString(),i.handleError(s)}return{state:o,error:a}}function eh(e,n,t,r,i,o,a,s,l){if(n>=e.length&&e.length===o.length)return e;let c=e.slice(0,n),d=o.length-(l?1:0);for(let u=n;u-1?h:UT(t,f,v,b,s);c.push(y)}return l&&c.push(e[e.length-1]),c}function eV(e,n){return{monitorState:n(void 0,{}),nextActionId:1,actionsById:{0:Jc(th)},stagedActionIds:[0],skippedActionIds:[],committedState:e,currentStateIndex:0,computedStates:[],isLocked:!1,isPaused:!1}}function tV(e,n,t,r,i={}){return o=>(a,s)=>{let{monitorState:l,actionsById:c,nextActionId:d,stagedActionIds:u,skippedActionIds:p,committedState:f,currentStateIndex:h,computedStates:v,isLocked:b,isPaused:_}=a||n;a||(c=Object.create(c));function y(P){let N=P,V=u.slice(1,N+1);for(let M=0;MV.indexOf(M)===-1),u=[0,...u.slice(N+1)],f=v[N].state,v=v.slice(N),h=h>N?h-N:0}function S(){c={0:Jc(th)},d=1,u=[0],p=[],f=v[h].state,h=0,v=[]}let w=0;switch(s.type){case MT:{b=s.status,w=1/0;break}case RT:{_=s.status,_?(u=[...u,d],c[d]=new zs({type:"@ngrx/devtools/pause"},+Date.now()),d++,w=u.length-1,v=v.concat(v[v.length-1]),h===u.length-2&&h++,w=1/0):S();break}case ET:{c={0:Jc(th)},d=1,u=[0],p=[],f=e,h=0,v=[];break}case ST:{S();break}case DT:{c={0:Jc(th)},d=1,u=[0],p=[],h=0,v=[];break}case TT:{let{id:P}=s;p.indexOf(P)===-1?p=[P,...p]:p=p.filter(V=>V!==P),w=u.indexOf(P);break}case qj:{let{start:P,end:N,active:V}=s,M=[];for(let K=P;Ki.maxAge&&(v=eh(v,w,o,f,c,u,p,t,_),y(u.length-i.maxAge),w=1/0);break}case Qf:{if(v.filter(N=>N.error).length>0)w=0,i.maxAge&&u.length>i.maxAge&&(v=eh(v,w,o,f,c,u,p,t,_),y(u.length-i.maxAge),w=1/0);else{if(!_&&!b){h===u.length-1&&h++;let N=d++;c[N]=new zs(s,+Date.now()),u=[...u,N],w=u.length-1,v=eh(v,w,o,f,c,u,p,t,_)}v=v.map(N=>X(R({},N),{state:o(N.state,Jj)})),h=u.length-1,i.maxAge&&u.length>i.maxAge&&y(u.length-i.maxAge),w=1/0}break}default:{w=1/0;break}}return v=eh(v,w,o,f,c,u,p,t,_),l=r(l,s),{monitorState:l,actionsById:c,nextActionId:d,stagedActionIds:u,skippedActionIds:p,committedState:f,currentStateIndex:h,computedStates:v,isLocked:b,isPaused:_}}}var wT=(()=>{class e{constructor(t,r,i,o,a,s,l,c){let d=eV(l,c.monitor),u=tV(l,d,s,c.monitor,c),p=Pi(Pi(r.asObservable().pipe(ia(1)),o.actions$).pipe(de(Jc)),t,o.liftedActions$).pipe(Vr(fo)),f=i.pipe(de(u)),h=jT(c.connectInZone),v=new ar(1);this.liftedStateSubscription=p.pipe(mo(f),CT(h),Jl(({state:y},[S,w])=>{let P=w(y,S);return S.type!==ed&<(c)&&(P=Qj(P,c.predicate,c.actionsSafelist,c.actionsBlocklist)),o.notify(S,P),{state:P,action:S}},{state:d,action:null})).subscribe(({state:y,action:S})=>{if(v.next(y),S.type===ed){let w=S.action;a.next(w)}}),this.extensionStartSubscription=o.start$.pipe(CT(h)).subscribe(()=>{this.refresh()});let b=v.asObservable(),_=b.pipe(de(OT));Object.defineProperty(_,"state",{value:Rr(_,{manualCleanup:!0,requireSync:!0})}),this.dispatcher=t,this.liftedState=b,this.state=_}ngOnDestroy(){this.liftedStateSubscription.unsubscribe(),this.extensionStartSubscription.unsubscribe()}dispatch(t){this.dispatcher.next(t)}next(t){this.dispatcher.next(t)}error(t){}complete(){}performAction(t){this.dispatch(new zs(t,+Date.now()))}refresh(){this.dispatch(new Yy)}reset(){this.dispatch(new Qy(+Date.now()))}rollback(){this.dispatch(new Xy(+Date.now()))}commit(){this.dispatch(new Jy(+Date.now()))}sweep(){this.dispatch(new ex)}toggleAction(t){this.dispatch(new tx(t))}jumpToAction(t){this.dispatch(new rx(t))}jumpToState(t){this.dispatch(new nx(t))}importState(t){this.dispatch(new ix(t))}lockChanges(t){this.dispatch(new ox(t))}pauseRecording(t){this.dispatch(new ax(t))}static{this.\u0275fac=function(r){return new(r||e)(se(rh),se(hi),se(Ra),se(VT),se(Pa),se(Vn),se(Xc),se(nh))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();function CT({ngZone:e,connectInZone:n}){return t=>n?new De(r=>t.subscribe({next:i=>e.run(()=>r.next(i)),error:i=>e.run(()=>r.error(i)),complete:()=>e.run(()=>r.complete())})):t}var nV=new le("@ngrx/store-devtools Is Devtools Extension or Monitor Present");function rV(e,n){return!!e||n.monitor!==PT}function iV(){let e="__REDUX_DEVTOOLS_EXTENSION__";return typeof window=="object"&&typeof window[e]<"u"?window[e]:null}function oV(e){return e.state}function BT(e={}){return wr([VT,rh,wT,{provide:yT,useValue:e},{provide:nV,deps:[sx,nh],useFactory:rV},{provide:sx,useFactory:iV},{provide:nh,deps:[yT],useFactory:Zj},{provide:$s,deps:[wT],useFactory:oV},{provide:Bs,useExisting:rh}])}var YT=(()=>{class e{_renderer;_elementRef;onChange=t=>{};onTouched=()=>{};constructor(t,r){this._renderer=t,this._elementRef=r}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}static \u0275fac=function(r){return new(r||e)(Be(Ir),Be(An))};static \u0275dir=It({type:e})}return e})(),hh=(()=>{class e extends YT{static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,features:[Dt]})}return e})(),eo=new le("");var aV={provide:eo,useExisting:Un(()=>$n),multi:!0};function sV(){let e=Ar()?Ar().getUserAgent():"";return/android (\d+)/.test(e.toLowerCase())}var lV=new le(""),$n=(()=>{class e extends YT{_compositionMode;_composing=!1;constructor(t,r,i){super(t,r),this._compositionMode=i,this._compositionMode==null&&(this._compositionMode=!sV())}writeValue(t){let r=t??"";this.setProperty("value",r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}static \u0275fac=function(r){return new(r||e)(Be(Ir),Be(An),Be(lV,8))};static \u0275dir=It({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(r,i){r&1&&J("input",function(a){return i._handleInput(a.target.value)})("blur",function(){return i.onTouched()})("compositionstart",function(){return i._compositionStart()})("compositionend",function(a){return i._compositionEnd(a.target.value)})},standalone:!1,features:[Mn([aV]),Dt]})}return e})();function fx(e){return e==null||hx(e)===0}function hx(e){return e==null?null:Array.isArray(e)||typeof e=="string"?e.length:e instanceof Set?e.size:null}var ad=new le(""),gh=new le(""),cV=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,he=class{static min(n){return dV(n)}static max(n){return uV(n)}static required(n){return pV(n)}static requiredTrue(n){return fV(n)}static email(n){return hV(n)}static minLength(n){return gV(n)}static maxLength(n){return QT(n)}static pattern(n){return mV(n)}static nullValidator(n){return oh()}static compose(n){return r2(n)}static composeAsync(n){return o2(n)}};function dV(e){return n=>{if(n.value==null||e==null)return null;let t=parseFloat(n.value);return!isNaN(t)&&t{if(n.value==null||e==null)return null;let t=parseFloat(n.value);return!isNaN(t)&&t>e?{max:{max:e,actual:n.value}}:null}}function pV(e){return fx(e.value)?{required:!0}:null}function fV(e){return e.value===!0?null:{required:!0}}function hV(e){return fx(e.value)||cV.test(e.value)?null:{email:!0}}function gV(e){return n=>{let t=n.value?.length??hx(n.value);return t===null||t===0?null:t{let t=n.value?.length??hx(n.value);return t!==null&&t>e?{maxlength:{requiredLength:e,actualLength:t}}:null}}function mV(e){if(!e)return oh;let n,t;return typeof e=="string"?(t="",e.charAt(0)!=="^"&&(t+="^"),t+=e,e.charAt(e.length-1)!=="$"&&(t+="$"),n=new RegExp(t)):(t=e.toString(),n=e),r=>{if(fx(r.value))return null;let i=r.value;return n.test(i)?null:{pattern:{requiredPattern:t,actualValue:i}}}}function oh(e){return null}function XT(e){return e!=null}function JT(e){return Wi(e)?Kt(e):e}function e2(e){let n={};return e.forEach(t=>{n=t!=null?R(R({},n),t):n}),Object.keys(n).length===0?null:n}function t2(e,n){return n.map(t=>t(e))}function _V(e){return!e.validate}function n2(e){return e.map(n=>_V(n)?n:t=>n.validate(t))}function r2(e){if(!e)return null;let n=e.filter(XT);return n.length==0?null:function(t){return e2(t2(t,n))}}function i2(e){return e!=null?r2(n2(e)):null}function o2(e){if(!e)return null;let n=e.filter(XT);return n.length==0?null:function(t){let r=t2(t,n).map(JT);return nm(r).pipe(de(e2))}}function a2(e){return e!=null?o2(n2(e)):null}function $T(e,n){return e===null?[n]:Array.isArray(e)?[...e,n]:[e,n]}function s2(e){return e._rawValidators}function l2(e){return e._rawAsyncValidators}function dx(e){return e?Array.isArray(e)?e:[e]:[]}function ah(e,n){return Array.isArray(e)?e.includes(n):e===n}function zT(e,n){let t=dx(n);return dx(e).forEach(i=>{ah(t,i)||t.push(i)}),t}function HT(e,n){return dx(n).filter(t=>!ah(e,t))}var sh=class{get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators=[];_rawAsyncValidators=[];_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=i2(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=a2(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_onDestroyCallbacks=[];_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control?.reset(n)}hasError(n,t){return this.control?this.control.hasError(n,t):!1}getError(n,t){return this.control?this.control.getError(n,t):null}},Xi=class extends sh{name;get formDirective(){return null}get path(){return null}},Ji=class extends sh{_parent=null;name=null;valueAccessor=null},lh=class{_cd;constructor(n){this._cd=n}get isTouched(){return this._cd?.control?._touched?.(),!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return this._cd?.control?._pristine?.(),!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return this._cd?.control?._status?.(),!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return this._cd?._submitted?.(),!!this._cd?.submitted}};var er=(()=>{class e extends lh{constructor(t){super(t)}static \u0275fac=function(r){return new(r||e)(Be(Ji,2))};static \u0275dir=It({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(r,i){r&2&&We("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)},standalone:!1,features:[Dt]})}return e})(),tr=(()=>{class e extends lh{constructor(t){super(t)}static \u0275fac=function(r){return new(r||e)(Be(Xi,10))};static \u0275dir=It({type:e,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["","formArray",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(r,i){r&2&&We("ng-untouched",i.isUntouched)("ng-touched",i.isTouched)("ng-pristine",i.isPristine)("ng-dirty",i.isDirty)("ng-valid",i.isValid)("ng-invalid",i.isInvalid)("ng-pending",i.isPending)("ng-submitted",i.isSubmitted)},standalone:!1,features:[Dt]})}return e})();var td="VALID",ih="INVALID",Hs="PENDING",nd="DISABLED",Po=class{},ch=class extends Po{value;source;constructor(n,t){super(),this.value=n,this.source=t}},rd=class extends Po{pristine;source;constructor(n,t){super(),this.pristine=n,this.source=t}},id=class extends Po{touched;source;constructor(n,t){super(),this.touched=n,this.source=t}},Gs=class extends Po{status;source;constructor(n,t){super(),this.status=n,this.source=t}},ux=class extends Po{source;constructor(n){super(),this.source=n}},od=class extends Po{source;constructor(n){super(),this.source=n}};function gx(e){return(mh(e)?e.validators:e)||null}function vV(e){return Array.isArray(e)?i2(e):e||null}function mx(e,n){return(mh(n)?n.asyncValidators:e)||null}function yV(e){return Array.isArray(e)?a2(e):e||null}function mh(e){return e!=null&&!Array.isArray(e)&&typeof e=="object"}function c2(e,n,t){let r=e.controls;if(!(n?Object.keys(r):r).length)throw new oe(1e3,"");if(!r[t])throw new oe(1001,"")}function d2(e,n,t){e._forEachChild((r,i)=>{if(t[i]===void 0)throw new oe(1002,"")})}var qs=class{_pendingDirty=!1;_hasOwnPendingAsyncValidator=null;_pendingTouched=!1;_onCollectionChange=()=>{};_updateOn;_parent=null;_asyncValidationSubscription;_composedValidatorFn;_composedAsyncValidatorFn;_rawValidators;_rawAsyncValidators;value;constructor(n,t){this._assignValidators(n),this._assignAsyncValidators(t)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get status(){return ln(this.statusReactive)}set status(n){ln(()=>this.statusReactive.set(n))}_status=Wt(()=>this.statusReactive());statusReactive=et(void 0);get valid(){return this.status===td}get invalid(){return this.status===ih}get pending(){return this.status==Hs}get disabled(){return this.status===nd}get enabled(){return this.status!==nd}errors;get pristine(){return ln(this.pristineReactive)}set pristine(n){ln(()=>this.pristineReactive.set(n))}_pristine=Wt(()=>this.pristineReactive());pristineReactive=et(!0);get dirty(){return!this.pristine}get touched(){return ln(this.touchedReactive)}set touched(n){ln(()=>this.touchedReactive.set(n))}_touched=Wt(()=>this.touchedReactive());touchedReactive=et(!1);get untouched(){return!this.touched}_events=new qe;events=this._events.asObservable();valueChanges;statusChanges;get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(zT(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(zT(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(HT(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(HT(n,this._rawAsyncValidators))}hasValidator(n){return ah(this._rawValidators,n)}hasAsyncValidator(n){return ah(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){let t=this.touched===!1;this.touched=!0;let r=n.sourceControl??this;n.onlySelf||this._parent?.markAsTouched(X(R({},n),{sourceControl:r})),t&&n.emitEvent!==!1&&this._events.next(new id(!0,r))}markAllAsDirty(n={}){this.markAsDirty({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsDirty(n))}markAllAsTouched(n={}){this.markAsTouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:this}),this._forEachChild(t=>t.markAllAsTouched(n))}markAsUntouched(n={}){let t=this.touched===!0;this.touched=!1,this._pendingTouched=!1;let r=n.sourceControl??this;this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0,emitEvent:n.emitEvent,sourceControl:r})}),n.onlySelf||this._parent?._updateTouched(n,r),t&&n.emitEvent!==!1&&this._events.next(new id(!1,r))}markAsDirty(n={}){let t=this.pristine===!0;this.pristine=!1;let r=n.sourceControl??this;n.onlySelf||this._parent?.markAsDirty(X(R({},n),{sourceControl:r})),t&&n.emitEvent!==!1&&this._events.next(new rd(!1,r))}markAsPristine(n={}){let t=this.pristine===!1;this.pristine=!0,this._pendingDirty=!1;let r=n.sourceControl??this;this._forEachChild(i=>{i.markAsPristine({onlySelf:!0,emitEvent:n.emitEvent})}),n.onlySelf||this._parent?._updatePristine(n,r),t&&n.emitEvent!==!1&&this._events.next(new rd(!0,r))}markAsPending(n={}){this.status=Hs;let t=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new Gs(this.status,t)),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.markAsPending(X(R({},n),{sourceControl:t}))}disable(n={}){let t=this._parentMarkedDirty(n.onlySelf);this.status=nd,this.errors=null,this._forEachChild(i=>{i.disable(X(R({},n),{onlySelf:!0}))}),this._updateValue();let r=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new ch(this.value,r)),this._events.next(new Gs(this.status,r)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(X(R({},n),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){let t=this._parentMarkedDirty(n.onlySelf);this.status=td,this._forEachChild(r=>{r.enable(X(R({},n),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors(X(R({},n),{skipPristineCheck:t}),this),this._onDisabledChange.forEach(r=>r(!1))}_updateAncestors(n,t){n.onlySelf||(this._parent?.updateValueAndValidity(n),n.skipPristineCheck||this._parent?._updatePristine({},t),this._parent?._updateTouched({},t))}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){if(this._setInitialStatus(),this._updateValue(),this.enabled){let r=this._cancelExistingSubscription();this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===td||this.status===Hs)&&this._runAsyncValidator(r,n.emitEvent)}let t=n.sourceControl??this;n.emitEvent!==!1&&(this._events.next(new ch(this.value,t)),this._events.next(new Gs(this.status,t)),this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),n.onlySelf||this._parent?.updateValueAndValidity(X(R({},n),{sourceControl:t}))}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(t=>t._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?nd:td}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n,t){if(this.asyncValidator){this.status=Hs,this._hasOwnPendingAsyncValidator={emitEvent:t!==!1,shouldHaveEmitted:n!==!1};let r=JT(this.asyncValidator(this));this._asyncValidationSubscription=r.subscribe(i=>{this._hasOwnPendingAsyncValidator=null,this.setErrors(i,{emitEvent:t,shouldHaveEmitted:n})})}}_cancelExistingSubscription(){if(this._asyncValidationSubscription){this._asyncValidationSubscription.unsubscribe();let n=(this._hasOwnPendingAsyncValidator?.emitEvent||this._hasOwnPendingAsyncValidator?.shouldHaveEmitted)??!1;return this._hasOwnPendingAsyncValidator=null,n}return!1}setErrors(n,t={}){this.errors=n,this._updateControlsErrors(t.emitEvent!==!1,this,t.shouldHaveEmitted)}get(n){let t=n;return t==null||(Array.isArray(t)||(t=t.split(".")),t.length===0)?null:t.reduce((r,i)=>r&&r._find(i),this)}getError(n,t){let r=t?this.get(t):this;return r?.errors?r.errors[n]:null}hasError(n,t){return!!this.getError(n,t)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n,t,r){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),(n||r)&&this._events.next(new Gs(this.status,t)),this._parent&&this._parent._updateControlsErrors(n,t,r)}_initObservables(){this.valueChanges=new Ft,this.statusChanges=new Ft}_calculateStatus(){return this._allControlsDisabled()?nd:this.errors?ih:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(Hs)?Hs:this._anyControlsHaveStatus(ih)?ih:td}_anyControlsHaveStatus(n){return this._anyControls(t=>t.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n,t){let r=!this._anyControlsDirty(),i=this.pristine!==r;this.pristine=r,n.onlySelf||this._parent?._updatePristine(n,t),i&&this._events.next(new rd(this.pristine,t))}_updateTouched(n={},t){this.touched=this._anyControlsTouched(),this._events.next(new id(this.touched,t)),n.onlySelf||this._parent?._updateTouched(n,t)}_onDisabledChange=[];_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){mh(n)&&n.updateOn!=null&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){return!n&&!!this._parent?.dirty&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=vV(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=yV(this._rawAsyncValidators)}},Lt=class extends qs{constructor(n,t,r){super(gx(t),mx(r,t)),this.controls=n,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;registerControl(n,t){return this.controls[n]?this.controls[n]:(this.controls[n]=t,t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange),t)}addControl(n,t,r={}){this.registerControl(n,t),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}removeControl(n,t={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}setControl(n,t,r={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],t&&this.registerControl(n,t),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,t={}){d2(this,!0,n),Object.keys(n).forEach(r=>{c2(this,!0,r),this.controls[r].setValue(n[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(n,t={}){n!=null&&(Object.keys(n).forEach(r=>{let i=this.controls[r];i&&i.patchValue(n[r],{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(n={},t={}){this._forEachChild((r,i)=>{r.reset(n?n[i]:null,X(R({},t),{onlySelf:!0}))}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t),t?.emitEvent!==!1&&this._events.next(new od(this))}getRawValue(){return this._reduceChildren({},(n,t,r)=>(n[r]=t.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(t,r)=>r._syncPendingControls()?!0:t);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(t=>{let r=this.controls[t];r&&n(r,t)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(let[t,r]of Object.entries(this.controls))if(this.contains(t)&&n(r))return!0;return!1}_reduceValue(){let n={};return this._reduceChildren(n,(t,r,i)=>((r.enabled||this.disabled)&&(t[i]=r.value),t))}_reduceChildren(n,t){let r=n;return this._forEachChild((i,o)=>{r=t(r,i,o)}),r}_allControlsDisabled(){for(let n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}};var px=class extends Lt{};var sd=new le("",{factory:()=>_h}),_h="always";function u2(e,n){return[...n.path,e]}function dh(e,n,t=_h){_x(e,n),n.valueAccessor.writeValue(e.value),(e.disabled||t==="always")&&n.valueAccessor.setDisabledState?.(e.disabled),bV(e,n),CV(e,n),wV(e,n),xV(e,n)}function uh(e,n,t=!0){let r=()=>{};n?.valueAccessor?.registerOnChange(r),n?.valueAccessor?.registerOnTouched(r),fh(e,n),e&&(n._invokeOnDestroyCallbacks(),e._registerOnCollectionChange(()=>{}))}function ph(e,n){e.forEach(t=>{t.registerOnValidatorChange&&t.registerOnValidatorChange(n)})}function xV(e,n){if(n.valueAccessor.setDisabledState){let t=r=>{n.valueAccessor.setDisabledState(r)};e.registerOnDisabledChange(t),n._registerOnDestroy(()=>{e._unregisterOnDisabledChange(t)})}}function _x(e,n){let t=s2(e);n.validator!==null?e.setValidators($T(t,n.validator)):typeof t=="function"&&e.setValidators([t]);let r=l2(e);n.asyncValidator!==null?e.setAsyncValidators($T(r,n.asyncValidator)):typeof r=="function"&&e.setAsyncValidators([r]);let i=()=>e.updateValueAndValidity();ph(n._rawValidators,i),ph(n._rawAsyncValidators,i)}function fh(e,n){let t=!1;if(e!==null){if(n.validator!==null){let i=s2(e);if(Array.isArray(i)&&i.length>0){let o=i.filter(a=>a!==n.validator);o.length!==i.length&&(t=!0,e.setValidators(o))}}if(n.asyncValidator!==null){let i=l2(e);if(Array.isArray(i)&&i.length>0){let o=i.filter(a=>a!==n.asyncValidator);o.length!==i.length&&(t=!0,e.setAsyncValidators(o))}}}let r=()=>{};return ph(n._rawValidators,r),ph(n._rawAsyncValidators,r),t}function bV(e,n){n.valueAccessor.registerOnChange(t=>{e._pendingValue=t,e._pendingChange=!0,e._pendingDirty=!0,e.updateOn==="change"&&p2(e,n)})}function wV(e,n){n.valueAccessor.registerOnTouched(()=>{e._pendingTouched=!0,e.updateOn==="blur"&&e._pendingChange&&p2(e,n),e.updateOn!=="submit"&&e.markAsTouched()})}function p2(e,n){e._pendingDirty&&e.markAsDirty(),e.setValue(e._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(e._pendingValue),e._pendingChange=!1}function CV(e,n){let t=(r,i)=>{n.valueAccessor.writeValue(r),i&&n.viewToModelUpdate(r)};e.registerOnChange(t),n._registerOnDestroy(()=>{e._unregisterOnChange(t)})}function EV(e,n){e==null,_x(e,n)}function DV(e,n){return fh(e,n)}function vx(e,n){if(!e.hasOwnProperty("model"))return!1;let t=e.model;return t.isFirstChange()?!0:!Object.is(n,t.currentValue)}function SV(e){return Object.getPrototypeOf(e.constructor)===hh}function kV(e,n){e._syncPendingControls(),n.forEach(t=>{let r=t.control;r.updateOn==="submit"&&r._pendingChange&&(t.viewToModelUpdate(r._pendingValue),r._pendingChange=!1)})}function yx(e,n){if(!n)return null;Array.isArray(n);let t,r,i;return n.forEach(o=>{o.constructor===$n?t=o:SV(o)?r=o:i=o}),i||r||t||null}function TV(e,n){let t=e.indexOf(n);t>-1&&e.splice(t,1)}function GT(e,n){let t=e.indexOf(n);t>-1&&e.splice(t,1)}function qT(e){return typeof e=="object"&&e!==null&&Object.keys(e).length===2&&"value"in e&&"disabled"in e}var je=class extends qs{defaultValue=null;_onChange=[];_pendingValue;_pendingChange=!1;constructor(n=null,t,r){super(gx(t),mx(r,t)),this._applyFormState(n),this._setUpdateStrategy(t),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),mh(t)&&(t.nonNullable||t.initialValueIsDefault)&&(qT(n)?this.defaultValue=n.value:this.defaultValue=n)}setValue(n,t={}){this.value=this._pendingValue=n,this._onChange.length&&t.emitModelToViewChange!==!1&&this._onChange.forEach(r=>r(this.value,t.emitViewToModelChange!==!1)),this.updateValueAndValidity(t)}patchValue(n,t={}){this.setValue(n,t)}reset(n=this.defaultValue,t={}){this._applyFormState(n),this.markAsPristine(t),this.markAsUntouched(t),this.setValue(this.value,t),t.overwriteDefaultValue&&(this.defaultValue=this.value),this._pendingChange=!1,t?.emitEvent!==!1&&this._events.next(new od(this))}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){GT(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){GT(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(n){qT(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};var IV=e=>e instanceof je;var AV={provide:Ji,useExisting:Un(()=>xx)},WT=Promise.resolve(),xx=(()=>{class e extends Ji{_changeDetectorRef;callSetDisabledState;control=new je;static ngAcceptInputType_isDisabled;_registered=!1;viewModel;name="";isDisabled;model;options;update=new Ft;constructor(t,r,i,o,a,s){super(),this._changeDetectorRef=a,this.callSetDisabledState=s,this._parent=t,this._setValidators(r),this._setAsyncValidators(i),this.valueAccessor=yx(this,o)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),vx(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective?.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){dh(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._checkName()}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){WT.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,i=r!==0&&mS(r);WT.then(()=>{i&&!this.control.disabled?this.control.disable():!i&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?u2(t,this._parent):[t]}static \u0275fac=function(r){return new(r||e)(Be(Xi,9),Be(ad,10),Be(gh,10),Be(eo,10),Be(cn,8),Be(sd,8))};static \u0275dir=It({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"],options:[0,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],standalone:!1,features:[Mn([AV]),Dt,dr]})}return e})();var Oo=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275dir=It({type:e,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""],standalone:!1})}return e})(),MV={provide:eo,useExisting:Un(()=>bx),multi:!0},bx=(()=>{class e extends hh{writeValue(t){let r=t??"";this.setProperty("value",r)}registerOnChange(t){this.onChange=r=>{t(r==""?null:parseFloat(r))}}static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(r,i){r&1&&J("input",function(a){return i.onChange(a.target.value)})("blur",function(){return i.onTouched()})},standalone:!1,features:[Mn([MV]),Dt]})}return e})();var Ws=class extends qs{constructor(n,t,r){super(gx(t),mx(r,t)),this.controls=n,this._initObservables(),this._setUpdateStrategy(t),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}controls;at(n){return this.controls[this._adjustIndex(n)]}push(n,t={}){Array.isArray(n)?n.forEach(r=>{this.controls.push(r),this._registerControl(r)}):(this.controls.push(n),this._registerControl(n)),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}insert(n,t,r={}){this.controls.splice(n,0,t),this._registerControl(t),this.updateValueAndValidity({emitEvent:r.emitEvent})}removeAt(n,t={}){let r=this._adjustIndex(n);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),this.updateValueAndValidity({emitEvent:t.emitEvent})}setControl(n,t,r={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),t&&(this.controls.splice(i,0,t),this._registerControl(t)),this.updateValueAndValidity({emitEvent:r.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,t={}){d2(this,!1,n),n.forEach((r,i)=>{c2(this,!1,i),this.at(i).setValue(r,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t)}patchValue(n,t={}){n!=null&&(n.forEach((r,i)=>{this.at(i)&&this.at(i).patchValue(r,{onlySelf:!0,emitEvent:t.emitEvent})}),this.updateValueAndValidity(t))}reset(n=[],t={}){this._forEachChild((r,i)=>{r.reset(n[i],X(R({},t),{onlySelf:!0}))}),this._updatePristine(t,this),this._updateTouched(t,this),this.updateValueAndValidity(t),t?.emitEvent!==!1&&this._events.next(new od(this))}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(t=>t._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((t,r)=>r._syncPendingControls()?!0:t,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((t,r)=>{n(t,r)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(t=>t.enabled&&n(t))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(let n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}};var RV=(()=>{class e extends Xi{callSetDisabledState;get submitted(){return ln(this._submittedReactive)}set submitted(t){this._submittedReactive.set(t)}_submitted=Wt(()=>this._submittedReactive());_submittedReactive=et(!1);_oldForm;_onCollectionChange=()=>this._updateDomValue();directives=[];constructor(t,r,i){super(),this.callSetDisabledState=i,this._setValidators(t),this._setAsyncValidators(r)}ngOnChanges(t){this.onChanges(t)}ngOnDestroy(){this.onDestroy()}onChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}onDestroy(){this.form&&(fh(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get path(){return[]}addControl(t){let r=this.form.get(t.path);return dh(r,t,this.callSetDisabledState),r.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),r}getControl(t){return this.form.get(t.path)}removeControl(t){uh(t.control||null,t,!1),TV(this.directives,t)}addFormGroup(t){this._setUpFormContainer(t)}removeFormGroup(t){this._cleanUpFormContainer(t)}getFormGroup(t){return this.form.get(t.path)}getFormArray(t){return this.form.get(t.path)}addFormArray(t){this._setUpFormContainer(t)}removeFormArray(t){this._cleanUpFormContainer(t)}updateModel(t,r){this.form.get(t.path).setValue(r)}onReset(){this.resetForm()}resetForm(t=void 0,r={}){this.form.reset(t,r),this._submittedReactive.set(!1)}onSubmit(t){return this.submitted=!0,kV(this.form,this.directives),this.ngSubmit.emit(t),this.form._events.next(new ux(this.control)),t?.target?.method==="dialog"}_updateDomValue(){this.directives.forEach(t=>{let r=t.control,i=this.form.get(t.path);r!==i&&(uh(r||null,t),IV(i)&&(dh(i,t,this.callSetDisabledState),t.control=i))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(t){let r=this.form.get(t.path);EV(r,t),r.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(t){let r=this.form?.get(t.path);r&&DV(r,t)&&r.updateValueAndValidity({emitEvent:!1})}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm?._registerOnCollectionChange(()=>{})}_updateValidators(){_x(this.form,this),this._oldForm&&fh(this._oldForm,this)}_checkFormPresent(){this.form}static \u0275fac=function(r){return new(r||e)(Be(ad,10),Be(gh,10),Be(sd,8))};static \u0275dir=It({type:e,features:[Dt,dr]})}return e})();var wx=new le(""),PV={provide:Ji,useExisting:Un(()=>Oa)},Oa=(()=>{class e extends Ji{_ngModelWarningConfig;callSetDisabledState;viewModel;form;set isDisabled(t){}model;update=new Ft;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(t,r,i,o,a){super(),this._ngModelWarningConfig=o,this.callSetDisabledState=a,this._setValidators(t),this._setAsyncValidators(r),this.valueAccessor=yx(this,i)}ngOnChanges(t){if(this._isControlChanged(t)){let r=t.form.previousValue;r&&uh(r,this,!1),dh(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}vx(t,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&uh(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_isControlChanged(t){return t.hasOwnProperty("form")}static \u0275fac=function(r){return new(r||e)(Be(ad,10),Be(gh,10),Be(eo,10),Be(wx,8),Be(sd,8))};static \u0275dir=It({type:e,selectors:[["","formControl",""]],inputs:{form:[0,"formControl","form"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],standalone:!1,features:[Mn([PV]),Dt,dr]})}return e})();var OV={provide:Ji,useExisting:Un(()=>hr)},hr=(()=>{class e extends Ji{_ngModelWarningConfig;_added=!1;viewModel;control;name=null;set isDisabled(t){}model;update=new Ft;static _ngModelWarningSentOnce=!1;_ngModelWarningSent=!1;constructor(t,r,i,o,a){super(),this._ngModelWarningConfig=a,this._parent=t,this._setValidators(r),this._setAsyncValidators(i),this.valueAccessor=yx(this,o)}ngOnChanges(t){this._added||this._setUpControl(),vx(t,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective?.removeControl(this)}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}get path(){return u2(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_setUpControl(){this.control=this.formDirective.addControl(this),this._added=!0}static \u0275fac=function(r){return new(r||e)(Be(Xi,13),Be(ad,10),Be(gh,10),Be(eo,10),Be(wx,8))};static \u0275dir=It({type:e,selectors:[["","formControlName",""]],inputs:{name:[0,"formControlName","name"],isDisabled:[0,"disabled","isDisabled"],model:[0,"ngModel","model"]},outputs:{update:"ngModelChange"},standalone:!1,features:[Mn([OV]),Dt,dr]})}return e})();var NV={provide:Xi,useExisting:Un(()=>Rn)},Rn=(()=>{class e extends RV{form=null;ngSubmit=new Ft;get control(){return this.form}static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,selectors:[["","formGroup",""]],hostBindings:function(r,i){r&1&&J("submit",function(a){return i.onSubmit(a)})("reset",function(){return i.onReset()})},inputs:{form:[0,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],standalone:!1,features:[Mn([NV]),Dt]})}return e})(),FV={provide:eo,useExisting:Un(()=>No),multi:!0};function f2(e,n){return e==null?`${n}`:(n&&typeof n=="object"&&(n="Object"),`${e}: ${n}`.slice(0,50))}function LV(e){return e.split(":")[0]}var No=(()=>{class e extends hh{value;_optionMap=new Map;_idCounter=0;set compareWith(t){this._compareWith=t}_compareWith=Object.is;appRefInjector=A(pr).injector;destroyRef=A(an);cdr=A(cn);_queuedWrite=!1;_writeValueAfterRender(){this._queuedWrite||this.appRefInjector.destroyed||(this._queuedWrite=!0,Qp({write:()=>{this.destroyRef.destroyed||(this._queuedWrite=!1,this.writeValue(this.value))}},{injector:this.appRefInjector}))}writeValue(t){this.cdr.markForCheck(),this.value=t;let r=this._getOptionId(t),i=f2(r,t);this.setProperty("value",i)}registerOnChange(t){this.onChange=r=>{this.value=this._getOptionValue(r),t(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(t){for(let r of this._optionMap.keys())if(this._compareWith(this._optionMap.get(r),t))return r;return null}_getOptionValue(t){let r=LV(t);return this._optionMap.has(r)?this._optionMap.get(r):t}static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(r,i){r&1&&J("change",function(a){return i.onChange(a.target.value)})("blur",function(){return i.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[Mn([FV]),Dt]})}return e})(),Zs=(()=>{class e{_element;_renderer;_select;id;constructor(t,r,i){this._element=t,this._renderer=r,this._select=i,this._select&&(this.id=this._select._registerOption())}set ngValue(t){this._select!=null&&(this._select._optionMap.set(this.id,t),this._setElementValue(f2(this.id,t)),this._select._writeValueAfterRender())}set value(t){this._setElementValue(t),this._select?._writeValueAfterRender()}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}ngOnDestroy(){this._select?._optionMap.delete(this.id),this._select?._writeValueAfterRender()}static \u0275fac=function(r){return new(r||e)(Be(An),Be(Ir),Be(No,9))};static \u0275dir=It({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return e})(),jV={provide:eo,useExisting:Un(()=>h2),multi:!0};function ZT(e,n){return e==null?`${n}`:(typeof n=="string"&&(n=`'${n}'`),n&&typeof n=="object"&&(n="Object"),`${e}: ${n}`.slice(0,50))}function VV(e){return e.split(":")[0]}var h2=(()=>{class e extends hh{value;_optionMap=new Map;_idCounter=0;set compareWith(t){this._compareWith=t}_compareWith=Object.is;writeValue(t){this.value=t;let r;if(Array.isArray(t)){let i=t.map(o=>this._getOptionId(o));r=(o,a)=>{o._setSelected(i.indexOf(a.toString())>-1)}}else r=(i,o)=>{i._setSelected(!1)};this._optionMap.forEach(r)}registerOnChange(t){this.onChange=r=>{let i=[],o=r.selectedOptions;if(o!==void 0){let a=o;for(let s=0;s{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(r,i){r&1&&J("change",function(a){return i.onChange(a.target)})("blur",function(){return i.onTouched()})},inputs:{compareWith:"compareWith"},standalone:!1,features:[Mn([jV]),Dt]})}return e})(),Ks=(()=>{class e{_element;_renderer;_select;id;_value;constructor(t,r,i){this._element=t,this._renderer=r,this._select=i,this._select&&(this.id=this._select._registerOption(this))}set ngValue(t){this._select!=null&&(this._value=t,this._setElementValue(ZT(this.id,t)),this._select.writeValue(this._select.value))}set value(t){this._select?(this._value=t,this._setElementValue(ZT(this.id,t)),this._select.writeValue(this._select.value)):this._setElementValue(t)}_setElementValue(t){this._renderer.setProperty(this._element.nativeElement,"value",t)}_setSelected(t){this._renderer.setProperty(this._element.nativeElement,"selected",t)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static \u0275fac=function(r){return new(r||e)(Be(An),Be(Ir),Be(h2,9))};static \u0275dir=It({type:e,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"},standalone:!1})}return e})();function UV(e){return typeof e=="number"?e:parseInt(e,10)}var BV=(()=>{class e{_validator=oh;_onChange;_enabled;ngOnChanges(t){if(this.inputName in t){let r=this.normalizeInput(t[this.inputName].currentValue);this._enabled=this.enabled(r),this._validator=this._enabled?this.createValidator(r):oh,this._onChange?.()}}validate(t){return this._validator(t)}registerOnValidatorChange(t){this._onChange=t}enabled(t){return t!=null}static \u0275fac=function(r){return new(r||e)};static \u0275dir=It({type:e,features:[dr]})}return e})();var $V={provide:ad,useExisting:Un(()=>Cx),multi:!0},Cx=(()=>{class e extends BV{maxlength;inputName="maxlength";normalizeInput=t=>UV(t);createValidator=t=>QT(t);static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275dir=It({type:e,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(r,i){r&2&<("maxlength",i._enabled?i.maxlength:null)},inputs:{maxlength:"maxlength"},standalone:!1,features:[Mn([$V]),Dt]})}return e})();var g2=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275mod=Bn({type:e});static \u0275inj=Tn({})}return e})();function KT(e){return!!e&&(e.asyncValidators!==void 0||e.validators!==void 0||e.updateOn!==void 0)}var vh=(()=>{class e{useNonNullable=!1;get nonNullable(){let t=new e;return t.useNonNullable=!0,t}group(t,r=null){let i=this._reduceControls(t),o={};return KT(r)?o=r:r!==null&&(o.validators=r.validator,o.asyncValidators=r.asyncValidator),new Lt(i,o)}record(t,r=null){let i=this._reduceControls(t);return new px(i,r)}control(t,r,i){let o={};return this.useNonNullable?(KT(r)?o=r:(o.validators=r,o.asyncValidators=i),new je(t,X(R({},o),{nonNullable:!0}))):new je(t,r,i)}array(t,r,i){let o=t.map(a=>this._createControl(a));return new Ws(o,r,i)}_reduceControls(t){let r={};return Object.keys(t).forEach(i=>{r[i]=this._createControl(t[i])}),r}_createControl(t){if(t instanceof je)return t;if(t instanceof qs)return t;if(Array.isArray(t)){let r=t[0],i=t.length>1?t[1]:null,o=t.length>2?t[2]:null;return this.control(r,i,o)}else return this.control(t)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var m2=(()=>{class e{static withConfig(t){return{ngModule:e,providers:[{provide:sd,useValue:t.callSetDisabledState??_h}]}}static \u0275fac=function(r){return new(r||e)};static \u0275mod=Bn({type:e});static \u0275inj=Tn({imports:[g2]})}return e})(),nr=(()=>{class e{static withConfig(t){return{ngModule:e,providers:[{provide:wx,useValue:t.warnOnNgModelWithFormControl??"always"},{provide:sd,useValue:t.callSetDisabledState??_h}]}}static \u0275fac=function(r){return new(r||e)};static \u0275mod=Bn({type:e});static \u0275inj=Tn({imports:[g2]})}return e})();var zV=["captcha"],Ex=new le("CAPTCHA_CONFIG");function _2(e){return new De(n=>{if(!window)return;if(typeof window.hcaptcha<"u"){n.next(),n.complete();return}let t="https://hcaptcha.com/1/api.js?render=explicit";e&&(t+=`&hl=${e}`);let r=document.createElement("script");r.src=t,r.async=!0,r.defer=!0,r.onerror=i=>n.error(i),r.onload=()=>{n.next(),n.complete()},document.head.appendChild(r)})}var Ys=(()=>{class e{constructor(t,r,i){this.config=t,this.zone=r,this.platformId=i,this.verify=new Ft,this.expired=new Ft,this.error=new Ft,this.onChange=()=>{},this.onTouched=()=>{}}ngOnInit(){this.languageCode||(this.languageCode=this.config.languageCode),!Wv(this.platformId)&&(this.captcha$=_2(this.languageCode).subscribe(()=>{setTimeout(t=>{let r={sitekey:t.siteKey||t.config.siteKey,theme:t.theme,size:t.size,tabindex:t.tabIndex,callback:i=>{t.zone.run(()=>t.onVerify(i))},"expired-callback":i=>{t.zone.run(()=>t.onExpired(i))},"error-callback":i=>{t.zone.run(()=>t.onError(i))}};t.widgetId=window.hcaptcha.render(t.captcha.nativeElement,r)},50,this)},t=>{console.error("Failed to load hCaptcha script",t)}))}ngOnDestroy(){Wv(this.platformId)||this.captcha$.unsubscribe()}writeValue(t){this.value=t,CS(this.platformId)&&!this.value&&window.hcaptcha&&window.hcaptcha.reset(this.widgetId)}registerOnChange(t){this.onChange=t}registerOnTouched(t){this.onTouched=t}reset(){window.hcaptcha.reset(this.widgetId)}get value(){return this._value}set value(t){this._value=t,this.onChange(t),this.onTouched()}onVerify(t){this.value=t,this.verify.emit(t)}onExpired(t){this.expired.emit(t)}onError(t){this.error.emit(t)}static{this.\u0275fac=function(r){return new(r||e)(Be(Ex),Be(pt),Be(wa))}}static{this.\u0275cmp=yt({type:e,selectors:[["ng-hcaptcha"]],viewQuery:function(r,i){if(r&1&&bn(zV,7),r&2){let o;Ot(o=Nt())&&(i.captcha=o.first)}},inputs:{siteKey:"siteKey",theme:"theme",size:"size",tabIndex:"tabIndex",languageCode:"languageCode"},outputs:{verify:"verify",expired:"expired",error:"error"},standalone:!1,features:[Mn([{provide:eo,useExisting:Un(()=>e),multi:!0}])],decls:2,vars:0,consts:[["captcha",""],[1,"h-captcha"]],template:function(r,i){r&1&&Q(0,"div",1,0)},encapsulation:2})}}return e})();var HV=(()=>{class e{constructor(t,r){this.captchaConfig=t,this.zone=r}verify(){return new De(t=>{_2(this.captchaConfig.languageCode).subscribe(()=>{setTimeout(r=>{if(this.hCaptchaElement||(this.hCaptchaElement=document.createElement("div"),document.body.appendChild(this.hCaptchaElement)),!this.hCaptchaWidgetId){let i={sitekey:this.captchaConfig.siteKey,size:"invisible",callback:o=>{this.zone.run(()=>{t.next(o),t.complete(),this.resetHcaptcha()})},"expired-callback":o=>{this.zone.run(()=>{t.error(o),this.resetHcaptcha()})},"error-callback":o=>{this.zone.run(()=>{t.error(o),this.resetHcaptcha()})}};this.hCaptchaWidgetId=window.hcaptcha.render(this.hCaptchaElement,i)}window.hcaptcha.execute(this.hCaptchaWidgetId)},50,this)})})}resetHcaptcha(){window.hcaptcha.remove(this.hCaptchaWidgetId),this.hCaptchaElement=null,this.hCaptchaWidgetId=null}static{this.\u0275fac=function(r){return new(r||e)(se(Ex),se(pt))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})(),yh=(()=>{class e{static forRoot(t){return{ngModule:e,providers:[HV,{provide:Ex,useValue:t||[]}]}}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275mod=Bn({type:e})}static{this.\u0275inj=Tn({})}}return e})();var gi=(function(e){return e.BaseURL="BASE_URL",e.FirebaseConfig="FIREBASE_CONFIG",e.Env="ENV",e.IToken="IToken",e.ProxyLogsUrl="PROXY_LOGS_URL",e.ClientURL="CLIENT_BASE_URL",e})(gi||{});function Me(e){return typeof e=="string"?[e]:e instanceof Array?e:e instanceof Object?[].concat(...Object.keys(e).map(n=>e[n])):["Something went wrong."]}var qV=typeof global=="object"&&global&&global.Object===Object&&global,xh=qV;var WV=typeof self=="object"&&self&&self.Object===Object&&self,ZV=xh||WV||Function("return this")(),fn=ZV;var KV=fn.Symbol,Cn=KV;var v2=Object.prototype,YV=v2.hasOwnProperty,QV=v2.toString,ld=Cn?Cn.toStringTag:void 0;function XV(e){var n=YV.call(e,ld),t=e[ld];try{e[ld]=void 0;var r=!0}catch{}var i=QV.call(e);return r&&(n?e[ld]=t:delete e[ld]),i}var y2=XV;var JV=Object.prototype,e7=JV.toString;function t7(e){return e7.call(e)}var x2=t7;var n7="[object Null]",r7="[object Undefined]",b2=Cn?Cn.toStringTag:void 0;function i7(e){return e==null?e===void 0?r7:n7:b2&&b2 in Object(e)?y2(e):x2(e)}var gr=i7;function o7(e){return e!=null&&typeof e=="object"}var Pn=o7;var a7="[object Symbol]";function s7(e){return typeof e=="symbol"||Pn(e)&&gr(e)==a7}var Qs=s7;function l7(e,n){for(var t=-1,r=e==null?0:e.length,i=Array(r);++t0){if(++n>=L7)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}var N2=U7;function B7(e){return function(){return e}}var F2=B7;var $7=(function(){try{var e=rr(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Xs=$7;var z7=Xs?function(e,n){return Xs(e,"toString",{configurable:!0,enumerable:!1,value:F2(n),writable:!0})}:S2,L2=z7;var H7=N2(L2),j2=H7;function G7(e,n){for(var t=-1,r=e==null?0:e.length;++t-1&&e%1==0&&e-1&&e%1==0&&e<=nU}var kh=rU;function iU(e){return e!=null&&kh(e.length)&&!wh(e)}var Th=iU;var oU=Object.prototype;function aU(e){var n=e&&e.constructor,t=typeof n=="function"&&n.prototype||oU;return e===t}var el=aU;function sU(e,n){for(var t=-1,r=Array(e);++t-1}var uI=k9;function T9(e,n){var t=this.__data__,r=Fo(t,e);return r<0?(++this.size,t.push([e,n])):t[r][1]=n,this}var pI=T9;function ol(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n0&&t(s)?n>1?SI(s,n-1,t,r,i):ll(i,s):r||(i[i.length]=s)}return i}var kI=SI;function Y9(e){var n=e==null?0:e.length;return n?kI(e,1):[]}var TI=Y9;function Q9(e){return j2($2(e,void 0,TI),e+"")}var II=Q9;var X9=Rh(Object.getPrototypeOf,Object),cl=X9;var J9="[object Object]",eB=Function.prototype,tB=Object.prototype,AI=eB.toString,nB=tB.hasOwnProperty,rB=AI.call(Object);function iB(e){if(!Pn(e)||gr(e)!=J9)return!1;var n=cl(e);if(n===null)return!0;var t=nB.call(n,"constructor")&&n.constructor;return typeof t=="function"&&t instanceof t&&AI.call(t)==rB}var MI=iB;function oB(e,n,t){var r=-1,i=e.length;n<0&&(n=-n>i?0:i+n),t=t>i?i:t,t<0&&(t+=i),i=n>t?0:t-n>>>0,n>>>=0;for(var o=Array(i);++rs))return!1;var c=o.get(e),d=o.get(n);if(c&&d)return c==n&&d==e;var u=-1,p=!0,f=t&tz?new xA:void 0;for(o.set(e,n),o.set(n,e);++u1),o}),_i(e,Lh(e),t),r&&(t=$h(t,Mz|Rz|Pz,LA));for(var i=n.length;i--;)FA(t,n[i]);return t}),gl=Oz;var Vt=(e,n)=>`${e}/${n}`;var kt={getWidgetData:e=>Vt(e,":referenceId/widget"),sendOtp:e=>Vt(e,":referenceId/otp/send"),verifyOtpV2:e=>Vt(e,":referenceId/otp/verify"),verifyOtp:e=>Vt(e,"widget/verifyOtp"),resend:e=>Vt(e,"widget/retryOtp"),register:e=>Vt(e,"c/register?action=redirect"),login:e=>Vt(e,"c/login"),resetPassword:e=>Vt(e,"c/resetPassword"),verifyPasswordOtp:e=>Vt(e,"c/verifyResetPassword"),getUserDetails:e=>Vt(e,"c/getDetails"),getTimezones:e=>Vt(e,"timezones"),updateCompany:e=>Vt(e,"c/updateCompany"),leaveCompany:e=>Vt(e,"c/inviteAction/leave"),updateUser:e=>Vt(e,"c/updateUser"),addUser:e=>Vt(e,"c/addUser"),createRole:e=>Vt(e,"c/roles"),getCompanyUsers:e=>Vt(e,"c/getCompanyUsers"),createPermission:e=>Vt(e,"c/permission"),updatePermission:e=>Vt(e,"c/permission/:id"),updateRole:e=>Vt(e,"c/roles/:id"),getSubscriptionPlans:e=>Vt(e,"subscription/:referenceId/getSnippetsData"),upgradeSubscription:e=>Vt(e,"subscription/:referenceId/subscribe"),deleteUser:e=>Vt(e,"c/removeUser/:id"),updateUserRole:e=>Vt(e,"c/updateCUserRole/:id"),updateUserPermission:e=>Vt(e,"c/updateCUserPermissions/:id")};var Nz={withCredentials:!1,headers:{Accept:"application/json","Content-type":"application/json",Authorization:""}},jA=(()=>{class e{constructor(t,r){this.http=t,this.baseUrl=r,this.createUrl=i=>`${this.baseUrl}/${i}`}get(t,r,i){return i=R({withCredentials:!0},i),i=this.prepareOptions(i),i.params=r,this.http.get(t,i).pipe(Ht(o=>{}),jn(()=>{}))}post(t,r,i){return i=R({withCredentials:!0},i),i=this.prepareOptions(i),this.http.post(t,r,i).pipe(Ht(o=>{}),jn(()=>{}))}put(t,r,i){return i=R({withCredentials:!0},i),i=this.prepareOptions(i),this.http.put(t,r,i).pipe(Ht(o=>{}),jn(()=>{}))}delete(t,r,i){return i=R({withCredentials:!0},i),i=this.prepareOptions(i),i.search=this.objectToParams(r),this.http.delete(t,i).pipe(Ht(o=>{}),jn(()=>{}))}patch(t,r,i){return i=R({withCredentials:!0},i),i=this.prepareOptions(i),this.http.patch(t,r,i).pipe(Ht(o=>{}),jn(()=>{}))}prepareOptions(t){let r=R(R({},Pr(Nz)),t||{});return r.headers||(r.headers={}),r.headers.hasOwnProperty("noHeader")&&(r.headers.hasOwnProperty("Content-Type")&&delete r.headers["Content-Type"],delete r.headers.noHeader),r.withCredentials?r.withCredentials=!0:r.withCredentials=!1,r.headers=new pi(r.headers),r}isPrimitive(t){return t==null||typeof t!="function"&&typeof t!="object"}objectToParams(t={}){return Object.keys(t).map(r=>{let i=this.isPrimitive(t[r])?t[r]:JSON.stringify(t[r]);return`${r}=${i}`}).join("&")}static{this.\u0275fac=function(r){return new(r||e)(se(kf),se(gi.BaseURL))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Or=(()=>{class e{constructor(t,r,i){this.http=t,this.baseUrl=r,this.clientUrl=i,this.options={headers:{Accept:"application/json","Content-Type":"application/json"},withCredentials:!1}}getWidgetData(t,r){let i=kt.getWidgetData(this.baseUrl).replace(":referenceId",t);return this.http.post(i,r??{},this.options)}sendOtp(t){let r=t.referenceId;return this.options.headers.authkey=t.authkey,this.http.post(kt.sendOtp(this.baseUrl).replace(":referenceId",r),gl(t,"referenceId"),this.options)}verifyOtpV2(t){let r=t.referenceId;return this.options.headers.authkey=t.authkey,this.http.post(kt.verifyOtpV2(this.baseUrl).replace(":referenceId",r),gl(t,"referenceId"),this.options)}resendOtpService(t){return this.http.post(kt.resend(this.baseUrl),t,this.options).pipe(de(r=>r))}verifyOtpService(t){return this.http.post(kt.verifyOtp(this.baseUrl),t,this.options)}getIpInfo(t){return this.http.get(t,{},this.options)}callBackUrl(t,r={}){return this.http.get(t,r,this.options)}register(t){return this.http.post(kt.register(this.baseUrl),t,this.options)}login(t){return this.http.post(kt.login(this.baseUrl),t,this.options)}resetPassword(t){return this.http.post(kt.resetPassword(this.baseUrl),t,this.options)}verfyResetPasswordOtp(t){return this.http.post(kt.verifyPasswordOtp(this.baseUrl),t,this.options)}getUserDetailsData(t,r){this.options.headers.proxy_auth_token=t;let i=kt.getUserDetails(this.clientUrl);return this.http.get(i,r??{},this.options)}getOrganizationDetails(t){this.options.headers.proxy_auth_token=t;let r=kt.getUserDetails(this.clientUrl);return this.http.get(r,{fields:"currentCompany"},this.options)}getTimezones(t){let r=X(R({},this.options),{headers:X(R({},this.options.headers),{Authorization:t})}),i=kt.getTimezones(this.clientUrl);return this.http.get(i,{},r)}updateCompany(t,r){this.options.headers.proxy_auth_token=t;let i=kt.updateCompany(this.clientUrl);return this.http.put(i,{company:r},this.options)}leaveCompanyUser(t,r){this.options.headers.proxy_auth_token=r;let i=kt.leaveCompany(this.clientUrl);return this.http.post(i,{company_id:t},this.options)}updateUser(t,r,i){this.options.headers.proxy_auth_token=r;let o=kt.updateUser(this.clientUrl);return this.http.put(o,{user:{name:t,mobile:i}},this.options)}addUser(t,r){this.options.headers.proxy_auth_token=r;let i=kt.addUser(this.clientUrl);return this.http.post(i,t,this.options)}getRoles(t,r){this.options.headers.proxy_auth_token=t;let i=kt.createRole(this.clientUrl),o=r?{itemsPerPage:r}:{};return this.http.get(i,o,this.options)}createRole(t,r,i){this.options.headers.proxy_auth_token=i;let o=kt.createRole(this.clientUrl);return this.http.post(o,{name:t,cPermissions:r},this.options)}getCompanyUsers(t,r,i,o,a,s){this.options.headers.proxy_auth_token=t;let l=kt.getCompanyUsers(this.clientUrl),c={};return r&&(c.itemsPerPage=r),i!==void 0&&(c.pageNo=i+1),o&&(c.search=o),a?.length&&(c.exclude_role_ids=a.join(",")),s?.length&&(c.role_ids=s.join(",")),this.http.get(l,c,this.options)}createPermission(t,r){this.options.headers.proxy_auth_token=r;let i=kt.createPermission(this.clientUrl);return this.http.post(i,{name:t},this.options)}getPermissions(t,r){this.options.headers.proxy_auth_token=t;let i=kt.createPermission(this.clientUrl),o={};return r&&(o.itemsPerPage=r),this.http.get(i,o,this.options)}updateCompanyUser(t,r){this.options.headers.proxy_auth_token=r;let i=kt.updateUser(this.clientUrl);return this.http.put(i,t,this.options)}updatePermission(t,r){this.options.headers.proxy_auth_token=r;let i=t.name,o=kt.updatePermission(this.clientUrl).replace(":id",t.id);return this.http.put(o,{name:i},this.options)}updateRole(t,r){this.options.headers.proxy_auth_token=r;let i=kt.updateRole(this.clientUrl).replace(":id",t.id);return this.http.put(i,t,this.options)}getSubscriptionPlans(t,r){r&&(this.options.headers.proxy_auth_token=r);let i=kt.getSubscriptionPlans(this.clientUrl).replace(":referenceId",t);return this.http.get(i,{},this.options)}upgradeSubscription(t,r,i){i&&(this.options.headers.proxy_auth_token=i);let o=kt.upgradeSubscription(this.clientUrl).replace(":referenceId",t);return this.http.post(o,r,this.options)}deleteUser(t,r){this.options.headers.proxy_auth_token=r;let i=kt.deleteUser(this.clientUrl).replace(":id",t);return this.http.delete(i,{},this.options)}updateUserRole(t,r){this.options.headers.proxy_auth_token=r;let i=kt.updateUserRole(this.clientUrl).replace(":id",t.id);return this.http.put(i,t,this.options)}updateUserPermission(t,r){this.options.headers.proxy_auth_token=r;let i=kt.updateUserPermission(this.clientUrl).replace(":id",t.id);return this.http.put(i,t,this.options)}static{this.\u0275fac=function(r){return new(r||e)(se(jA),se(gi.BaseURL),se(gi.ClientURL))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var VA=(()=>{class e{static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-progress-bar"]],decls:2,vars:0,consts:[["role","progressbar","aria-label","Loading","aria-valuemin","0","aria-valuemax","100",1,"w-full","overflow-hidden","h-1","bg-indigo-100"],[1,"h-full","bg-indigo-600","animate-[indeterminate_1.5s_ease-in-out_infinite]"]],template:function(r,i){r&1&&(nn(0,"div",0),Wr(1,"div",1),un())},styles:["@keyframes _ngcontent-%COMP%_indeterminate{0%{transform:translate(-100%) scaleX(.3)}50%{transform:translate(25%) scaleX(.6)}to{transform:translate(100%) scaleX(.3)}}"],changeDetection:0})}}return e})();var Lz="https://control.msg91.com/app/assets/otp-provider/otp-provider.js",ml=(()=>{class e{constructor(){this.scriptAdded=!1,this.showlogin=new dt(!1),this.forgotPasswordMode=new dt({active:!1}),this.scriptLoading=new dt(!1),this.otpWidgetToken=new dt(null),this.otpWidgetError=new qe,this.loadWidgetFunc=()=>{this.scriptLoading.next(!1);let t={widgetId:this.widgetId,tokenAuth:this.tokenAuth,state:this.userState,success:r=>{this.otpWidgetToken.next(r.message)},failure:r=>{this.otpWidgetError.next(r)}};window.initSendOTP(t)}}setWidgetConfig(t,r,i){this.widgetId=t,this.tokenAuth=r,this.userState=i}loadScript(t=()=>this.scriptLoading.next(!1)){this.scriptLoading.next(!0);let r=document.getElementsByTagName("head")[0],i=new Date().getTime(),o=document.createElement("script");o.type="text/javascript",o.src=`${Lz}?v=${i}`,r.appendChild(o),o.onload=t,this.scriptAdded=!0}openWidget(){this.scriptAdded?this.loadWidgetFunc():this.loadScript(this.loadWidgetFunc)}openLogin(t){this.showlogin.next(t)}openForgotPassword(t=""){this.forgotPasswordMode.next({active:!0,prefillEmail:t})}closeForgotPassword(){this.forgotPasswordMode.next({active:!1})}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();var ud=class{_attachedHost=null;attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;n!=null&&(this._attachedHost=null,n.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(n){this._attachedHost=n}},Ax=class extends ud{component;viewContainerRef;injector;projectableNodes;bindings;constructor(n,t,r,i,o){super(),this.component=n,this.viewContainerRef=t,this.injector=r,this.projectableNodes=i,this.bindings=o||null}},Mx=class extends ud{templateRef;viewContainerRef;context;injector;constructor(n,t,r,i){super(),this.templateRef=n,this.viewContainerRef=t,this.context=r,this.injector=i}get origin(){return this.templateRef.elementRef}attach(n,t=this.context){return this.context=t,super.attach(n)}detach(){return this.context=void 0,super.detach()}},pd=class extends ud{element;constructor(n){super(),this.element=n instanceof An?n.nativeElement:n}},Rx=class{_attachedPortal=null;_disposeFn=null;_isDisposed=!1;hasAttached(){return!!this._attachedPortal}attach(n){if(n instanceof Ax)return this._attachedPortal=n,this.attachComponentPortal(n);if(n instanceof Mx)return this._attachedPortal=n,this.attachTemplatePortal(n);if(this.attachDomPortal&&n instanceof pd)return this._attachedPortal=n,this.attachDomPortal(n)}attachDomPortal=null;detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}},qh=class extends Rx{outletElement;_appRef;_defaultInjector;constructor(n,t,r){super(),this.outletElement=n,this._appRef=t,this._defaultInjector=r}attachComponentPortal(n){let t;if(n.viewContainerRef){let r=n.injector||n.viewContainerRef.injector,i=r.get(Gi,null,{optional:!0})||void 0;t=n.viewContainerRef.createComponent(n.component,{index:n.viewContainerRef.length,injector:r,ngModuleRef:i,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),this.setDisposeFn(()=>t.destroy())}else{let r=this._appRef,i=n.injector||this._defaultInjector||Bt.NULL,o=i.get(Ut,r.injector);t=gf(n.component,{elementInjector:i,environmentInjector:o,projectableNodes:n.projectableNodes||void 0,bindings:n.bindings||void 0}),r.attachView(t.hostView),this.setDisposeFn(()=>{r.viewCount>0&&r.detachView(t.hostView),t.destroy()})}return this.outletElement.appendChild(this._getComponentRootNode(t)),this._attachedPortal=n,t}attachTemplatePortal(n){let t=n.viewContainerRef,r=t.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return r.rootNodes.forEach(i=>this.outletElement.appendChild(i)),r.detectChanges(),this.setDisposeFn(()=>{let i=t.indexOf(r);i!==-1&&t.remove(i)}),this._attachedPortal=n,r}attachDomPortal=n=>{let t=n.element;t.parentNode;let r=this.outletElement.ownerDocument.createComment("dom-portal");t.parentNode.insertBefore(r,t),this.outletElement.appendChild(t),this._attachedPortal=n,super.setDisposeFn(()=>{r.parentNode&&r.parentNode.replaceChild(t,r)})};dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}};var UA="widget-overlay-styles";function BA(){$A()}function $A(){if(document.getElementById(UA))return;let e=window.__proxyAuth?.inlinedStyles;if(!e){console.warn("[proxy-auth] Widget overlay styles not found in bundle. Dialogs may not render correctly.");return}let n=document.createElement("style");n.id=UA,n.textContent=e,document.head.appendChild(n)}var Px=class{constructor(n,t,r){this._portal=n,this._outlet=t,this._placeholder=r}detach(){this._outlet.hasAttached()&&this._outlet.detach(),this._placeholder.parentNode?.insertBefore(this._portal.element,this._placeholder),this._placeholder.parentNode?.removeChild(this._placeholder),this._outlet.dispose()}},vi=(()=>{class e{constructor(){this._appRef=A(pr),this._injector=A(Bt)}attach(t){$A();let r=document.createComment("widget-portal-placeholder");t.parentNode.insertBefore(r,t);let i=document.createElement("div");i.setAttribute("data-widget-overlay",""),i.classList.add("proxy-widget-portal"),document.body.appendChild(i);let o=new qh(i,this._appRef,this._injector),a=new pd(t);return o.attach(a),new Px(a,o,r)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Va=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;var Wh=/^[0-9]*$/;var zA=/^[0-9-+()\/\\ ]+$/;var yi=/\#\#(.*?)\#\#/;var HA=/[^\u0000-\u00ff]/;var GA=/^[a-zA-Z]/;var qA=/^[A-Za-z][A-Za-z0-9\-\_]*$/;var WA=/[^\t\r\n\x20-\x7E]/;var oo=/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).*/,Ox=/^([a-zA-Z]+\s)*[a-zA-Z]+$/i,Zh=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$|^[0-9]{7,15}$/,ZA=/^[a-zA-Z0-9][a-zA-Z0-9_\s]+$/;function Kh(e){switch(e.responseType){case"json":return"response"in e?e.response:JSON.parse(e.responseText);case"document":return e.responseXML;default:return"response"in e?e.response:e.responseText}}var Yh=class{constructor(n,t,r,i="download_load"){this.originalEvent=n,this.xhr=t,this.request=r,this.type=i;let{status:o,responseType:a}=t;this.status=o??0,this.responseType=a??"";let s=t.getAllResponseHeaders();this.responseHeaders=s?s.split(` +`).reduce((d,u)=>{let p=u.indexOf(": ");return d[u.slice(0,p)]=u.slice(p+2),d},{}):{},this.response=Kh(t);let{loaded:l,total:c}=n;this.loaded=l,this.total=c}};var fd=ni(e=>function(t,r,i){this.message=t,this.name="AjaxError",this.xhr=r,this.request=i,this.status=r.status,this.responseType=r.responseType;let o;try{o=Kh(r)}catch{o=r.responseText}this.response=o}),KA=(()=>{function e(n,t){return fd.call(this,"ajax timeout",n,t),this.name="AjaxTimeoutError",this}return e.prototype=Object.create(fd.prototype),e})();function jz(e,n){return Qr({method:"GET",url:e,headers:n})}function Vz(e,n,t){return Qr({method:"POST",url:e,body:n,headers:t})}function Uz(e,n){return Qr({method:"DELETE",url:e,headers:n})}function Bz(e,n,t){return Qr({method:"PUT",url:e,body:n,headers:t})}function $z(e,n,t){return Qr({method:"PATCH",url:e,body:n,headers:t})}var zz=de(e=>e.response);function Hz(e,n){return zz(Qr({method:"GET",url:e,headers:n}))}var Qr=(()=>{let e=n=>qz(typeof n=="string"?{url:n}:n);return e.get=jz,e.post=Vz,e.delete=Uz,e.put=Bz,e.patch=$z,e.getJSON=Hz,e})(),Gz="upload",YA="download",Nx="loadstart",Fx="progress",QA="load";function qz(e){return new De(n=>{var t,r;let i=Object.assign({async:!0,crossDomain:!1,withCredentials:!1,method:"GET",timeout:0,responseType:"json"},e),{queryParams:o,body:a,headers:s}=i,l=i.url;if(!l)throw new TypeError("url is required");if(o){let w;if(l.includes("?")){let P=l.split("?");if(2w.set(V,N)),l=P[0]+"?"+w}else w=new URLSearchParams(o),l=l+"?"+w}let c={};if(s)for(let w in s)s.hasOwnProperty(w)&&(c[w.toLowerCase()]=s[w]);let d=i.crossDomain;!d&&!("x-requested-with"in c)&&(c["x-requested-with"]="XMLHttpRequest");let{withCredentials:u,xsrfCookieName:p,xsrfHeaderName:f}=i;if((u||!d)&&p&&f){let w=(r=(t=document?.cookie.match(new RegExp(`(^|;\\s*)(${p})=([^;]*)`)))===null||t===void 0?void 0:t.pop())!==null&&r!==void 0?r:"";w&&(c[f]=w)}let h=Wz(a,c),v=Object.assign(Object.assign({},i),{url:l,headers:c,body:h}),b;b=e.createXHR?e.createXHR():new XMLHttpRequest;{let{progressSubscriber:w,includeDownloadProgress:P=!1,includeUploadProgress:N=!1}=e,V=(T,I)=>{b.addEventListener(T,()=>{var O;let z=I();(O=w?.error)===null||O===void 0||O.call(w,z),n.error(z)})};V("timeout",()=>new KA(b,v)),V("abort",()=>new fd("aborted",b,v));let M=(T,I)=>new Yh(I,b,v,`${T}_${I.type}`),K=(T,I,O)=>{T.addEventListener(I,z=>{n.next(M(O,z))})};N&&[Nx,Fx,QA].forEach(T=>K(b.upload,T,Gz)),w&&[Nx,Fx].forEach(T=>b.upload.addEventListener(T,I=>{var O;return(O=w?.next)===null||O===void 0?void 0:O.call(w,I)})),P&&[Nx,Fx].forEach(T=>K(b,T,YA));let Y=T=>{let I="ajax error"+(T?" "+T:"");n.error(new fd(I,b,v))};b.addEventListener("error",T=>{var I;(I=w?.error)===null||I===void 0||I.call(w,T),Y()}),b.addEventListener(QA,T=>{var I,O;let{status:z}=b;if(z<400){(I=w?.complete)===null||I===void 0||I.call(w);let q;try{q=M(YA,T)}catch(F){n.error(F);return}n.next(q),n.complete()}else(O=w?.error)===null||O===void 0||O.call(w,T),Y(z)})}let{user:_,method:y,async:S}=v;_?b.open(y,l,S,_,v.password):b.open(y,l,S),S&&(b.timeout=v.timeout,b.responseType=v.responseType),"withCredentials"in b&&(b.withCredentials=v.withCredentials);for(let w in c)c.hasOwnProperty(w)&&b.setRequestHeader(w,c[w]);return h?b.send(h):b.send(),()=>{b&&b.readyState!==4&&b.abort()}})}function Wz(e,n){var t;if(!e||typeof e=="string"||Jz(e)||eH(e)||Kz(e)||Yz(e)||Qz(e)||tH(e))return e;if(Xz(e))return e.buffer;if(typeof e=="object")return n["content-type"]=(t=n["content-type"])!==null&&t!==void 0?t:"application/json;charset=utf-8",JSON.stringify(e);throw new TypeError("Unknown body type")}var Zz=Object.prototype.toString;function Lx(e,n){return Zz.call(e)===`[object ${n}]`}function Kz(e){return Lx(e,"ArrayBuffer")}function Yz(e){return Lx(e,"File")}function Qz(e){return Lx(e,"Blob")}function Xz(e){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView(e)}function Jz(e){return typeof FormData<"u"&&e instanceof FormData}function eH(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}function tH(e){return typeof ReadableStream<"u"&&e instanceof ReadableStream}var Wn=(function(e){return e.Authorization="authorization",e.UserProfile="user-profile",e.UserManagement="user-management",e.OrganizationDetails="organization-details",e.Subscription="subscription",e})(Wn||{}),xt=(function(e){return e.System="system",e.Light="light",e.Dark="dark",e})(xt||{});var XA="userProxyContainer";var jx=new Date,tDe=(new Date().getDay()+1)%7,nDe=jx.getDay(),rDe=(jx.getMonth()+1)%12,iDe=jx.getDate(),_l="meta-tag-id-proxy-otp-provider";var oDe=new Map(Object.entries({settings:!1,email:!1,rcs:!1,segmento:!1,campaigns:!1,hello:!1,whatsapp:!1,subscription:!1,voice:!1,shorturl:!1,otp:!1,sms:!1,reports:!1,files:!1,knowledgebase:!1,telegram:!1,notifications:!1,numbers:!1}));var JA={nationalMode:!0,utilsScript:"https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js",autoHideDialCode:!1,separateDialCode:!1,initialCountry:"auto",geoIpLookup:(e,n)=>{let t="in";Qr({url:"https://api.db-ip.com/v2/free/self",method:"GET"}).subscribe({next:i=>{if(i?.response?.ipAddress)Qr({url:`http://ip-api.com/json/${i.response.ipAddress}`,method:"GET"}).subscribe({next:a=>a?.response?.countryCode?e(a.response.countryCode):e(t),error:a=>{Qr({url:`https://ipinfo.io/${i.response.ipAddress}/json`,method:"GET"}).subscribe({next:l=>l?.response?.country?e(l.response.country):e(t),error:l=>e(t)})}});else return e(t)},error:i=>e(t)})}},nH=new Date(new Date().getFullYear(),new Date().getMonth(),1),rH=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()-6),eM=new Date,aDe=Pr({start:nH,end:eM}),sDe=Pr({start:rH,end:eM});var vl=class{constructor(n,t,r,i=!1,o={}){this.inputElement=n;let a=document.createElement("script");a.type="text/javascript",a.src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/intlTelInput.min.js";let s=()=>{this.intl=window.intlTelInput(n,R(R({},JA),o)),this.checkMobileFlag(t,i)};a.onload=()=>s();let l=document.createElement("link");l.rel="stylesheet",l.href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/css/intlTelInput.css";let c=document.createElement("link");if(c.rel="stylesheet",c.href=`${r}`,t&&(t.appendChild(a),t.appendChild(l),t.appendChild(c)),setTimeout(()=>{document.head.appendChild(a),document.head.appendChild(l)},200),window.intlTelInput&&s(),document.getElementById("iti-0__country-listbox")){let u=Array.from(document.getElementsByClassName("iti__flag"));for(let p=0;p{setTimeout(()=>{this.isRequiredValidNumber?n.classList.remove("invalid-input"):n.classList.add("invalid-input")},100)}),this.showCountryDropdown(n,t)}set phoneNumber(n){this.intl?.setNumber(n)}set setCountry(n){this.intl?.setCountry(n)}get intlData(){return this.intl}get phoneNumber(){return this.intl?.getNumber()}get isRequiredValidNumber(){return this.intl?.isValidNumber()}get isValidNumber(){return this.intl?.getNumber()?.length?this.intl?.isValidNumber():!0}get selectedCountryData(){return this.intl?.getSelectedCountryData()}get getExtension(){return this.intl?.getExtension()}checkMobileFlag(n,t){let r=0,i=setInterval(()=>{let o=document.querySelector("body.iti-mobile"),a=0,s=setInterval(()=>{let c=(this.inputElement?.closest?.(".iti")||n).querySelector(".iti__flag-container");t&&(this.changeFlagZIndexInterval=setInterval(()=>{let d=document.querySelector(".iti--container");d?.setAttribute("style","z-index: 9999999"),d&&clearInterval(this.changeFlagZIndexInterval)},100)),(c||a>10)&&clearInterval(s),a++},200);r++,(o||r>5)&&clearInterval(i)},200)}showCountryDropdown(n,t){let r=()=>n?.closest?.(".iti")||t,i=(o=0)=>{let a=r(),s=a.querySelector(".iti__flag-container");a.querySelector(".iti__country-list")&&s?s.addEventListener("click",c=>{let d=r(),u=d.querySelector(".iti__flag-container"),p=d.querySelector(".iti__country-list");if(!u||!p)return;let f=u.getBoundingClientRect(),h=f.bottom,v=f.left;p.setAttribute("style","position: fixed; top:"+h+"px; left:"+v+"px; z-index: 9999;")}):o<20&&setTimeout(()=>i(o+1),200)};setTimeout(()=>i(),700)}onlyPhoneNumber(n){let t=String.fromCharCode(n.charCode);(n.key!=="Backspace"&&!new RegExp(zA).test(t)||n.code==="Space")&&n.preventDefault()}clearChangeFlagZIndexInterval(){clearInterval(this.changeFlagZIndexInterval)}destroyIntlClass(){this.intl?.destroy()}};function tM(e){if(e){let n=e?.match(new RegExp(yi,"gm"));if(n?.length)return n.filter(t=>!t.replace(yi,"$1").match(qA))}return[]}function nM(e){return!(e&&e?.match(new RegExp(yi,"gm"))?.find(n=>n==="####"))}function rM(e){if(e){let n=e?.match(new RegExp(yi,"gm"));if(n?.length)return n.filter(t=>t.replace(yi,"$1").length>32)}return[]}var iH=Gd(iM());var gd=Gd(zx());function Hx(e,n){return Object.keys(e).forEach(t=>{e[t]===null||e[t]===void 0||e[t]===""?delete e[t]:typeof e[t]=="object"&&(e[t]=Hx(e[t]),n&&!Object.keys(e[t]??{})?.length&&delete e[t])}),e}var xi=class e{static multipleEmailValidator(n){return!n||n&&!n.value?null:(n.value||"").split(",").some(i=>he.email(new je(i)))?{multipleemails:!0}:null}static containsOnlyVariables(n){if(!n||n&&!n.value)return null;let t=Pr(n.value||""),r=t.match(yi);if(!r)return null;for(;r;)t=t.replace(yi,""),r=t.match(yi);return t.trim().length?null:{containsOnlyVariables:!0}}static emailVariableCheck(n){let t=[];return nM(n?.value)?(t=tM(n?.value),t.length?{emailVariableCheck:{invalidVar:t,errorMessage:"Variables must contain only alphanumeric, dashes, underscores and must start with alphabet only"}}:(t=rM(n?.value),t.length?{emailVariableCheck:{invalidVar:t,errorMessage:"Variables must not contain more than 32 characters"}}:null)):{emailVariableCheck:{errorMessage:"#### is not allowed, Variable must contain atleast one character"}}}static noWhitespaceValidator(n){let t=typeof n.value!="string"?String(n.value):n.value,r=(t||"").length===0,i=(t||"").trim().length===0,o=(t||"").replace(/^\n+|\n+$/g,"").length===0;return!i&&!o||r?null:{whitespace:"value is only whitespace"}}static noWhitespaceValidatorAsync(){return n=>{let t=n.value;return/\s/.test(t)?Promise.resolve({whitespace:!0}):Promise.resolve(null)}}static hasOnlySpaceAsync(){return n=>{let t=n.value;return!t||t.length===0?fe(null):t.trim().length===0?fe({hasOnlySpace:!0}):fe(null)}}static noStartEndDashValidator(n){let t=typeof n.value!="string"?String(n.value):n.value,r=(t||"").length===0;return!!(t.length&&t[0]!=="-"&&t[t.length-1]!=="-")||r?null:{noStartEndDashValidator:!0}}static passwordsMatch(n,t){return r=>r.value&&n&&n.controls[t].value===r.value?null:{mismatch:!0}}static passwordsMatchWithConfirm(n,t){return r=>r.value&&n&&n.controls[t].value===r.value?{mismatchwithconfirm:!1}:{mismatchwithconfirm:!0}}static MustMatch(n,t){return r=>{let i=r.controls[n],o=r.controls[t];o.errors&&!o.errors.mustMatch||(i.value!==o.value?o.setErrors({mustMatch:!0}):o.setErrors(null))}}static OR(n,t){return r=>{let i=n(r);return i?(i=t(r),i||null):null}}static validUrl(n){return n.value?/^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/.test(n.value)?null:{url:!0}:null}static validJson(n){try{JSON.parse(n.value)}catch{return{json:!0}}return null}static cannotContainSpace(n){return n.value&&n.value.indexOf(" ")>=0?{cannotContainSpace:!0}:null}static startWithAlpha(n){return n.value&&!GA.test(n.value)?{startWithAlpha:!0}:null}static noStartEndSpaces(n){return n.value&&(n.value.toString().startsWith(" ")||n.value.toString().endsWith(" "))?{noStartEndSpaces:!0}:null}static noStartEndHyphenOrUnderscore(n){return n?.value?.toString()?.startsWith("_")||n?.value?.toString()?.endsWith("_")||n?.value?.toString()?.startsWith("-")||n?.value?.toString()?.endsWith("-")?{noStartEndHyphenOrUnderscore:!0}:null}static noStartEndSpacesFroalaContain(n){let t=(n.value||"").replace(/<[^>]*>/g,"").replace(/ /g,"").trim();return t?t&&(t.toString().startsWith(" ")||t.toString().endsWith(" "))?{noStartEndSpacesFroalaContain:!0}:null:{noStartEndSpacesFroalaContain:!0}}static onlySpaceFroalaContain(n){return!(n.value||"").replace(/<[^>]*>/g,"").replace(/ /g,"").trim()&&!(n.value||"").includes("t.value&&!n.includes(t.value)?{files:!0}:null}static minLengthThreeWithoutSpace(n){return n.value&&n.value.trim()?.length<3?{minlengthWithSpace:!0}:null}static minLengthFourWithoutSpace(n){return n.value&&n.value.trim()?.length<4?{minlengthWithSpace:!0}:null}static websiteCount(n){return n.value.split(",").filter(t=>t.trim().length).length>2?{count:"Only 2 websites are allowed."}:null}static valueExist(){return n=>{if(!n||!n.parent)return null;let t=n.value.trim();return n.root.value.map(i=>i.ip).includes(t)&&t.length?{currentExist:!0}:null}}static removeNullKeys(n){return Object.entries(n).reduce((t,[r,i])=>(i===null||(t[r]=i),t),{})}static elementExistsInList(n,t){return r=>{if(r.value){let i;if(t?i=r.value[t]:i=r.value,!n.find(o=>o===i))return{elementExistsInList:!0}}return null}}static minSelected(n){return t=>t.value&&t.value?.length<(n??1)?{minSelected:!0}:null}static checkTextType(n){return t=>{if(t.value){let r=t.value.match(new RegExp(HA,"gm"));return r?.length?n==="Unicode"?null:{checkTextType:!0,invalidCharacters:r}:n==="Normal"?null:{checkTextType:!0}}return null}}static onlyAsciiPrintable(n){if(n.value){let t=n.value.match(new RegExp(WA,"gm"));if(t)return{onlyAsciiPrintable:{invalidCharacters:t}}}return null}static onlyOneOccurrence(n){return t=>t.value&&t.value.match(n)?.length>1?{onlyOneOccurrence:!0}:null}static greaterThan(n,t,r=1,i=""){return o=>{if(o&&o.get(n)&&o.get(t)){let a=o.get(n)?.value,s=o.get(t)?.value,l=o.get(i)?.value;return s>0&&a>s*r?(o.get(n)?.setErrors({limitExceeded:!0}),o.get(n)?.markAsTouched(),{limitExceeded:!0}):s===0&&(l===1||i==="INR")&&a>5e3?(o.get(n)?.setErrors({limitExceeded:{limitValue:5e3}}),o.get(n)?.markAsTouched(),{limitExceeded:{limitValue:5e3}}):s===0&&(l!==1||i==="USD"||i==="GBP")&&i!=="INR"&&a>100?(o.get(n)?.setErrors({limitExceeded:{limitValue:100}}),o.get(n)?.markAsTouched(),{limitExceeded:{limitValue:100}}):(o.get(n)?.setErrors(null),null)}return null}}static validateJsonIfProvided(n){return n.value?e.validJson(n):null}static noStartEndCharacter(n=""){return t=>t?.value.toString().startsWith(n)||t.value.toString().endsWith(n)?{noStartEndCharacter:!0}:null}static limitCountByPattern(n="",t){return r=>r?.value.toString()&&(r?.value.toString()).split(n).length>t?{limitCountByPattern:!0,maxLimitCount:t}:null}static atleastOneValueInChipList(n){return t=>n?.size?null:{atleastOneValueInChipList:!0}}static valueSameAsControl(n,t){return r=>{let i;if(t)i=t;else if(n)i=r?.parent?.get(n??"");else throw new Error("Provide controlPath or formControl");return i&&r.value&&r.value!==i?.value?{valueSameAsControl:!0}:null}}};var Ze="primary",Td=Symbol("RouteTitle"),Kx=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let t=this.params[n];return Array.isArray(t)?t[0]:t}return null}getAll(n){if(this.has(n)){let t=this.params[n];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}};function za(e){return new Kx(e)}function Gx(e,n,t){for(let r=0;re.length||t.pathMatch==="full"&&(n.hasChildren()||r.lengthe.length||t.pathMatch==="full"&&n.hasChildren()&&t.path!=="**")return null;let s={};return!Gx(o,e.slice(0,o.length),s)||!Gx(a,e.slice(e.length-a.length),s)?null:{consumed:e,posParams:s}}function U0(e){return new Promise((n,t)=>{e.pipe(Ni()).subscribe({next:r=>n(r),error:r=>t(r)})})}function oH(e,n){if(e.length!==n.length)return!1;for(let t=0;tr[o]===i)}else return e===n}function aH(e){return e.length>0?e[e.length-1]:null}function Ga(e){return ta(e)?e:Wi(e)?Kt(Promise.resolve(e)):fe(e)}function bR(e){return ta(e)?U0(e):Promise.resolve(e)}var sH={exact:CR,subset:ER},wR={exact:cH,subset:dH,ignored:()=>!0},lH={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},uR={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};function pR(e,n,t){return sH[t.paths](e.root,n.root,t.matrixParams)&&wR[t.queryParams](e.queryParams,n.queryParams)&&!(t.fragment==="exact"&&e.fragment!==n.fragment)}function cH(e,n){return bi(e,n)}function CR(e,n,t){if(!$a(e.segments,n.segments)||!F0(e.segments,n.segments,t)||e.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!e.children[r]||!CR(e.children[r],n.children[r],t))return!1;return!0}function dH(e,n){return Object.keys(n).length<=Object.keys(e).length&&Object.keys(n).every(t=>xR(e[t],n[t]))}function ER(e,n,t){return DR(e,n,n.segments,t)}function DR(e,n,t,r){if(e.segments.length>t.length){let i=e.segments.slice(0,t.length);return!(!$a(i,t)||n.hasChildren()||!F0(i,t,r))}else if(e.segments.length===t.length){if(!$a(e.segments,t)||!F0(e.segments,t,r))return!1;for(let i in n.children)if(!e.children[i]||!ER(e.children[i],n.children[i],r))return!1;return!0}else{let i=t.slice(0,e.segments.length),o=t.slice(e.segments.length);return!$a(e.segments,i)||!F0(e.segments,i,r)||!e.children[Ze]?!1:DR(e.children[Ze],n,o,r)}}function F0(e,n,t){return n.every((r,i)=>wR[t](e[i].parameters,r.parameters))}var Jr=class{root;queryParams;fragment;_queryParamMap;constructor(n=new bt([],{}),t={},r=null){this.root=n,this.queryParams=t,this.fragment=r}get queryParamMap(){return this._queryParamMap??=za(this.queryParams),this._queryParamMap}toString(){return fH.serialize(this)}},bt=class{segments;children;parent=null;constructor(n,t){this.segments=n,this.children=t,Object.values(t).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return L0(this)}},Bo=class{path;parameters;_parameterMap;constructor(n,t){this.path=n,this.parameters=t}get parameterMap(){return this._parameterMap??=za(this.parameters),this._parameterMap}toString(){return kR(this)}};function uH(e,n){return $a(e,n)&&e.every((t,r)=>bi(t.parameters,n[r].parameters))}function $a(e,n){return e.length!==n.length?!1:e.every((t,r)=>t.path===n[r].path)}function pH(e,n){let t=[];return Object.entries(e.children).forEach(([r,i])=>{r===Ze&&(t=t.concat(n(i,r)))}),Object.entries(e.children).forEach(([r,i])=>{r!==Ze&&(t=t.concat(n(i,r)))}),t}var ag=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>new Ha,providedIn:"root"})}return e})(),Ha=class{parse(n){let t=new Xx(n);return new Jr(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(n){let t=`/${md(n.root,!0)}`,r=mH(n.queryParams),i=typeof n.fragment=="string"?`#${hH(n.fragment)}`:"";return`${t}${r}${i}`}},fH=new Ha;function L0(e){return e.segments.map(n=>kR(n)).join("/")}function md(e,n){if(!e.hasChildren())return L0(e);if(n){let t=e.children[Ze]?md(e.children[Ze],!1):"",r=[];return Object.entries(e.children).forEach(([i,o])=>{i!==Ze&&r.push(`${i}:${md(o,!1)}`)}),r.length>0?`${t}(${r.join("//")})`:t}else{let t=pH(e,(r,i)=>i===Ze?[md(e.children[Ze],!1)]:[`${i}:${md(r,!1)}`]);return Object.keys(e.children).length===1&&e.children[Ze]!=null?`${L0(e)}/${t[0]}`:`${L0(e)}/(${t.join("//")})`}}function SR(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function O0(e){return SR(e).replace(/%3B/gi,";")}function hH(e){return encodeURI(e)}function Qx(e){return SR(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function j0(e){return decodeURIComponent(e)}function fR(e){return j0(e.replace(/\+/g,"%20"))}function kR(e){return`${Qx(e.path)}${gH(e.parameters)}`}function gH(e){return Object.entries(e).map(([n,t])=>`;${Qx(n)}=${Qx(t)}`).join("")}function mH(e){let n=Object.entries(e).map(([t,r])=>Array.isArray(r)?r.map(i=>`${O0(t)}=${O0(i)}`).join("&"):`${O0(t)}=${O0(r)}`).filter(t=>t);return n.length?`?${n.join("&")}`:""}var _H=/^[^\/()?;#]+/;function qx(e){let n=e.match(_H);return n?n[0]:""}var vH=/^[^\/()?;=#]+/;function yH(e){let n=e.match(vH);return n?n[0]:""}var xH=/^[^=?&#]+/;function bH(e){let n=e.match(xH);return n?n[0]:""}var wH=/^[^&#]+/;function CH(e){let n=e.match(wH);return n?n[0]:""}var Xx=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new bt([],{}):new bt([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(n=0){if(n>50)throw new oe(4010,!1);if(this.remaining==="")return{};this.consumeOptional("/");let t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());let r={};this.peekStartsWith("/(")&&(this.capture("/"),r=this.parseParens(!0,n));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1,n)),(t.length>0||Object.keys(r).length>0)&&(i[Ze]=new bt(t,r)),i}parseSegment(){let n=qx(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new oe(4009,!1);return this.capture(n),new Bo(j0(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let t=yH(this.remaining);if(!t)return;this.capture(t);let r="";if(this.consumeOptional("=")){let i=qx(this.remaining);i&&(r=i,this.capture(r))}n[j0(t)]=j0(r)}parseQueryParam(n){let t=bH(this.remaining);if(!t)return;this.capture(t);let r="";if(this.consumeOptional("=")){let a=CH(this.remaining);a&&(r=a,this.capture(r))}let i=fR(t),o=fR(r);if(n.hasOwnProperty(i)){let a=n[i];Array.isArray(a)||(a=[a],n[i]=a),a.push(o)}else n[i]=o}parseParens(n,t){let r={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let i=qx(this.remaining),o=this.remaining[i.length];if(o!=="/"&&o!==")"&&o!==";")throw new oe(4010,!1);let a;i.indexOf(":")>-1?(a=i.slice(0,i.indexOf(":")),this.capture(a),this.capture(":")):n&&(a=Ze);let s=this.parseChildren(t+1);r[a??Ze]=Object.keys(s).length===1&&s[Ze]?s[Ze]:new bt([],s),this.consumeOptional("//")}return r}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new oe(4011,!1)}};function TR(e){return e.segments.length>0?new bt([],{[Ze]:e}):e}function IR(e){let n={};for(let[r,i]of Object.entries(e.children)){let o=IR(i);if(r===Ze&&o.segments.length===0&&o.hasChildren())for(let[a,s]of Object.entries(o.children))n[a]=s;else(o.segments.length>0||o.hasChildren())&&(n[r]=o)}let t=new bt(e.segments,n);return EH(t)}function EH(e){if(e.numberOfChildren===1&&e.children[Ze]){let n=e.children[Ze];return new bt(e.segments.concat(n.segments),n.children)}return e}function xd(e){return e instanceof Jr}function AR(e,n,t=null,r=null,i=new Ha){let o=MR(e);return RR(o,n,t,r,i)}function MR(e){let n;function t(o){let a={};for(let l of o.children){let c=t(l);a[l.outlet]=c}let s=new bt(o.url,a);return o===e&&(n=s),s}let r=t(e.root),i=TR(r);return n??i}function RR(e,n,t,r,i){let o=e;for(;o.parent;)o=o.parent;if(n.length===0)return Wx(o,o,o,t,r,i);let a=DH(n);if(a.toRoot())return Wx(o,o,new bt([],{}),t,r,i);let s=SH(a,o,e),l=s.processChildren?vd(s.segmentGroup,s.index,a.commands):OR(s.segmentGroup,s.index,a.commands);return Wx(o,s.segmentGroup,l,t,r,i)}function B0(e){return typeof e=="object"&&e!=null&&!e.outlets&&!e.segmentPath}function bd(e){return typeof e=="object"&&e!=null&&e.outlets}function hR(e,n,t){e||="\u0275";let r=new Jr;return r.queryParams={[e]:n},t.parse(t.serialize(r)).queryParams[e]}function Wx(e,n,t,r,i,o){let a={};for(let[c,d]of Object.entries(r??{}))a[c]=Array.isArray(d)?d.map(u=>hR(c,u,o)):hR(c,d,o);let s;e===n?s=t:s=PR(e,n,t);let l=TR(IR(s));return new Jr(l,a,i)}function PR(e,n,t){let r={};return Object.entries(e.children).forEach(([i,o])=>{o===n?r[i]=t:r[i]=PR(o,n,t)}),new bt(e.segments,r)}var $0=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,t,r){if(this.isAbsolute=n,this.numberOfDoubleDots=t,this.commands=r,n&&r.length>0&&B0(r[0]))throw new oe(4003,!1);let i=r.find(bd);if(i&&i!==aH(r))throw new oe(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function DH(e){if(typeof e[0]=="string"&&e.length===1&&e[0]==="/")return new $0(!0,0,e);let n=0,t=!1,r=e.reduce((i,o,a)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let s={};return Object.entries(o.outlets).forEach(([l,c])=>{s[l]=typeof c=="string"?c.split("/"):c}),[...i,{outlets:s}]}if(o.segmentPath)return[...i,o.segmentPath]}return typeof o!="string"?[...i,o]:a===0?(o.split("/").forEach((s,l)=>{l==0&&s==="."||(l==0&&s===""?t=!0:s===".."?n++:s!=""&&i.push(s))}),i):[...i,o]},[]);return new $0(t,n,r)}var xl=class{segmentGroup;processChildren;index;constructor(n,t,r){this.segmentGroup=n,this.processChildren=t,this.index=r}};function SH(e,n,t){if(e.isAbsolute)return new xl(n,!0,0);if(!t)return new xl(n,!1,NaN);if(t.parent===null)return new xl(t,!0,0);let r=B0(e.commands[0])?0:1,i=t.segments.length-1+r;return kH(t,i,e.numberOfDoubleDots)}function kH(e,n,t){let r=e,i=n,o=t;for(;o>i;){if(o-=i,r=r.parent,!r)throw new oe(4005,!1);i=r.segments.length}return new xl(r,!1,i-o)}function TH(e){return bd(e[0])?e[0].outlets:{[Ze]:e}}function OR(e,n,t){if(e??=new bt([],{}),e.segments.length===0&&e.hasChildren())return vd(e,n,t);let r=IH(e,n,t),i=t.slice(r.commandIndex);if(r.match&&r.pathIndexo!==Ze)&&e.children[Ze]&&e.numberOfChildren===1&&e.children[Ze].segments.length===0){let o=vd(e.children[Ze],n,t);return new bt(e.segments,o.children)}return Object.entries(r).forEach(([o,a])=>{typeof a=="string"&&(a=[a]),a!==null&&(i[o]=OR(e.children[o],n,a))}),Object.entries(e.children).forEach(([o,a])=>{r[o]===void 0&&(i[o]=a)}),new bt(e.segments,i)}}function IH(e,n,t){let r=0,i=n,o={match:!1,pathIndex:0,commandIndex:0};for(;i=t.length)return o;let a=e.segments[i],s=t[r];if(bd(s))break;let l=`${s}`,c=r0&&l===void 0)break;if(l&&c&&typeof c=="object"&&c.outlets===void 0){if(!mR(l,c,a))return o;r+=2}else{if(!mR(l,{},a))return o;r++}i++}return{match:!0,pathIndex:i,commandIndex:r}}function Jx(e,n,t){let r=e.segments.slice(0,n),i=0;for(;i{typeof r=="string"&&(r=[r]),r!==null&&(n[t]=Jx(new bt([],{}),0,r))}),n}function gR(e){let n={};return Object.entries(e).forEach(([t,r])=>n[t]=`${r}`),n}function mR(e,n,t){return e==t.path&&bi(n,t.parameters)}var V0="imperative",Dn=(function(e){return e[e.NavigationStart=0]="NavigationStart",e[e.NavigationEnd=1]="NavigationEnd",e[e.NavigationCancel=2]="NavigationCancel",e[e.NavigationError=3]="NavigationError",e[e.RoutesRecognized=4]="RoutesRecognized",e[e.ResolveStart=5]="ResolveStart",e[e.ResolveEnd=6]="ResolveEnd",e[e.GuardsCheckStart=7]="GuardsCheckStart",e[e.GuardsCheckEnd=8]="GuardsCheckEnd",e[e.RouteConfigLoadStart=9]="RouteConfigLoadStart",e[e.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",e[e.ChildActivationStart=11]="ChildActivationStart",e[e.ChildActivationEnd=12]="ChildActivationEnd",e[e.ActivationStart=13]="ActivationStart",e[e.ActivationEnd=14]="ActivationEnd",e[e.Scroll=15]="Scroll",e[e.NavigationSkipped=16]="NavigationSkipped",e})(Dn||{}),_r=class{id;url;constructor(n,t){this.id=n,this.url=t}},wl=class extends _r{type=Dn.NavigationStart;navigationTrigger;restoredState;constructor(n,t,r="imperative",i=null){super(n,t),this.navigationTrigger=r,this.restoredState=i}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},$o=class extends _r{urlAfterRedirects;type=Dn.NavigationEnd;constructor(n,t,r){super(n,t),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},Zn=(function(e){return e[e.Redirect=0]="Redirect",e[e.SupersededByNewNavigation=1]="SupersededByNewNavigation",e[e.NoDataFromResolver=2]="NoDataFromResolver",e[e.GuardRejected=3]="GuardRejected",e[e.Aborted=4]="Aborted",e})(Zn||{}),z0=(function(e){return e[e.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",e[e.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",e})(z0||{}),Xr=class extends _r{reason;code;type=Dn.NavigationCancel;constructor(n,t,r,i){super(n,t),this.reason=r,this.code=i}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}};function MH(e){return e instanceof Xr&&(e.code===Zn.Redirect||e.code===Zn.SupersededByNewNavigation)}var zo=class extends _r{reason;code;type=Dn.NavigationSkipped;constructor(n,t,r,i){super(n,t),this.reason=r,this.code=i}},Cl=class extends _r{error;target;type=Dn.NavigationError;constructor(n,t,r,i){super(n,t),this.error=r,this.target=i}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},wd=class extends _r{urlAfterRedirects;state;type=Dn.RoutesRecognized;constructor(n,t,r,i){super(n,t),this.urlAfterRedirects=r,this.state=i}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},H0=class extends _r{urlAfterRedirects;state;type=Dn.GuardsCheckStart;constructor(n,t,r,i){super(n,t),this.urlAfterRedirects=r,this.state=i}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},G0=class extends _r{urlAfterRedirects;state;shouldActivate;type=Dn.GuardsCheckEnd;constructor(n,t,r,i,o){super(n,t),this.urlAfterRedirects=r,this.state=i,this.shouldActivate=o}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},q0=class extends _r{urlAfterRedirects;state;type=Dn.ResolveStart;constructor(n,t,r,i){super(n,t),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},W0=class extends _r{urlAfterRedirects;state;type=Dn.ResolveEnd;constructor(n,t,r,i){super(n,t),this.urlAfterRedirects=r,this.state=i}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Z0=class{route;type=Dn.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},K0=class{route;type=Dn.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},Y0=class{snapshot;type=Dn.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Q0=class{snapshot;type=Dn.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},X0=class{snapshot;type=Dn.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},J0=class{snapshot;type=Dn.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var Cd=class{},eg=class{},El=class{url;navigationBehaviorOptions;constructor(n,t){this.url=n,this.navigationBehaviorOptions=t}};function RH(e){return!(e instanceof Cd)&&!(e instanceof El)&&!(e instanceof eg)}var tg=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return this.route?.snapshot._environmentInjector??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new Id(this.rootInjector)}},Id=(()=>{class e{rootInjector;contexts=new Map;constructor(t){this.rootInjector=t}onChildOutletCreated(t,r){let i=this.getOrCreateContext(t);i.outlet=r,this.contexts.set(t,i)}onChildOutletDestroyed(t){let r=this.getContext(t);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let r=this.getContext(t);return r||(r=new tg(this.rootInjector),this.contexts.set(t,r)),r}getContext(t){return this.contexts.get(t)||null}static \u0275fac=function(r){return new(r||e)(se(Ut))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),ng=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let t=this.pathFromRoot(n);return t.length>1?t[t.length-2]:null}children(n){let t=eb(n,this._root);return t?t.children.map(r=>r.value):[]}firstChild(n){let t=eb(n,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(n){let t=tb(n,this._root);return t.length<2?[]:t[t.length-2].children.map(i=>i.value).filter(i=>i!==n)}pathFromRoot(n){return tb(n,this._root).map(t=>t.value)}};function eb(e,n){if(e===n.value)return n;for(let t of n.children){let r=eb(e,t);if(r)return r}return null}function tb(e,n){if(e===n.value)return[n];for(let t of n.children){let r=tb(e,t);if(r.length)return r.unshift(n),r}return[]}var mr=class{value;children;constructor(n,t){this.value=n,this.children=t}toString(){return`TreeNode(${this.value})`}};function yl(e){let n={};return e&&e.children.forEach(t=>n[t.value.outlet]=t),n}var Ed=class extends ng{snapshot;constructor(n,t){super(n),this.snapshot=t,db(this,n)}toString(){return this.snapshot.toString()}};function NR(e,n){let t=PH(e,n),r=new dt([new Bo("",{})]),i=new dt({}),o=new dt({}),a=new dt({}),s=new dt(""),l=new Dl(r,i,a,s,o,Ze,e,t.root);return l.snapshot=t.root,new Ed(new mr(l,[]),t)}function PH(e,n){let t={},r={},i={},a=new Sl([],t,i,"",r,Ze,e,null,{},n);return new Dd("",new mr(a,[]))}var Dl=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,t,r,i,o,a,s,l){this.urlSubject=n,this.paramsSubject=t,this.queryParamsSubject=r,this.fragmentSubject=i,this.dataSubject=o,this.outlet=a,this.component=s,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(de(c=>c[Td]))??fe(void 0),this.url=n,this.params=t,this.queryParams=r,this.fragment=i,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(de(n=>za(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(de(n=>za(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function cb(e,n,t="emptyOnly"){let r,{routeConfig:i}=e;return n!==null&&(t==="always"||i?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:R(R({},n.params),e.params),data:R(R({},n.data),e.data),resolve:R(R(R(R({},e.data),n.data),i?.data),e._resolvedData)}:r={params:R({},e.params),data:R({},e.data),resolve:R(R({},e.data),e._resolvedData??{})},i&&LR(i)&&(r.resolve[Td]=i.title),r}var Sl=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;_environmentInjector;get title(){return this.data?.[Td]}constructor(n,t,r,i,o,a,s,l,c,d){this.url=n,this.params=t,this.queryParams=r,this.fragment=i,this.data=o,this.outlet=a,this.component=s,this.routeConfig=l,this._resolve=c,this._environmentInjector=d}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=za(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=za(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),t=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${t}')`}},Dd=class extends ng{url;constructor(n,t){super(t),this.url=n,db(this,t)}toString(){return FR(this._root)}};function db(e,n){n.value._routerState=e,n.children.forEach(t=>db(e,t))}function FR(e){let n=e.children.length>0?` { ${e.children.map(FR).join(", ")} } `:"";return`${e.value}${n}`}function Zx(e){if(e.snapshot){let n=e.snapshot,t=e._futureSnapshot;e.snapshot=t,bi(n.queryParams,t.queryParams)||e.queryParamsSubject.next(t.queryParams),n.fragment!==t.fragment&&e.fragmentSubject.next(t.fragment),bi(n.params,t.params)||e.paramsSubject.next(t.params),oH(n.url,t.url)||e.urlSubject.next(t.url),bi(n.data,t.data)||e.dataSubject.next(t.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function nb(e,n){let t=bi(e.params,n.params)&&uH(e.url,n.url),r=!e.parent!=!n.parent;return t&&!r&&(!e.parent||nb(e.parent,n.parent))}function LR(e){return typeof e.title=="string"||e.title===null}var jR=new le(""),VR=(()=>{class e{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=Ze;activateEvents=new Ft;deactivateEvents=new Ft;attachEvents=new Ft;detachEvents=new Ft;routerOutletData=Se();parentContexts=A(Id);location=A(qi);changeDetector=A(cn);inputBinder=A(ub,{optional:!0});supportsBindingToComponentInputs=!0;ngOnChanges(t){if(t.name){let{firstChange:r,previousValue:i}=t.name;if(r)return;this.isTrackedInParentContexts(i)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(i)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(t){return this.parentContexts.getContext(t)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let t=this.parentContexts.getContext(this.name);t?.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new oe(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new oe(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new oe(4012,!1);this.location.detach();let t=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(t.instance),t}attach(t,r){this.activated=t,this._activatedRoute=r,this.location.insert(t.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(t.instance)}deactivate(){if(this.activated){let t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,r){if(this.isActivated)throw new oe(4013,!1);this._activatedRoute=t;let i=this.location,a=t.snapshot.component,s=this.parentContexts.getOrCreateContext(this.name).children,l=new rb(t,s,i.injector,this.routerOutletData);this.activated=i.createComponent(a,{index:i.length,injector:l,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||e)};static \u0275dir=It({type:e,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[dr]})}return e})(),rb=class{route;childContexts;parent;outletData;constructor(n,t,r,i){this.route=n,this.childContexts=t,this.parent=r,this.outletData=i}get(n,t){return n===Dl?this.route:n===Id?this.childContexts:n===jR?this.outletData:this.parent.get(n,t)}},ub=new le("");var UR=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275cmp=yt({type:e,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,i){r&1&&Q(0,"router-outlet")},dependencies:[VR],encapsulation:2})}return e})();function pb(e){let n=e.children&&e.children.map(pb),t=n?X(R({},e),{children:n}):R({},e);return!t.component&&!t.loadComponent&&(n||t.loadChildren)&&t.outlet&&t.outlet!==Ze&&(t.component=UR),t}function OH(e,n,t){let r=Sd(e,n._root,t?t._root:void 0);return new Ed(r,n)}function Sd(e,n,t){if(t&&e.shouldReuseRoute(n.value,t.value.snapshot)){let r=t.value;r._futureSnapshot=n.value;let i=NH(e,n,t);return new mr(r,i)}else{if(e.shouldAttach(n.value)){let o=e.retrieve(n.value);if(o!==null){let a=o.route;return a.value._futureSnapshot=n.value,a.children=n.children.map(s=>Sd(e,s)),a}}let r=FH(n.value),i=n.children.map(o=>Sd(e,o));return new mr(r,i)}}function NH(e,n,t){return n.children.map(r=>{for(let i of t.children)if(e.shouldReuseRoute(r.value,i.value.snapshot))return Sd(e,r,i);return Sd(e,r)})}function FH(e){return new Dl(new dt(e.url),new dt(e.params),new dt(e.queryParams),new dt(e.fragment),new dt(e.data),e.outlet,e.component,e)}var kl=class{redirectTo;navigationBehaviorOptions;constructor(n,t){this.redirectTo=n,this.navigationBehaviorOptions=t}},BR="ngNavigationCancelingError";function rg(e,n){let{redirectTo:t,navigationBehaviorOptions:r}=xd(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,i=$R(!1,Zn.Redirect);return i.url=t,i.navigationBehaviorOptions=r,i}function $R(e,n){let t=new Error(`NavigationCancelingError: ${e||""}`);return t[BR]=!0,t.cancellationCode=n,t}function LH(e){return zR(e)&&xd(e.url)}function zR(e){return!!e&&e[BR]}var ib=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,t,r,i,o){this.routeReuseStrategy=n,this.futureState=t,this.currState=r,this.forwardEvent=i,this.inputBindingEnabled=o}activate(n){let t=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,r,n),Zx(this.futureState.root),this.activateChildRoutes(t,r,n)}deactivateChildRoutes(n,t,r){let i=yl(t);n.children.forEach(o=>{let a=o.value.outlet;this.deactivateRoutes(o,i[a],r),delete i[a]}),Object.values(i).forEach(o=>{this.deactivateRouteAndItsChildren(o,r)})}deactivateRoutes(n,t,r){let i=n.value,o=t?t.value:null;if(i===o)if(i.component){let a=r.getContext(i.outlet);a&&this.deactivateChildRoutes(n,t,a.children)}else this.deactivateChildRoutes(n,t,r);else o&&this.deactivateRouteAndItsChildren(t,r)}deactivateRouteAndItsChildren(n,t){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,t):this.deactivateRouteAndOutlet(n,t)}detachAndStoreRouteSubtree(n,t){let r=t.getContext(n.value.outlet),i=r&&n.value.component?r.children:t,o=yl(n);for(let a of Object.values(o))this.deactivateRouteAndItsChildren(a,i);if(r&&r.outlet){let a=r.outlet.detach(),s=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:a,route:n,contexts:s})}}deactivateRouteAndOutlet(n,t){let r=t.getContext(n.value.outlet),i=r&&n.value.component?r.children:t,o=yl(n);for(let a of Object.values(o))this.deactivateRouteAndItsChildren(a,i);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,t,r){let i=yl(t);n.children.forEach(o=>{this.activateRoutes(o,i[o.value.outlet],r),this.forwardEvent(new J0(o.value.snapshot))}),n.children.length&&this.forwardEvent(new Q0(n.value.snapshot))}activateRoutes(n,t,r){let i=n.value,o=t?t.value:null;if(Zx(i),i===o)if(i.component){let a=r.getOrCreateContext(i.outlet);this.activateChildRoutes(n,t,a.children)}else this.activateChildRoutes(n,t,r);else if(i.component){let a=r.getOrCreateContext(i.outlet);if(this.routeReuseStrategy.shouldAttach(i.snapshot)){let s=this.routeReuseStrategy.retrieve(i.snapshot);this.routeReuseStrategy.store(i.snapshot,null),a.children.onOutletReAttached(s.contexts),a.attachRef=s.componentRef,a.route=s.route.value,a.outlet&&a.outlet.attach(s.componentRef,s.route.value),Zx(s.route.value),this.activateChildRoutes(n,null,a.children)}else a.attachRef=null,a.route=i,a.outlet&&a.outlet.activateWith(i,a.injector),this.activateChildRoutes(n,null,a.children)}else this.activateChildRoutes(n,null,r)}},ig=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},bl=class{component;route;constructor(n,t){this.component=n,this.route=t}};function jH(e,n,t){let r=e._root,i=n?n._root:null;return _d(r,i,t,[r.value])}function VH(e){let n=e.routeConfig?e.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:e,guards:n}}function Il(e,n){let t=Symbol(),r=n.get(e,t);return r===t?typeof e=="function"&&!Dm(e)?e:n.get(e):r}function _d(e,n,t,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=yl(n);return e.children.forEach(a=>{UH(a,o[a.value.outlet],t,r.concat([a.value]),i),delete o[a.value.outlet]}),Object.entries(o).forEach(([a,s])=>yd(s,t.getContext(a),i)),i}function UH(e,n,t,r,i={canDeactivateChecks:[],canActivateChecks:[]}){let o=e.value,a=n?n.value:null,s=t?t.getContext(e.value.outlet):null;if(a&&o.routeConfig===a.routeConfig){let l=BH(a,o,o.routeConfig.runGuardsAndResolvers);l?i.canActivateChecks.push(new ig(r)):(o.data=a.data,o._resolvedData=a._resolvedData),o.component?_d(e,n,s?s.children:null,r,i):_d(e,n,t,r,i),l&&s&&s.outlet&&s.outlet.isActivated&&i.canDeactivateChecks.push(new bl(s.outlet.component,a))}else a&&yd(n,s,i),i.canActivateChecks.push(new ig(r)),o.component?_d(e,null,s?s.children:null,r,i):_d(e,null,t,r,i);return i}function BH(e,n,t){if(typeof t=="function")return yn(n._environmentInjector,()=>t(e,n));switch(t){case"pathParamsChange":return!$a(e.url,n.url);case"pathParamsOrQueryParamsChange":return!$a(e.url,n.url)||!bi(e.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!nb(e,n)||!bi(e.queryParams,n.queryParams);default:return!nb(e,n)}}function yd(e,n,t){let r=yl(e),i=e.value;Object.entries(r).forEach(([o,a])=>{i.component?n?yd(a,n.children.getContext(o),t):yd(a,null,t):yd(a,n,t)}),i.component?n&&n.outlet&&n.outlet.isActivated?t.canDeactivateChecks.push(new bl(n.outlet.component,i)):t.canDeactivateChecks.push(new bl(null,i)):t.canDeactivateChecks.push(new bl(null,i))}function Ad(e){return typeof e=="function"}function $H(e){return typeof e=="boolean"}function zH(e){return e&&Ad(e.canLoad)}function HH(e){return e&&Ad(e.canActivate)}function GH(e){return e&&Ad(e.canActivateChild)}function qH(e){return e&&Ad(e.canDeactivate)}function WH(e){return e&&Ad(e.canMatch)}function HR(e){return e instanceof na||e?.name==="EmptyError"}var N0=Symbol("INITIAL_VALUE");function Tl(){return $e(e=>Yl(e.map(n=>n.pipe(Tt(1),cm(N0)))).pipe(de(n=>{for(let t of n)if(t!==!0){if(t===N0)return N0;if(t===!1||ZH(t))return t}return!0}),Je(n=>n!==N0),Tt(1)))}function ZH(e){return xd(e)||e instanceof kl}function GR(e){return e.aborted?fe(void 0).pipe(Tt(1)):new De(n=>{let t=()=>{n.next(),n.complete()};return e.addEventListener("abort",t),()=>e.removeEventListener("abort",t)})}function qR(e){return ce(GR(e))}function KH(e){return vn(n=>{let{targetSnapshot:t,currentSnapshot:r,guards:{canActivateChecks:i,canDeactivateChecks:o}}=n;return o.length===0&&i.length===0?fe(X(R({},n),{guardsResult:!0})):YH(o,t,r).pipe(vn(a=>a&&$H(a)?QH(t,i,e):fe(a)),de(a=>X(R({},n),{guardsResult:a})))})}function YH(e,n,t){return Kt(e).pipe(vn(r=>nG(r.component,r.route,t,n)),Ni(r=>r!==!0,!0))}function QH(e,n,t){return Kt(n).pipe(Oi(r=>as(JH(r.route.parent,t),XH(r.route,t),tG(e,r.path),eG(e,r.route))),Ni(r=>r!==!0,!0))}function XH(e,n){return e!==null&&n&&n(new X0(e)),fe(!0)}function JH(e,n){return e!==null&&n&&n(new Y0(e)),fe(!0)}function eG(e,n){let t=n.routeConfig?n.routeConfig.canActivate:null;if(!t||t.length===0)return fe(!0);let r=t.map(i=>Ql(()=>{let o=n._environmentInjector,a=Il(i,o),s=HH(a)?a.canActivate(n,e):yn(o,()=>a(n,e));return Ga(s).pipe(Ni())}));return fe(r).pipe(Tl())}function tG(e,n){let t=n[n.length-1],i=n.slice(0,n.length-1).reverse().map(o=>VH(o)).filter(o=>o!==null).map(o=>Ql(()=>{let a=o.guards.map(s=>{let l=o.node._environmentInjector,c=Il(s,l),d=GH(c)?c.canActivateChild(t,e):yn(l,()=>c(t,e));return Ga(d).pipe(Ni())});return fe(a).pipe(Tl())}));return fe(i).pipe(Tl())}function nG(e,n,t,r){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return fe(!0);let o=i.map(a=>{let s=n._environmentInjector,l=Il(a,s),c=qH(l)?l.canDeactivate(e,n,t,r):yn(s,()=>l(e,n,t,r));return Ga(c).pipe(Ni())});return fe(o).pipe(Tl())}function rG(e,n,t,r,i){let o=n.canLoad;if(o===void 0||o.length===0)return fe(!0);let a=o.map(s=>{let l=Il(s,e),c=zH(l)?l.canLoad(n,t):yn(e,()=>l(n,t)),d=Ga(c);return i?d.pipe(qR(i)):d});return fe(a).pipe(Tl(),WR(r))}function WR(e){return Zg(Ht(n=>{if(typeof n!="boolean")throw rg(e,n)}),de(n=>n===!0))}function iG(e,n,t,r,i,o){let a=n.canMatch;if(!a||a.length===0)return fe(!0);let s=a.map(l=>{let c=Il(l,e),d=WH(c)?c.canMatch(n,t,i):yn(e,()=>c(n,t,i));return Ga(d).pipe(qR(o))});return fe(s).pipe(Tl(),WR(r))}var ao=class e extends Error{segmentGroup;constructor(n){super(),this.segmentGroup=n||null,Object.setPrototypeOf(this,e.prototype)}},kd=class e extends Error{urlTree;constructor(n){super(),this.urlTree=n,Object.setPrototypeOf(this,e.prototype)}};function oG(e){throw new oe(4e3,!1)}function aG(e){throw $R(!1,Zn.GuardRejected)}var ob=class{urlSerializer;urlTree;constructor(n,t){this.urlSerializer=n,this.urlTree=t}async lineralizeSegments(n,t){let r=[],i=t.root;for(;;){if(r=r.concat(i.segments),i.numberOfChildren===0)return r;if(i.numberOfChildren>1||!i.children[Ze])throw oG(`${n.redirectTo}`);i=i.children[Ze]}}async applyRedirectCommands(n,t,r,i,o){let a=await sG(t,i,o);if(a instanceof Jr)throw new kd(a);let s=this.applyRedirectCreateUrlTree(a,this.urlSerializer.parse(a),n,r);if(a[0]==="/")throw new kd(s);return s}applyRedirectCreateUrlTree(n,t,r,i){let o=this.createSegmentGroup(n,t.root,r,i);return new Jr(o,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(n,t){let r={};return Object.entries(n).forEach(([i,o])=>{if(typeof o=="string"&&o[0]===":"){let s=o.substring(1);r[i]=t[s]}else r[i]=o}),r}createSegmentGroup(n,t,r,i){let o=this.createSegments(n,t.segments,r,i),a={};return Object.entries(t.children).forEach(([s,l])=>{a[s]=this.createSegmentGroup(n,l,r,i)}),new bt(o,a)}createSegments(n,t,r,i){return t.map(o=>o.path[0]===":"?this.findPosParam(n,o,i):this.findOrReturn(o,r))}findPosParam(n,t,r){let i=r[t.path.substring(1)];if(!i)throw new oe(4001,!1);return i}findOrReturn(n,t){let r=0;for(let i of t){if(i.path===n.path)return t.splice(r),i;r++}return n}};function sG(e,n,t){if(typeof e=="string")return Promise.resolve(e);let r=e;return U0(Ga(yn(t,()=>r(n))))}function lG(e,n){return e.providers&&!e._injector&&(e._injector=lf(e.providers,n,`Route: ${e.path}`)),e._injector??n}function wi(e){return e.outlet||Ze}function cG(e,n){let t=e.filter(r=>wi(r)===n);return t.push(...e.filter(r=>wi(r)!==n)),t}var ab={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ZR(e){return{routeConfig:e.routeConfig,url:e.url,params:e.params,queryParams:e.queryParams,fragment:e.fragment,data:e.data,outlet:e.outlet,title:e.title,paramMap:e.paramMap,queryParamMap:e.queryParamMap}}function dG(e,n,t,r,i,o,a){let s=KR(e,n,t);if(!s.matched)return fe(s);let l=ZR(o(s));return r=lG(n,r),iG(r,n,t,i,l,a).pipe(de(c=>c===!0?s:R({},ab)))}function KR(e,n,t){if(n.path==="")return n.pathMatch==="full"&&(e.hasChildren()||t.length>0)?R({},ab):{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};let i=(n.matcher||yR)(t,e,n);if(!i)return R({},ab);let o={};Object.entries(i.posParams??{}).forEach(([s,l])=>{o[s]=l.path});let a=i.consumed.length>0?R(R({},o),i.consumed[i.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:i.consumed,remainingSegments:t.slice(i.consumed.length),parameters:a,positionalParamSegments:i.posParams??{}}}function _R(e,n,t,r){return t.length>0&&fG(e,t,r)?{segmentGroup:new bt(n,pG(r,new bt(t,e.children))),slicedSegments:[]}:t.length===0&&hG(e,t,r)?{segmentGroup:new bt(e.segments,uG(e,t,r,e.children)),slicedSegments:t}:{segmentGroup:new bt(e.segments,e.children),slicedSegments:t}}function uG(e,n,t,r){let i={};for(let o of t)if(sg(e,n,o)&&!r[wi(o)]){let a=new bt([],{});i[wi(o)]=a}return R(R({},r),i)}function pG(e,n){let t={};t[Ze]=n;for(let r of e)if(r.path===""&&wi(r)!==Ze){let i=new bt([],{});t[wi(r)]=i}return t}function fG(e,n,t){return t.some(r=>sg(e,n,r)&&wi(r)!==Ze)}function hG(e,n,t){return t.some(r=>sg(e,n,r))}function sg(e,n,t){return(e.hasChildren()||n.length>0)&&t.pathMatch==="full"?!1:t.path===""}function gG(e,n,t){return n.length===0&&!e.children[t]}var sb=class{};async function mG(e,n,t,r,i,o,a="emptyOnly",s){return new lb(e,n,t,r,i,a,o,s).recognize()}var _G=31,lb=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;abortSignal;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,t,r,i,o,a,s,l){this.injector=n,this.configLoader=t,this.rootComponentType=r,this.config=i,this.urlTree=o,this.paramsInheritanceStrategy=a,this.urlSerializer=s,this.abortSignal=l,this.applyRedirects=new ob(this.urlSerializer,this.urlTree)}noMatchError(n){return new oe(4002,`'${n.segmentGroup}'`)}async recognize(){let n=_R(this.urlTree.root,[],[],this.config).segmentGroup,{children:t,rootSnapshot:r}=await this.match(n),i=new mr(r,t),o=new Dd("",i),a=AR(r,[],this.urlTree.queryParams,this.urlTree.fragment);return a.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(a),{state:o,tree:a}}async match(n){let t=new Sl([],Object.freeze({}),Object.freeze(R({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),Ze,this.rootComponentType,null,{},this.injector);try{return{children:await this.processSegmentGroup(this.injector,this.config,n,Ze,t),rootSnapshot:t}}catch(r){if(r instanceof kd)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof ao?this.noMatchError(r):r}}async processSegmentGroup(n,t,r,i,o){if(r.segments.length===0&&r.hasChildren())return this.processChildren(n,t,r,o);let a=await this.processSegment(n,t,r,r.segments,i,!0,o);return a instanceof mr?[a]:[]}async processChildren(n,t,r,i){let o=[];for(let l of Object.keys(r.children))l==="primary"?o.unshift(l):o.push(l);let a=[];for(let l of o){let c=r.children[l],d=cG(t,l),u=await this.processSegmentGroup(n,d,c,l,i);a.push(...u)}let s=YR(a);return vG(s),s}async processSegment(n,t,r,i,o,a,s){for(let l of t)try{return await this.processSegmentAgainstRoute(l._injector??n,t,l,r,i,o,a,s)}catch(c){if(c instanceof ao||HR(c))continue;throw c}if(gG(r,i,o))return new sb;throw new ao(r)}async processSegmentAgainstRoute(n,t,r,i,o,a,s,l){if(wi(r)!==a&&(a===Ze||!sg(i,o,r)))throw new ao(i);if(r.redirectTo===void 0)return this.matchSegmentAgainstRoute(n,i,r,o,a,l);if(this.allowRedirects&&s)return this.expandSegmentAgainstRouteUsingRedirect(n,i,t,r,o,a,l);throw new ao(i)}async expandSegmentAgainstRouteUsingRedirect(n,t,r,i,o,a,s){let{matched:l,parameters:c,consumedSegments:d,positionalParamSegments:u,remainingSegments:p}=KR(t,i,o);if(!l)throw new ao(t);typeof i.redirectTo=="string"&&i.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>_G&&(this.allowRedirects=!1));let f=this.createSnapshot(n,i,o,c,s);if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let h=await this.applyRedirects.applyRedirectCommands(d,i.redirectTo,u,ZR(f),n),v=await this.applyRedirects.lineralizeSegments(i,h);return this.processSegment(n,r,t,v.concat(p),a,!1,s)}createSnapshot(n,t,r,i,o){let a=new Sl(r,i,Object.freeze(R({},this.urlTree.queryParams)),this.urlTree.fragment,xG(t),wi(t),t.component??t._loadedComponent??null,t,bG(t),n),s=cb(a,o,this.paramsInheritanceStrategy);return a.params=Object.freeze(s.params),a.data=Object.freeze(s.data),a}async matchSegmentAgainstRoute(n,t,r,i,o,a){if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);let s=S=>this.createSnapshot(n,r,S.consumedSegments,S.parameters,a),l=await U0(dG(t,r,i,n,this.urlSerializer,s,this.abortSignal));if(r.path==="**"&&(t.children={}),!l?.matched)throw new ao(t);n=r._injector??n;let{routes:c}=await this.getChildConfig(n,r,i),d=r._loadedInjector??n,{parameters:u,consumedSegments:p,remainingSegments:f}=l,h=this.createSnapshot(n,r,p,u,a),{segmentGroup:v,slicedSegments:b}=_R(t,p,f,c);if(b.length===0&&v.hasChildren()){let S=await this.processChildren(d,c,v,h);return new mr(h,S)}if(c.length===0&&b.length===0)return new mr(h,[]);let _=wi(r)===o,y=await this.processSegment(d,c,v,b,_?Ze:o,!0,h);return new mr(h,y instanceof mr?[y]:[])}async getChildConfig(n,t,r){if(t.children)return{routes:t.children,injector:n};if(t.loadChildren){if(t._loadedRoutes!==void 0){let o=t._loadedNgModuleFactory;return o&&!t._loadedInjector&&(t._loadedInjector=o.create(n).injector),{routes:t._loadedRoutes,injector:t._loadedInjector}}if(this.abortSignal.aborted)throw new Error(this.abortSignal.reason);if(await U0(rG(n,t,r,this.urlSerializer,this.abortSignal))){let o=await this.configLoader.loadChildren(n,t);return t._loadedRoutes=o.routes,t._loadedInjector=o.injector,t._loadedNgModuleFactory=o.factory,o}throw aG(t)}return{routes:[],injector:n}}};function vG(e){e.sort((n,t)=>n.value.outlet===Ze?-1:t.value.outlet===Ze?1:n.value.outlet.localeCompare(t.value.outlet))}function yG(e){let n=e.value.routeConfig;return n&&n.path===""}function YR(e){let n=[],t=new Set;for(let r of e){if(!yG(r)){n.push(r);continue}let i=n.find(o=>r.value.routeConfig===o.value.routeConfig);i!==void 0?(i.children.push(...r.children),t.add(i)):n.push(r)}for(let r of t){let i=YR(r.children);n.push(new mr(r.value,i))}return n.filter(r=>!t.has(r))}function xG(e){return e.data||{}}function bG(e){return e.resolve||{}}function wG(e,n,t,r,i,o,a){return vn(async s=>{let{state:l,tree:c}=await mG(e,n,t,r,s.extractedUrl,i,o,a);return X(R({},s),{targetSnapshot:l,urlAfterRedirects:c})})}function CG(e){return vn(n=>{let{targetSnapshot:t,guards:{canActivateChecks:r}}=n;if(!r.length)return fe(n);let i=new Set(r.map(s=>s.route)),o=new Set;for(let s of i)if(!o.has(s))for(let l of QR(s))o.add(l);let a=0;return Kt(o).pipe(Oi(s=>i.has(s)?EG(s,t,e):(s.data=cb(s,s.parent,e).resolve,fe(void 0))),Ht(()=>a++),Uu(1),vn(s=>a===o.size?fe(n):At))})}function QR(e){let n=e.children.map(t=>QR(t)).flat();return[e,...n]}function EG(e,n,t){let r=e.routeConfig,i=e._resolve;return r?.title!==void 0&&!LR(r)&&(i[Td]=r.title),Ql(()=>(e.data=cb(e,e.parent,t).resolve,DG(i,e,n).pipe(de(o=>(e._resolvedData=o,e.data=R(R({},e.data),o),null)))))}function DG(e,n,t){let r=Yx(e);if(r.length===0)return fe({});let i={};return Kt(r).pipe(vn(o=>SG(e[o],n,t).pipe(Ni(),Ht(a=>{if(a instanceof kl)throw rg(new Ha,a);i[o]=a}))),Uu(1),de(()=>i),at(o=>HR(o)?At:ea(o)))}function SG(e,n,t){let r=n._environmentInjector,i=Il(e,r),o=i.resolve?i.resolve(n,t):yn(r,()=>i(n,t));return Ga(o)}function vR(e){return $e(n=>{let t=e(n);return t?Kt(t).pipe(de(()=>n)):fe(n)})}var fb=(()=>{class e{buildTitle(t){let r,i=t.root;for(;i!==void 0;)r=this.getResolvedTitleForRoute(i)??r,i=i.children.find(o=>o.outlet===Ze);return r}getResolvedTitleForRoute(t){return t.data[Td]}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(XR),providedIn:"root"})}return e})(),XR=(()=>{class e extends fb{title;constructor(t){super(),this.title=t}updateTitle(t){let r=this.buildTitle(t);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||e)(se(zS))};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),lg=new le("",{factory:()=>({})}),hb=new le(""),kG=(()=>{class e{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=A(Fv);async loadComponent(t,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return Promise.resolve(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await bR(yn(t,()=>r.loadComponent())),a=await t4(e4(o));return this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=a,a}finally{this.componentLoaders.delete(r)}})();return this.componentLoaders.set(r,i),i}loadChildren(t,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return Promise.resolve({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=(async()=>{try{let o=await JR(r,this.compiler,t,this.onLoadEndListener);return r._loadedRoutes=o.routes,r._loadedInjector=o.injector,r._loadedNgModuleFactory=o.factory,o}finally{this.childrenLoaders.delete(r)}})();return this.childrenLoaders.set(r,i),i}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();async function JR(e,n,t,r){let i=await bR(yn(t,()=>e.loadChildren())),o=await t4(e4(i)),a;o instanceof sf||Array.isArray(o)?a=o:a=await n.compileModuleAsync(o),r&&r(e);let s,l,c=!1,d;return Array.isArray(a)?(l=a,c=!0):(s=a.create(t).injector,d=a,l=s.get(hb,[],{optional:!0,self:!0}).flat()),{routes:l.map(pb),injector:s,factory:d}}function TG(e){return e&&typeof e=="object"&&"default"in e}function e4(e){return TG(e)?e.default:e}async function t4(e){return e}var cg=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(IG),providedIn:"root"})}return e})(),IG=(()=>{class e{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,r){return t}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),AG=new le("");var MG=()=>{},RG=new le(""),PG=(()=>{class e{currentNavigation=et(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=et(null);events=new qe;transitionAbortWithErrorSubject=new qe;configLoader=A(kG);environmentInjector=A(Ut);destroyRef=A(an);urlSerializer=A(ag);rootContexts=A(Id);location=A(Mo);inputBindingEnabled=A(ub,{optional:!0})!==null;titleStrategy=A(fb);options=A(lg,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=A(cg);createViewTransition=A(AG,{optional:!0});navigationErrorHandler=A(RG,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>fe(void 0);rootComponentType=null;destroyed=!1;constructor(){let t=i=>this.events.next(new Z0(i)),r=i=>this.events.next(new K0(i));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=t,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(t){let r=++this.navigationId;ln(()=>{this.transitions?.next(X(R({},t),{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,id:r,routesRecognizeHandler:{},beforeActivateHandler:{}}))})}setupNavigations(t){return this.transitions=new dt(null),this.transitions.pipe(Je(r=>r!==null),$e(r=>{let i=!1,o=new AbortController,a=()=>!i&&this.currentTransition?.id===r.id;return fe(r).pipe($e(s=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",Zn.SupersededByNewNavigation),At;this.currentTransition=r;let l=this.lastSuccessfulNavigation();this.currentNavigation.set({id:s.id,initialUrl:s.rawUrl,extractedUrl:s.extractedUrl,targetBrowserUrl:typeof s.extras.browserUrl=="string"?this.urlSerializer.parse(s.extras.browserUrl):s.extras.browserUrl,trigger:s.source,extras:s.extras,previousNavigation:l?X(R({},l),{previousNavigation:null}):null,abort:()=>o.abort(),routesRecognizeHandler:s.routesRecognizeHandler,beforeActivateHandler:s.beforeActivateHandler});let c=!t.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=s.extras.onSameUrlNavigation??t.onSameUrlNavigation;if(!c&&d!=="reload")return this.events.next(new zo(s.id,this.urlSerializer.serialize(s.rawUrl),"",z0.IgnoredSameUrlNavigation)),s.resolve(!1),At;if(this.urlHandlingStrategy.shouldProcessUrl(s.rawUrl))return fe(s).pipe($e(u=>(this.events.next(new wl(u.id,this.urlSerializer.serialize(u.extractedUrl),u.source,u.restoredState)),u.id!==this.navigationId?At:Promise.resolve(u))),wG(this.environmentInjector,this.configLoader,this.rootComponentType,t.config,this.urlSerializer,this.paramsInheritanceStrategy,o.signal),Ht(u=>{r.targetSnapshot=u.targetSnapshot,r.urlAfterRedirects=u.urlAfterRedirects,this.currentNavigation.update(p=>(p.finalUrl=u.urlAfterRedirects,p)),this.events.next(new eg)}),$e(u=>Kt(r.routesRecognizeHandler.deferredHandle??fe(void 0)).pipe(de(()=>u))),Ht(()=>{let u=new wd(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(u)}));if(c&&this.urlHandlingStrategy.shouldProcessUrl(s.currentRawUrl)){let{id:u,extractedUrl:p,source:f,restoredState:h,extras:v}=s,b=new wl(u,this.urlSerializer.serialize(p),f,h);this.events.next(b);let _=NR(this.rootComponentType,this.environmentInjector).snapshot;return this.currentTransition=r=X(R({},s),{targetSnapshot:_,urlAfterRedirects:p,extras:X(R({},v),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(y=>(y.finalUrl=p,y)),fe(r)}else return this.events.next(new zo(s.id,this.urlSerializer.serialize(s.extractedUrl),"",z0.IgnoredByUrlHandlingStrategy)),s.resolve(!1),At}),de(s=>{let l=new H0(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);return this.events.next(l),this.currentTransition=r=X(R({},s),{guards:jH(s.targetSnapshot,s.currentSnapshot,this.rootContexts)}),r}),KH(s=>this.events.next(s)),$e(s=>{if(r.guardsResult=s.guardsResult,s.guardsResult&&typeof s.guardsResult!="boolean")throw rg(this.urlSerializer,s.guardsResult);let l=new G0(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot,!!s.guardsResult);if(this.events.next(l),!a())return At;if(!s.guardsResult)return this.cancelNavigationTransition(s,"",Zn.GuardRejected),At;if(s.guards.canActivateChecks.length===0)return fe(s);let c=new q0(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);if(this.events.next(c),!a())return At;let d=!1;return fe(s).pipe(CG(this.paramsInheritanceStrategy),Ht({next:()=>{d=!0;let u=new W0(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(u)},complete:()=>{d||this.cancelNavigationTransition(s,"",Zn.NoDataFromResolver)}}))}),vR(s=>{let l=d=>{let u=[];if(d.routeConfig?._loadedComponent)d.component=d.routeConfig?._loadedComponent;else if(d.routeConfig?.loadComponent){let p=d._environmentInjector;u.push(this.configLoader.loadComponent(p,d.routeConfig).then(f=>{d.component=f}))}for(let p of d.children)u.push(...l(p));return u},c=l(s.targetSnapshot.root);return c.length===0?fe(s):Kt(Promise.all(c).then(()=>s))}),vR(()=>this.afterPreactivation()),$e(()=>{let{currentSnapshot:s,targetSnapshot:l}=r,c=this.createViewTransition?.(this.environmentInjector,s.root,l.root);return c?Kt(c).pipe(de(()=>r)):fe(r)}),Tt(1),$e(s=>{let l=OH(t.routeReuseStrategy,s.targetSnapshot,s.currentRouterState);this.currentTransition=r=s=X(R({},s),{targetRouterState:l}),this.currentNavigation.update(d=>(d.targetRouterState=l,d)),this.events.next(new Cd);let c=r.beforeActivateHandler.deferredHandle;return c?Kt(c.then(()=>s)):fe(s)}),Ht(s=>{new ib(t.routeReuseStrategy,r.targetRouterState,r.currentRouterState,l=>this.events.next(l),this.inputBindingEnabled).activate(this.rootContexts),a()&&(i=!0,this.currentNavigation.update(l=>(l.abort=MG,l)),this.lastSuccessfulNavigation.set(ln(this.currentNavigation)),this.events.next(new $o(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects))),this.titleStrategy?.updateTitle(s.targetRouterState.snapshot),s.resolve(!0))}),ce(GR(o.signal).pipe(Je(()=>!i&&!r.targetRouterState),Ht(()=>{this.cancelNavigationTransition(r,o.signal.reason+"",Zn.Aborted)}))),Ht({complete:()=>{i=!0}}),ce(this.transitionAbortWithErrorSubject.pipe(Ht(s=>{throw s}))),jn(()=>{o.abort(),i||this.cancelNavigationTransition(r,"",Zn.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),at(s=>{if(i=!0,this.destroyed)return r.resolve(!1),At;if(zR(s))this.events.next(new Xr(r.id,this.urlSerializer.serialize(r.extractedUrl),s.message,s.cancellationCode)),LH(s)?this.events.next(new El(s.url,s.navigationBehaviorOptions)):r.resolve(!1);else{let l=new Cl(r.id,this.urlSerializer.serialize(r.extractedUrl),s,r.targetSnapshot??void 0);try{let c=yn(this.environmentInjector,()=>this.navigationErrorHandler?.(l));if(c instanceof kl){let{message:d,cancellationCode:u}=rg(this.urlSerializer,c);this.events.next(new Xr(r.id,this.urlSerializer.serialize(r.extractedUrl),d,u)),this.events.next(new El(c.redirectTo,c.navigationBehaviorOptions))}else throw this.events.next(l),s}catch(c){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(c)}}return At}))}))}cancelNavigationTransition(t,r,i){let o=new Xr(t.id,this.urlSerializer.serialize(t.extractedUrl),r,i);this.events.next(o),t.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let t=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=ln(this.currentNavigation),i=r?.targetBrowserUrl??r?.extractedUrl;return t.toString()!==i?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function OG(e){return e!==V0}var NG=new le("");var n4=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(FG),providedIn:"root"})}return e})(),og=class{shouldDetach(n){return!1}store(n,t){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,t){return n.routeConfig===t.routeConfig}shouldDestroyInjector(n){return!0}},FG=(()=>{class e extends og{static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),r4=(()=>{class e{urlSerializer=A(ag);options=A(lg,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=A(Mo);urlHandlingStrategy=A(cg);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new Jr;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:t,initialUrl:r,targetBrowserUrl:i}){let o=t!==void 0?this.urlHandlingStrategy.merge(t,r):r,a=i??o;return a instanceof Jr?this.urlSerializer.serialize(a):a}commitTransition({targetRouterState:t,finalUrl:r,initialUrl:i}){r&&t?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,i),this.routerState=t):this.rawUrlTree=i}routerState=NR(null,A(Ut));getRouterState(){return this.routerState}_stateMemento=this.createStateMemento();get stateMemento(){return this._stateMemento}updateStateMemento(){this._stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}restoredState(){return this.location.getState()}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:()=>A(LG),providedIn:"root"})}return e})(),LG=(()=>{class e extends r4{currentPageId=0;lastSuccessfulId=-1;get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(t){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{t(r.url,r.state,"popstate",{replaceUrl:!0})})})}handleRouterEvent(t,r){t instanceof wl?this.updateStateMemento():t instanceof zo?this.commitTransition(r):t instanceof wd?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):t instanceof Cd?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):t instanceof Xr&&!MH(t)?this.restoreHistory(r):t instanceof Cl?this.restoreHistory(r,!0):t instanceof $o&&(this.lastSuccessfulId=t.id,this.currentPageId=this.browserPageId)}setBrowserUrl(t,{extras:r,id:i}){let{replaceUrl:o,state:a}=r;if(this.location.isCurrentPathEqualTo(t)||o){let s=this.browserPageId,l=R(R({},a),this.generateNgRouterState(i,s));this.location.replaceState(t,"",l)}else{let s=R(R({},a),this.generateNgRouterState(i,this.browserPageId+1));this.location.go(t,"",s)}}restoreHistory(t,r=!1){if(this.canceledNavigationResolution==="computed"){let i=this.browserPageId,o=this.currentPageId-i;o!==0?this.location.historyGo(o):this.getCurrentUrlTree()===t.finalUrl&&o===0&&(this.resetInternalState(t),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(t),this.resetUrlToCurrentUrlTree())}resetInternalState({finalUrl:t}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(t,r){return this.canceledNavigationResolution==="computed"?{navigationId:t,\u0275routerPageId:r}:{navigationId:t}}static \u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})();static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function i4(e,n){e.events.pipe(Je(t=>t instanceof $o||t instanceof Xr||t instanceof Cl||t instanceof zo),de(t=>t instanceof $o||t instanceof zo?0:(t instanceof Xr?t.code===Zn.Redirect||t.code===Zn.SupersededByNewNavigation:!1)?2:1),Je(t=>t!==2),Tt(1)).subscribe(()=>{n()})}var gb=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=A(Tv);stateManager=A(r4);options=A(lg,{optional:!0})||{};pendingTasks=A(si);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=A(PG);urlSerializer=A(ag);location=A(Mo);urlHandlingStrategy=A(cg);injector=A(Ut);_events=new qe;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=A(n4);injectorCleanup=A(NG,{optional:!0});onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=A(hb,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!A(ub,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:t=>{}}),this.subscribeToNavigationEvents()}eventsSubscription=new Zt;subscribeToNavigationEvents(){let t=this.navigationTransitions.events.subscribe(r=>{try{let i=this.navigationTransitions.currentTransition,o=ln(this.navigationTransitions.currentNavigation);if(i!==null&&o!==null){if(this.stateManager.handleRouterEvent(r,o),r instanceof Xr&&r.code!==Zn.Redirect&&r.code!==Zn.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof $o)this.navigated=!0,this.injectorCleanup?.(this.routeReuseStrategy,this.routerState,this.config);else if(r instanceof El){let a=r.navigationBehaviorOptions,s=this.urlHandlingStrategy.merge(r.url,i.currentRawUrl),l=R({scroll:i.extras.scroll,browserUrl:i.extras.browserUrl,info:i.extras.info,skipLocationChange:i.extras.skipLocationChange,replaceUrl:i.extras.replaceUrl||this.urlUpdateStrategy==="eager"||OG(i.source)},a);this.scheduleNavigation(s,V0,null,l,{resolve:i.resolve,reject:i.reject,promise:i.promise})}}RH(r)&&this._events.next(r)}catch(i){this.navigationTransitions.transitionAbortWithErrorSubject.next(i)}});this.eventsSubscription.add(t)}resetRootComponentType(t){this.routerState.root.component=t,this.navigationTransitions.rootComponentType=t}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),V0,this.stateManager.restoredState(),{replaceUrl:!0})}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((t,r,i,o)=>{this.navigateToSyncWithBrowser(t,i,r,o)})}navigateToSyncWithBrowser(t,r,i,o){let a=i?.navigationId?i:null;if(i){let l=R({},i);delete l.navigationId,delete l.\u0275routerPageId,Object.keys(l).length!==0&&(o.state=l)}let s=this.parseUrl(t);this.scheduleNavigation(s,r,a,o).catch(l=>{this.disposed||this.injector.get(Tr)(l)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return ln(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(t){this.config=t.map(pb),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription?.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0,this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(t,r={}){let{relativeTo:i,queryParams:o,fragment:a,queryParamsHandling:s,preserveFragment:l}=r,c=l?this.currentUrlTree.fragment:a,d=null;switch(s??this.options.defaultQueryParamsHandling){case"merge":d=R(R({},this.currentUrlTree.queryParams),o);break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=o||null}d!==null&&(d=this.removeEmptyProps(d));let u;try{let p=i?i.snapshot:this.routerState.snapshot.root;u=MR(p)}catch{(typeof t[0]!="string"||t[0][0]!=="/")&&(t=[]),u=this.currentUrlTree.root}return RR(u,t,d,c??null,this.urlSerializer)}navigateByUrl(t,r={skipLocationChange:!1}){let i=xd(t)?t:this.parseUrl(t),o=this.urlHandlingStrategy.merge(i,this.rawUrlTree);return this.scheduleNavigation(o,V0,null,r)}navigate(t,r={skipLocationChange:!1}){return jG(t),this.navigateByUrl(this.createUrlTree(t,r),r)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){try{return this.urlSerializer.parse(t)}catch{return this.console.warn(Li(4018,!1)),this.urlSerializer.parse("/")}}isActive(t,r){let i;if(r===!0?i=R({},lH):r===!1?i=R({},uR):i=R(R({},uR),r),xd(t))return pR(this.currentUrlTree,t,i);let o=this.parseUrl(t);return pR(this.currentUrlTree,o,i)}removeEmptyProps(t){return Object.entries(t).reduce((r,[i,o])=>(o!=null&&(r[i]=o),r),{})}scheduleNavigation(t,r,i,o,a){if(this.disposed)return Promise.resolve(!1);let s,l,c;a?(s=a.resolve,l=a.reject,c=a.promise):c=new Promise((u,p)=>{s=u,l=p});let d=this.pendingTasks.add();return i4(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:i,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:t,extras:o,resolve:s,reject:l,promise:c,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),c.catch(Promise.reject.bind(Promise))}static \u0275fac=function(r){return new(r||e)};static \u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function jG(e){for(let n=0;n{class e{constructor(){this.location=A(Mo),this.injectedRouter=A(gb),this._hasUnsavedData=!1}get destroy$(){return this._destroy$||(this._destroy$=new qe),this._destroy$}ngOnDestroy(){this._hasUnsavedData=!1,this._destroy$&&(this._destroy$.next(!0),this._destroy$.complete())}makeFormDirty(t){if(t instanceof Lt)for(let r in t.controls){let i=t.get(r);(i instanceof Ws||i instanceof Lt)&&this.makeFormDirty(i),i.markAsTouched()}else t.controls.forEach(r=>{(r instanceof Ws||r instanceof Lt)&&this.makeFormDirty(r),r.markAsTouched()})}onlyNumber(t){let r=String.fromCharCode(t.charCode);t.keyCode!==8&&!new RegExp(Wh).test(r)&&t.preventDefault()}hasUnsavedData(){return this._hasUnsavedData}getValueFromObservable(t){let r;return t.pipe(Tt(1)).subscribe(i=>r=i),r}goBackToHistory(t=null){t?.length?this.injectedRouter.navigate(t):this.location.back()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["ng-component"]],standalone:!1,decls:0,vars:0,template:function(r,i){},encapsulation:2})}}return e})();var ne={};mP(ne,{addUser:()=>Rb,addUserComplete:()=>Pb,addUserError:()=>Ob,createPermission:()=>Bb,createPermissionComplete:()=>$b,createPermissionError:()=>zb,createRole:()=>jb,createRoleComplete:()=>Vb,createRoleError:()=>Ub,deleteUser:()=>c1,deleteUserComplete:()=>d1,deleteUserError:()=>u1,getCompanyUsers:()=>Wb,getCompanyUsersComplete:()=>Zb,getCompanyUsersError:()=>Kb,getOtpResendAction:()=>Od,getOtpResendActionComplete:()=>wb,getOtpResendActionError:()=>Cb,getOtpVerifyAction:()=>Nd,getOtpVerifyActionComplete:()=>Eb,getOtpVerifyActionError:()=>Db,getPermissions:()=>Hb,getPermissionsComplete:()=>Gb,getPermissionsError:()=>qb,getRoles:()=>Nb,getRolesComplete:()=>Fb,getRolesError:()=>Lb,getSubscriptionPlans:()=>jd,getSubscriptionPlansComplete:()=>o1,getSubscriptionPlansError:()=>a1,getUserDetails:()=>Al,getUserDetailsComplete:()=>Sb,getUserDetailsError:()=>kb,getWidgetData:()=>Rd,getWidgetDataComplete:()=>mb,getWidgetDataError:()=>_b,leaveCompany:()=>Fd,leaveCompanyComplete:()=>Tb,leaveCompanyError:()=>Ib,resetAll:()=>Md,resetAnyState:()=>so,sendOtpAction:()=>Ho,sendOtpActionComplete:()=>vb,sendOtpActionError:()=>yb,updateCompanyUser:()=>Yb,updateCompanyUserComplete:()=>Qb,updateCompanyUserError:()=>Xb,updatePermission:()=>Jb,updatePermissionComplete:()=>e1,updatePermissionError:()=>t1,updateRole:()=>n1,updateRoleComplete:()=>r1,updateRoleError:()=>i1,updateUser:()=>Ld,updateUserComplete:()=>Ab,updateUserError:()=>Mb,updateUserPermission:()=>g1,updateUserPermissionComplete:()=>m1,updateUserPermissionError:()=>_1,updateUserRole:()=>p1,updateUserRoleComplete:()=>f1,updateUserRoleError:()=>h1,upgradeSubscription:()=>Vd,upgradeSubscriptionComplete:()=>s1,upgradeSubscriptionError:()=>l1,verifyOtpAction:()=>Pd,verifyOtpActionComplete:()=>xb,verifyOtpActionError:()=>bb});var so=ge("[OTP] Reset Any State",ye()),Md=ge("[OTP Reset All]"),Rd=ge("[Auth] Get Widget Data",ye()),mb=ge("[OTP] Get Widget Data Complete",ye()),_b=ge("[OTP] Get Widget Data Error",ye()),Ho=ge("[OTP] Send OTP",ye()),vb=ge("[OTP] Send OTP Complete",ye()),yb=ge("[OTP] Send OTP Error",ye()),Pd=ge("[OTP] Verify OTP",ye()),xb=ge("[OTP] Verify OTP Complete",ye()),bb=ge("[OTP] Verify OTP Error",ye()),Od=ge("[OTP] Get OTP Resend",ye()),wb=ge("[OTP] Get OTP Resend Complete",ye()),Cb=ge("[OTP] Get OTP Resend Error",ye()),Nd=ge("[OTP] Get OTP Verify",ye()),Eb=ge("[OTP] Get OTP Verify Complete",ye()),Db=ge("[OTP] Get OTP Verify Error",ye()),Al=ge("[OTP] Get User Details",ye()),Sb=ge("[OTP] Get User Details Complete",ye()),kb=ge("[OTP] Get User Details Error",ye()),Fd=ge("[OTP] Leave Company",ye()),Tb=ge("[OTP] Leave Company Complete",ye()),Ib=ge("[OTP] Leave Company Error",ye()),Ld=ge("[OTP] Update Field",ye()),Ab=ge("[OTP] Update User Success",ye()),Mb=ge("[OTP] Update User Failure",ye()),Rb=ge("[OTP] Add User",ye()),Pb=ge("[OTP] Add User Complete",ye()),Ob=ge("[OTP] Add User Error",ye()),Nb=ge("[OTP] Get Roles",ye()),Fb=ge("[OTP] Get Roles Complete",ye()),Lb=ge("[OTP] Get Roles Error",ye()),jb=ge("[OTP] Create Role",ye()),Vb=ge("[OTP] Create Role Complete",ye()),Ub=ge("[OTP] Create Role Error",ye()),Bb=ge("[OTP] Create Permission",ye()),$b=ge("[OTP] Create Permission Complete",ye()),zb=ge("[OTP] Create Permission Error",ye()),Hb=ge("[OTP] Get Permissions",ye()),Gb=ge("[OTP] Get Permissions Complete",ye()),qb=ge("[OTP] Get Permissions Error",ye()),Wb=ge("[OTP] Get Company Users",ye()),Zb=ge("[OTP] Get Company Users Complete",ye()),Kb=ge("[OTP] Get Company Users Error",ye()),Yb=ge("[OTP] Update Company User",ye()),Qb=ge("[OTP] Update Company User Complete",ye()),Xb=ge("[OTP] Update Company User Error",ye()),Jb=ge("[OTP] Update Permission",ye()),e1=ge("[OTP] Update Permission Complete",ye()),t1=ge("[OTP] Update Permission Error",ye()),n1=ge("[OTP] Update Role",ye()),r1=ge("[OTP] Update Role Complete",ye()),i1=ge("[OTP] Update Role Error",ye()),jd=ge("[OTP] Get Subscription Plans",ye()),o1=ge("[OTP] Get Subscription Plans Complete",ye()),a1=ge("[OTP] Get Subscription Plans Error",ye()),Vd=ge("[OTP] Upgrade Subscription",ye()),s1=ge("[OTP] Upgrade Subscription Complete",ye()),l1=ge("[OTP] Upgrade Subscription Error",ye()),c1=ge("[OTP] Delete User",ye()),d1=ge("[OTP] Delete User Complete",ye()),u1=ge("[OTP] Delete User Error",ye()),p1=ge("[OTP] Update User Role",ye()),f1=ge("[OTP] Update User Role Complete",ye()),h1=ge("[OTP] Update User Role Error",ye()),g1=ge("[OTP] Update User Permission",ye()),m1=ge("[OTP] Update User Permission Complete",ye()),_1=ge("[OTP] Update User Permission Error",ye());var VG=e=>e,ve=me(VG,e=>e.otp),o4=me(ve,e=>e.errors),dg=me(ve,e=>e.otpGenerateData),Ml=me(ve,e=>e.getOtpInProcess),ug=me(ve,e=>e.getOtpSuccess),a4=me(ve,e=>e.verifyOtpV2Data),s4=me(ve,e=>e.verifyOtpV2InProcess),l4=me(ve,e=>e.verifyOtpV2Success),pg=me(ve,e=>e.resendOtpInProcess),c4=me(ve,e=>e.resendOtpSuccess),d4=me(ve,e=>e.verifyOtpData),fg=me(ve,e=>e.verifyOtpInProcess),u4=me(ve,e=>e.verifyOtpSuccess),p4=me(ve,e=>e.resendCount),hg=me(ve,e=>e.apiErrorResponse),f4=me(ve,e=>e.closeWidgetApiFailed),qa=me(ve,e=>e.widgetData),Wa=me(ve,e=>e.theme),h4=me(ve,e=>e.userProfileData),TSe=me(ve,e=>e.userDetailsSuccess),g4=me(ve,e=>e.userProfileDataInProcess),ISe=me(ve,e=>e.leaveCompanyData),m4=me(ve,e=>e.leaveCompanySuccess),ASe=me(ve,e=>e.leaveCompanyDataInProcess),_4=me(ve,e=>e.subscriptionPlansData),MSe=me(ve,e=>e.subscriptionPlansDataInProcess),RSe=me(ve,e=>e.subscriptionPlansDataSuccess),PSe=me(ve,e=>e.updateUser),v4=me(ve,e=>e.updateSuccess),OSe=me(ve,e=>e.loading),gg=me(ve,e=>e.addUserData),NSe=me(ve,e=>e.addUserInProcess),FSe=me(ve,e=>e.addUserSuccess),mg=me(ve,e=>e.rolesData),LSe=me(ve,e=>e.rolesDataInProcess),jSe=me(ve,e=>e.rolesSuccess),y4=me(ve,e=>e.roleCreateData),VSe=me(ve,e=>e.roleCreateDataInProcess),USe=me(ve,e=>e.roleCreateSuccess),x4=me(ve,e=>e.permissionCreateData),BSe=me(ve,e=>e.permissionCreateDataInProcess),$Se=me(ve,e=>e.permissionCreateSuccess),b4=me(ve,e=>e.permissionData),zSe=me(ve,e=>e.permissionDataInProcess),HSe=me(ve,e=>e.permissionSuccess),w4=me(ve,e=>e.companyUsersData),C4=me(ve,e=>e.companyUsersDataInProcess),GSe=me(ve,e=>e.companyUsersSuccess),E4=me(ve,e=>e.updateCompanyUserData),qSe=me(ve,e=>e.updateCompanyUserDataInProcess),WSe=me(ve,e=>e.updateCompanyUserDataSuccess),D4=me(ve,e=>e.updatePermissionData),ZSe=me(ve,e=>e.updatePermissionDataInProcess),KSe=me(ve,e=>e.updatePermissionDataSuccess),S4=me(ve,e=>e.updateRoleData),YSe=me(ve,e=>e.updateRoleDataInProcess),QSe=me(ve,e=>e.updateRoleDataSuccess),k4=me(ve,e=>e.upgradeSubscriptionData),XSe=me(ve,e=>e.upgradeSubscriptionDataInProcess),JSe=me(ve,e=>e.upgradeSubscriptionDataSuccess),eke=me(ve,e=>e.deleteUserData),tke=me(ve,e=>e.deleteUserDataInProcess),nke=me(ve,e=>e.deleteUserDataSuccess),T4=me(ve,e=>e.updateUserRoleData),rke=me(ve,e=>e.updateUserRoleDataInProcess),ike=me(ve,e=>e.updateUserRoleDataSuccess),I4=me(ve,e=>e.updateUserPermissionData),oke=me(ve,e=>e.updateUserPermissionDataInProcess),ake=me(ve,e=>e.updateUserPermissionDataSuccess),A4=me(ve,e=>e.error);var M4={uiEncodeKey:"6bd88de3ea338bbc54f145335302e7bb",uiIvKey:"9df117bc6a2710ad",apiEncodeKey:"dc3d7e0eca5060752c0d5dbf94a46275",apiIvKey:"89751c14a210caa6",hCaptchaSiteKey:"4dea29b2-faf0-431a-b2f8-742039804044",sendOtpAuthKey:"dbc2b79e90d5ee493948fcf6556c2c9a"};var ft=R({production:!0,env:"prod",apiUrl:"https://routes.msg91.com/api",baseUrl:"https://proxy.msg91.com",msgMidProxy:""},M4);var zt=(function(e){return e[e.Msg91OtpService=6]="Msg91OtpService",e[e.GoogleAuthentication=7]="GoogleAuthentication",e[e.PasswordAuthentication=9]="PasswordAuthentication",e[e.AppleAuthentication=8]="AppleAuthentication",e})(zt||{});function UG(){return e=>new De(n=>{let t,r,i=new Zt;return i.add(e.subscribe({complete:()=>{t&&n.next(r),n.complete()},error:o=>{n.error(o)},next:o=>{r=o,t||(t=hu.schedule(()=>{n.next(r),t=void 0}),i.add(t))}})),i})}function R4(e){return typeof e.ngrxOnStoreInit=="function"}function P4(e){return typeof e.ngrxOnStateInit=="function"}var BG=new le("@ngrx/component-store Initial State"),N4=(()=>{class e{constructor(t){this.destroySubject$=new ar(1),this.destroy$=this.destroySubject$.asObservable(),this.stateSubject$=new ar(1),this.isInitialized=!1,this.state$=this.select(r=>r),this.state=Rr(this.stateSubject$.pipe(ce(this.destroy$)),{requireSync:!1,manualCleanup:!0}),this.\u0275hasProvider=!1,t&&this.initState(t),this.checkProviderForHooks()}ngOnDestroy(){this.stateSubject$.complete(),this.destroySubject$.next()}updater(t){return r=>{let i=!0,o,s=(ta(r)?r:fe(r)).pipe(Vr(fo),Ht(()=>this.assertStateIsInitialized()),mo(this.stateSubject$),de(([l,c])=>t(c,l)),Ht(l=>this.stateSubject$.next(l)),at(l=>i?(o=l,At):ea(l)),ce(this.destroy$)).subscribe();if(o)throw o;return i=!1,s}}initState(t){Kl([t],fo).subscribe(r=>{this.isInitialized=!0,this.stateSubject$.next(r)})}setState(t){typeof t!="function"?this.initState(t):this.updater(t)()}patchState(t){let r=typeof t=="function"?t(this.get()):t;this.updater((i,o)=>R(R({},i),o))(r)}get(t){this.assertStateIsInitialized();let r;return this.stateSubject$.pipe(Tt(1)).subscribe(i=>{r=t?t(i):i}),r}select(...t){let{observablesOrSelectorsObject:r,projector:i,config:o}=$G(t);return(HG(r,i)?this.stateSubject$:Yl(r)).pipe(o.debounce?UG():O4(),i?de(s=>r.length>0&&Array.isArray(s)?i(...s):i(s)):O4(),Ie(o.equal),lm({refCount:!0,bufferSize:1}),ce(this.destroy$))}selectSignal(...t){let r=[...t],i=typeof r[t.length-1]=="object"?r.pop():{},o=r.pop(),a=r,s=a.length===0?()=>o(this.state()):()=>{let l=a.map(c=>c());return o(...l)};return Wt(s,i)}effect(t){let r=new qe;return t(r).pipe(ce(this.destroy$)).subscribe(),i=>(ta(i)?i:fe(i)).pipe(ce(this.destroy$)).subscribe(a=>{r.next(a)})}checkProviderForHooks(){hu.schedule(()=>{if(hf()&&(R4(this)||P4(this))&&!this.\u0275hasProvider){let t=[R4(this)?"OnStoreInit":"",P4(this)?"OnStateInit":""].filter(r=>r);console.warn(`@ngrx/component-store: ${this.constructor.name} has the ${t.join(" and ")} lifecycle hook(s) implemented without being provided using the provideComponentStore(${this.constructor.name}) function. To resolve this, provide the component store via provideComponentStore(${this.constructor.name})`)}})}assertStateIsInitialized(){if(!this.isInitialized)throw new Error(`${this.constructor.name} has not been initialized yet. Please make sure it is initialized before updating/getting.`)}static{this.\u0275fac=function(r){return new(r||e)(se(BG,8))}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();function $G(e){let n=Array.from(e),r={debounce:!1,equal:(a,s)=>a===s};if(zG(n[n.length-1])&&(r=R(R({},r),n.pop())),n.length===1&&typeof n[0]!="function")return{observablesOrSelectorsObject:n[0],projector:void 0,config:r};let i=n.pop();return{observablesOrSelectorsObject:n,projector:i,config:r}}function zG(e){let n=e;return typeof n.debounce<"u"||typeof n.equal<"u"}function HG(e,n){return Array.isArray(e)&&e.length===0&&n}function O4(){return e=>e}function _g(e,n,t){let r=typeof e=="function"?{next:e,error:n,complete:t}:e;return i=>i.pipe(Ht({next:r.next,complete:r.complete}),at(o=>(r.error(o),At)),r.finalize?jn(r.finalize):o=>o)}var v1=(()=>{class e{constructor(){this.success$=new qe,this.error$=new qe,this.warn$=new qe,this.info$=new qe,this.action$=new qe,this.clearActionToast$=new qe}success(t,r={}){this.success$.next({message:t,options:r})}error(t,r={}){this.error$.next({message:t,options:r})}warn(t,r={}){this.warn$.next({message:t,options:r})}info(t,r={}){this.info$.next({message:t,options:r})}action(t,r={},i){this.action$.next({message:t,options:r,buttonContent:i})}clearActionToast(){this.clearActionToast$.next(!0)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Rl=(()=>{class e extends N4{constructor(){super({isLoading:!1,logInData:null,resetPassword:null,otpData:null,apiError:!1,showRegistration:null}),this.service=A(Or),this.toast=A(v1),this.otpdata$=this.select(t=>t.otpData),this.isLoading$=this.select(t=>t.isLoading),this.resetPassword$=this.select(t=>t.resetPassword),this.apiError$=this.select(t=>t.apiError),this.showRegistration$=this.select(t=>t.showRegistration),this.loginData=this.effect(t=>t.pipe($e(r=>(this.patchState({isLoading:!0,apiError:null}),this.service.login(r).pipe(_g(i=>i?.hasError?this.patchState({isLoading:!1,apiError:Me(i.errors)?.[0]}):(i.data.redirect_url&&(window.location.href=i.data.redirect_url),this.patchState({isLoading:!1,logInData:i})),i=>{i.status==403&&this.patchState({showRegistration:!0}),this.patchState({isLoading:!1,apiError:Me(i.error.errors)?.[0]})})))))),this.resetPassword=this.effect(t=>t.pipe($e(r=>(this.patchState({isLoading:!0,apiError:null}),this.service.resetPassword(r).pipe(_g(i=>i?.hasError?this.patchState({isLoading:!1,apiError:Me(i.errors)?.[0]}):this.patchState({isLoading:!1,otpData:i.data}),i=>{this.patchState({isLoading:!1,apiError:Me(i.error.errors)?.[0]})})))))),this.verfyPasswordOtp=this.effect(t=>t.pipe($e(r=>(this.patchState({isLoading:!0,apiError:null}),this.service.verfyResetPasswordOtp(r).pipe(_g(i=>i?.hasError?this.patchState({isLoading:!1,apiError:Me(i.errors)?.[0]}):this.patchState({isLoading:!1,resetPassword:i.data}),i=>{this.patchState({isLoading:!1,apiError:Me(i.error.errors)?.[0]})}))))))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();var Yn=Gd(zx());var Nr=(()=>{class e{aesEncrypt(t,r,i,o){let s=Yn.AES.encrypt(t,Yn.enc.Utf8.parse(r),{iv:Yn.enc.Utf8.parse(i),mode:Yn.mode.CBC,padding:Yn.pad.Pkcs7}).toString();return o?btoa(s):s}aesDecrypt(t,r,i,o){return Yn.AES.decrypt(o?atob(t):t,Yn.enc.Utf8.parse(r),{iv:Yn.enc.Utf8.parse(i),mode:Yn.mode.CBC,padding:Yn.pad.Pkcs7}).toString(Yn.enc.Utf8)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();var Sn=(()=>{class e{constructor(){if(this._systemDark=et(typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches),this._themeOverride=et(void 0),this._inputTheme=et(void 0),this.resolvedTheme=Wt(()=>this._themeOverride()??this._inputTheme()),this.isDark$=Wt(()=>{let t=this._themeOverride()??this._inputTheme();return t===xt.Dark?!0:t===xt.Light?!1:this._systemDark()}),this.isDark=t=>t===xt.Dark?!0:t===xt.Light?!1:t!==void 0?this._systemDark():this.isDark$(),typeof window<"u"){let t=window.matchMedia("(prefers-color-scheme: dark)"),r=i=>this._systemDark.set(i.matches);t.addEventListener("change",r),this._mediaQueryCleanup=()=>t.removeEventListener("change",r)}}setInputTheme(t){this._inputTheme.set(t)}setThemeOverride(t){this._themeOverride.set(t)}ngOnDestroy(){this._mediaQueryCleanup?.()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();var zn=(function(e){return e.V1="v1",e.V2="v2",e})(zn||{}),Pl=(function(e){return e.TOP="top",e.BOTTOM="bottom",e})(Pl||{});var y1=(function(e){return e[e.VerifyLimitReached=704]="VerifyLimitReached",e[e.InvalidOtp=703]="InvalidOtp",e})(y1||{});var Ud=(()=>{class e{constructor(){this.buttonRef=Se(),this.valid=pn(),this.container=A(Xi,{self:!0}),this.formGroupDirective=A(Rn,{self:!0}),this.renderer=A(Ir)}markAllAsTouched(){this.container&&this.container.control.markAllAsTouched(),this.formGroupDirective&&this.recursivelyMarkAsTouched(this.formGroupDirective.control)}ngOnInit(){this.buttonRef()?._elementRef?.nativeElement&&(this.unsubscribeListener&&this.unsubscribeListener(),this.unsubscribeListener=this.renderer.listen(this.buttonRef()?._elementRef?.nativeElement,"click",t=>{this.markAllAsTouched(),this.container.invalid?(t.stopPropagation(),t.preventDefault()):this.valid.emit()}))}ngOnDestroy(){this.unsubscribeListener&&this.unsubscribeListener()}recursivelyMarkAsTouched(t){Object.values(t.controls).forEach(r=>{r.markAllAsTouched(),r.controls&&this.recursivelyMarkAsTouched(r)})}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275dir=It({type:e,selectors:[["","proxyMarkAllAsTouched",""]],hostBindings:function(r,i){r&1&&J("submit",function(){return i.markAllAsTouched()})},inputs:{buttonRef:[1,"buttonRef"]},outputs:{valid:"valid"}})}}return e})();var GG=["otp1"],qG=["otp2"],WG=["otp3"],ZG=["otp4"],KG=e=>({label:"First Name",patternError:"Only alphabets are allowed",formControl:e}),YG=e=>({label:"Last Name",patternError:"Only alphabets are allowed",formControl:e}),F4=e=>({label:"Email",formControl:e}),QG=(e,n)=>({key:"user",label:"Mobile",required:!0,formControl:e,isFieldFocused:n}),XG=e=>({type:"password",label:"Password",patternError:"Enter a valid password",formControl:e}),JG=e=>({type:"confirm password",label:"Confirm Password",patternError:"Enter a valid password",formControl:e}),eq=e=>({label:"Company Name",formControl:e}),tq=e=>({key:"company",label:"Mobile",formControl:e}),nq=e=>({visible:e});function rq(e,n){if(e&1){let t=be();g(0,"button",26),J("click",function(){W(t);let i=k(2);return Z(i.close(!0))}),ue(),g(1,"svg",27),Q(2,"path",28),m()()}if(e&2){let t=k(2);x(2),lt("fill",t.isDarkTheme?"#ffffff":"#5D6164")}}function iq(e,n){if(e&1&&(g(0,"div",8)(1,"h2",24),E(2,"Register"),m(),U(3,rq,3,1,"button",25),m()),e&2){let t=k();x(),st("color",t.primaryColor||null),x(2),B(t.isRegisterFormOnly()?-1:3)}}function oq(e,n){e&1&&St(0)}function aq(e,n){e&1&&St(0)}function sq(e,n){e&1&&St(0)}function lq(e,n){e&1&&St(0)}function cq(e,n){if(e&1&&(E(0),tt(1,"async")),e&2){let t=k(2);Ce(" ",ot(1,1,t.selectGetOtpInProcess$)?"Sending...":"Get OTP"," ")}}function dq(e,n){if(e&1&&E(0),e&2){let t=k(2);Ce(" Resend in ",t.resendTimer,"s ")}}function uq(e,n){e&1&&E(0," Resend OTP ")}function pq(e,n){e&1&&E(0," Sending... ")}function fq(e,n){if(e&1){let t=be();g(0,"button",29),tt(1,"async"),J("click",function(){W(t);let i=k();return Z(i.isOtpSent?i.resendOtp():i.getOtp())}),U(2,cq,2,3),tt(3,"async"),Ca(4,dq,1,1)(5,uq,1,0)(6,pq,1,0),m()}if(e&2){let t=k();st("--btn-hover-color",t.buttonHoverColor)("background-color",t.buttonColor||null)("color",t.buttonColor?t.buttonTextColor||"#ffffff":null)("border-radius",t.borderRadiusValue||null),We("has-hover-color",!!t.buttonHoverColor),te("disabled",ot(1,12,t.selectGetOtpInProcess$)||t.isOtpSent&&!t.canResendOtp),x(2),B(t.isOtpSent?t.isOtpSent&&!t.canResendOtp?4:t.isOtpSent&&t.canResendOtp&&!ot(3,14,t.selectGetOtpInProcess$)?5:6:2)}}function hq(e,n){e&1&&(g(0,"span",16),E(1," Verified "),ue(),g(2,"svg",30),Q(3,"path",31),m()())}function gq(e,n){if(e&1){let t=be();g(0,"div",17)(1,"a",32),J("click",function(){W(t);let i=k();return Z(i.numberChanged())}),E(2,"Change Number"),m()()}}function mq(e,n){if(e&1&&(g(0,"p",22),E(1),m()),e&2){let t=k(2);x(),_t(t.otpError)}}function _q(e,n){if(e&1){let t=be();g(0,"div",18)(1,"div",33)(2,"input",34,4),J("input",function(i){W(t);let o=mt(5),a=k();return Z(a.onOtpInput(i,"otp1",o))})("keyup",function(i){W(t);let o=k();return Z(o.onOtpKeyup(i,"otp1"))})("keydown",function(i){W(t);let o=k();return Z(o.onOtpKeydown(i,"otp1"))})("paste",function(i){W(t);let o=k();return Z(o.onOtpPaste(i))}),m(),g(4,"input",35,5),J("input",function(i){W(t);let o=mt(7),a=k();return Z(a.onOtpInput(i,"otp2",o))})("keyup",function(i){W(t);let o=k();return Z(o.onOtpKeyup(i,"otp2"))})("keydown",function(i){W(t);let o=mt(3),a=k();return Z(a.onOtpKeydown(i,"otp2",o))}),m(),g(6,"input",36,6),J("input",function(i){W(t);let o=mt(9),a=k();return Z(a.onOtpInput(i,"otp3",o))})("keyup",function(i){W(t);let o=k();return Z(o.onOtpKeyup(i,"otp3"))})("keydown",function(i){W(t);let o=mt(5),a=k();return Z(a.onOtpKeydown(i,"otp3",o))}),m(),g(8,"input",37,7),J("input",function(i){W(t);let o=k();return Z(o.onOtpInput(i,"otp4"))})("keyup",function(i){W(t);let o=k();return Z(o.onOtpKeyup(i,"otp4"))})("keydown",function(i){W(t);let o=mt(7),a=k();return Z(a.onOtpKeydown(i,"otp4",o))}),m(),g(10,"a",32),tt(11,"async"),tt(12,"async"),J("click",function(){W(t);let i=k();return Z(i.verifyOtp())}),E(13),tt(14,"async"),m()(),U(15,mq,2,1,"p",22),m()}if(e&2){let t=k();x(),te("formGroup",t.otpForm),x(9),We("opacity-50",ot(11,7,t.selectVerifyOtpV2InProcess$))("pointer-events-none",ot(12,9,t.selectVerifyOtpV2InProcess$)),x(3),Ce(" ",ot(14,11,t.selectVerifyOtpV2InProcess$)?"Verifying...":"Verify OTP"," "),x(2),B(t.otpError?15:-1)}}function vq(e,n){e&1&&St(0)}function yq(e,n){e&1&&St(0)}function xq(e,n){e&1&&St(0)}function bq(e,n){e&1&&St(0)}function wq(e,n){e&1&&St(0)}function Cq(e,n){if(e&1&&(Q(0,"hr",38),g(1,"p",10),E(2," Company Details (Optional) "),m(),Gt(3,xq,1,0,"ng-container",12)(4,bq,1,0,"ng-container",12)(5,wq,1,0,"ng-container",12)),e&2){let t=k(),r=mt(31),i=mt(33);x(),st("color",t.primaryColor||null),x(2),te("ngTemplateOutlet",r)("ngTemplateOutletContext",qt(8,eq,t.registrationForm.get("company.name"))),x(),te("ngTemplateOutlet",i)("ngTemplateOutletContext",qt(10,tq,t.registrationForm.get("company.mobile"))),x(),te("ngTemplateOutlet",r)("ngTemplateOutletContext",qt(12,F4,t.registrationForm.get("company.email")))}}function Eq(e,n){if(e&1&&(g(0,"span"),E(1),Q(2,"br"),m()),e&2){let t=n.$implicit;x(),_t(t)}}function Dq(e,n){e&1&&(g(0,"span",20),E(1,"Error: "),m(),Rt(2,Eq,3,1,"span",null,fr)),e&2&&(x(2),Pt(n))}function Sq(e,n){e&1&&St(0)}function kq(e,n){if(e&1){let t=be();Q(0,"input",44),g(1,"button",45),J("click",function(){W(t);let i=k().type,o=k();return Z(i==="password"?o.showPassword=!o.showPassword:o.showConfirmPassword=!o.showConfirmPassword)}),Gt(2,Sq,1,0,"ng-container",12),m()}if(e&2){let t=k(),r=t.type,i=t.label,o=t.formControl,a=k(),s=mt(35);st("border-radius",a.borderRadiusValue||null),te("type",(r==="password"?a.showPassword:a.showConfirmPassword)?"text":"password")("formControl",o)("placeholder",i),x(),lt("aria-label",(r==="password"?a.showPassword:a.showConfirmPassword)?"Hide password":"Show password"),x(),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(8,nq,r==="password"?a.showPassword:a.showConfirmPassword))}}function Tq(e,n){if(e&1&&Q(0,"input",46),e&2){let t=k(),r=t.type,i=t.label,o=t.formControl,a=k();st("border-radius",a.borderRadiusValue||null),te("type",r||"text")("formControl",o)("placeholder",i)}}function Iq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=k(2).label;x(),Ce("",t," is required.")}}function Aq(e,n){e&1&&(g(0,"p",47),E(1,"Min required length is 3."),m())}function Mq(e,n){e&1&&(g(0,"p",47),E(1,"Start and End spaces are not allowed."),m())}function Rq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=n;x(),Ce(" Min value required is ",t==null?null:t.min,". ")}}function Pq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=n;x(),Ce(" Max value allowed is ",t==null?null:t.max,". ")}}function Oq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=n;x(),Ce(" Min required length is ",t==null?null:t.requiredLength,". ")}}function Nq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=n;x(),Ce(" Max allowed length is ",t==null?null:t.requiredLength,". ")}}function Fq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=k(2),r=t.label,i=t.patternError;x(),Ce(" ",i||"Enter valid "+r," ")}}function Lq(e,n){if(e&1&&(g(0,"p",47),E(1),m()),e&2){let t=k(2).label;x(),Ce("",t," mismatch.")}}function jq(e,n){if(e&1&&U(0,Iq,2,1,"p",47)(1,Aq,2,0,"p",47)(2,Mq,2,0,"p",47)(3,Rq,2,1,"p",47)(4,Pq,2,1,"p",47)(5,Oq,2,1,"p",47)(6,Nq,2,1,"p",47)(7,Fq,2,1,"p",47)(8,Lq,2,1,"p",47),e&2){let t,r=k().formControl;B(r.errors!=null&&r.errors.required?0:r.errors!=null&&r.errors.minlengthWithSpace?1:r.errors!=null&&r.errors.noStartEndSpaces?2:(t=r.errors==null?null:r.errors.min)?3:(t=r.errors==null?null:r.errors.max)?4:(t=r.errors==null?null:r.errors.minlength)?5:(t=r.errors==null?null:r.errors.maxlength)?6:r.errors!=null&&r.errors.pattern?7:r.errors!=null&&r.errors.valueSameAsControl?8:-1,t)}}function Vq(e,n){if(e&1&&(g(0,"p",43),E(1),m()),e&2){let t=k().hint;x(),_t(t)}}function Uq(e,n){if(e&1&&(g(0,"div",39)(1,"label",40),E(2),m(),g(3,"div",41),U(4,kq,3,10)(5,Tq,1,5,"input",42),m(),U(6,jq,9,1),U(7,Vq,2,1,"p",43),m()),e&2){let t=n.type,r=n.label,i=n.hint,o=n.formControl;x(2),_t(r),x(2),B(t==="password"||t==="confirm password"?4:5),x(2),B(o!=null&&o.touched?6:-1),x(),B(i?7:-1)}}function Bq(e,n){e&1&&(g(0,"p",47),E(1,"Please enter valid mobile number."),m())}function $q(e,n){e&1&&(g(0,"p",47),E(1,"Please verify the mobile number."),m())}function zq(e,n){if(e&1){let t=be();g(0,"div",48)(1,"input",49),J("keypress",function(i){let o=W(t).key,a=k();return Z(a.intlClass==null||a.intlClass[o]==null?null:a.intlClass[o].onlyPhoneNumber(i))})("input",function(i){let o=W(t).key,a=k();return Z(a.onMobileInput(i,o))})("blur",function(){let i=W(t),o=i.key,a=i.formControl,s=k();return a==null||a.markAsTouched(),Z(a==null?null:a.setValue(s.intlClass==null||s.intlClass[o]==null||s.intlClass[o].phoneNumber==null?null:s.intlClass[o].phoneNumber.replace("+","")))}),m(),U(2,Bq,2,0,"p",47),U(3,$q,2,0,"p",47),m()}if(e&2){let t=n.key,r=n.label,i=n.required,o=n.formControl,a=n.isFieldFocused,s=k();lt("id","init-contact-wrapper-"+t),x(),st("border-radius",s.borderRadiusValue||null),We("border-red-500",o.touched&&!(!(s.intlClass==null||s.intlClass[t]==null)&&s.intlClass[t][i?"isRequiredValidNumber":"isValidNumber"])),te("placeholder","Enter "+r+(i?" *":""))("disabled",a),lt("id","init-contact-"+t),x(),B(o.touched&&!(!(s.intlClass==null||s.intlClass[t]==null)&&s.intlClass[t][i?"isRequiredValidNumber":"isValidNumber"])?2:-1),x(),B(o.errors!=null&&o.errors.otpVerificationFailed?3:-1)}}function Hq(e,n){e&1&&(ue(),g(0,"svg",50),Q(1,"path",51),m())}function Gq(e,n){e&1&&(ue(),g(0,"svg",50),Q(1,"path",52),m())}function qq(e,n){if(e&1&&U(0,Hq,2,0,":svg:svg",50)(1,Gq,2,0,":svg:svg",50),e&2){let t=n.visible;B(t?1:0)}}var vg=(()=>{class e extends Kn{get showCompanyDetail(){return this.showCompanyDetails()!==!1}get isDarkTheme(){return this.themeService.isDark(this.theme())}constructor(){super(),this.referenceId=Se(),this.serviceData=Se(),this.loginServiceData=Se(),this.registrationViaLogin=Se(),this.prefillDetails=Se(),this.showCompanyDetails=Se(!0),this.version=Se("v1"),this.theme=Se(),this.WidgetTheme=xt,this.firstName=Se(),this.lastName=Se(),this.email=Se(),this.signupServiceId=Se(),this.isRegisterFormOnly=Se(!1),this.isInDialog=Se(!1),this.showPassword=!1,this.showConfirmPassword=!1,this.togglePopUp=pn(),this.successReturn=pn(),this.failureReturn=pn(),this.registrationForm=new Lt({user:new Lt({firstName:new je(null,[he.required,he.pattern(Ox),he.minLength(3),he.maxLength(24)]),lastName:new je(null,[he.pattern(Ox),he.minLength(3),he.maxLength(25)]),email:new je(null,[he.required,he.pattern(Va)]),mobile:new je(null,[he.required]),password:new je(null,[he.required,he.pattern(oo),he.maxLength(15)]),confirmPassword:new je(null,[he.required,he.pattern(oo),he.maxLength(15),xi.valueSameAsControl("password")])}),company:new Lt({name:new je(null,[he.minLength(3),he.maxLength(50)]),mobile:new je(null),email:new je(null,he.pattern(Va))})}),this.otpForm=new Lt({otp1:new je(""),otp2:new je(""),otp3:new je(""),otp4:new je("")}),this.intlClass={},this.apiError=new dt(null),this.isOtpVerified=!1,this.isOtpSent=!1,this.isNumberChanged=!1,this.otpError="",this.otpVerificationToken="",this.resendTimer=0,this.canResendOtp=!0,this.lastSentMobileNumber="",this.uiPreferences={},this.store=A(dn),this.otpService=A(Or),this.otpUtilityService=A(Nr),this.cdr=A(cn),this.themeService=A(Sn),sn(()=>this.themeService.setInputTheme(this.theme())),this.selectGetOtpRes$=this.store.pipe(ke(dg),Ie(Le),ce(this.destroy$)),this.selectGetOtpInProcess$=this.store.pipe(ke(Ml),Ie(Le),ce(this.destroy$)),this.selectGetOtpSuccess$=this.store.pipe(ke(ug),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpV2Data$=this.store.pipe(ke(a4),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpV2InProcess$=this.store.pipe(ke(s4),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpV2Success$=this.store.pipe(ke(l4),Ie(Le),ce(this.destroy$)),this.selectApiErrorResponse$=this.store.pipe(ke(hg),Ie(Le),ce(this.destroy$)),this.selectWidgetTheme$=this.store.pipe(ke(Wa),Ie(Le),ce(this.destroy$))}ngOnInit(){this.selectWidgetTheme$.pipe(ce(this.destroy$)).subscribe(t=>{this.uiPreferences=t?.ui_preferences||{}}),this.isRegisterFormOnly()&&this.registrationForm.get("user.email").disable(),this.registrationForm.get("user.mobile").valueChanges.pipe(ce(this.destroy$)).subscribe(t=>{this.isOtpVerified=!1,this.otpError=""}),this.registrationForm.get("user.password").valueChanges.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.registrationForm.get("user.confirmPassword").updateValueAndValidity()}),this.selectVerifyOtpV2Success$.pipe(ce(this.destroy$)).subscribe(t=>{this.isOtpVerified=t,t&&(this.registrationForm.get("user.mobile").setErrors(null),this.otpError=""),this.cdr.markForCheck()}),this.selectVerifyOtpV2Data$.pipe(ce(this.destroy$)).subscribe(t=>{this.otpVerificationToken=t?.data?.otp_verification_token,this.cdr.markForCheck()}),this.selectGetOtpSuccess$.pipe(ce(this.destroy$)).subscribe(t=>{t&&(this.isOtpSent=!0,this.startResendTimer(),this.lastSentMobileNumber=this.registrationForm.get("user.mobile").value,this.isNumberChanged=!0,this.cdr.markForCheck())}),this.selectApiErrorResponse$.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.isOtpSent&&!this.isOtpVerified&&(this.otpError="Please enter valid OTP",this.otpForm.reset()),this.cdr.markForCheck()}),document.addEventListener("paste",this.handleGlobalPaste.bind(this))}checkPrefillDetails(){let t=this.prefillDetails();isNaN(Number(t))?(this.registrationForm.get("user.email").setValue(t),this.registrationForm.get("user.mobile").setValue(null)):(this.registrationForm.get("user.email").setValue(null),this.prefilledNumber=t,this.registrationForm.get("user.mobile").setValue(t))}ngAfterViewInit(){setTimeout(()=>{this.initIntl("user");let t=0,r=setInterval(()=>{let i=document.querySelector("proxy-auth")?.shadowRoot?.querySelector("#init-contact-wrapper-user")||document.getElementById("init-contact-wrapper-user");(t>6||i?.querySelector(".iti__selected-flag")?.getAttribute("title"))&&(this.initIntl("company"),clearInterval(r)),t+=1},500)})}ngOnDestroy(){document.removeEventListener("paste",this.handleGlobalPaste.bind(this)),this.stopResendTimer(),super.ngOnDestroy()}startResendTimer(){this.canResendOtp=!1,this.resendTimer=30,this.timerSubscription=ra(1e3).subscribe(()=>{this.resendTimer--,this.resendTimer<=0&&(this.stopResendTimer(),this.canResendOtp=!0),this.cdr.detectChanges()})}stopResendTimer(){this.timerSubscription&&(this.timerSubscription.unsubscribe(),this.timerSubscription=null),this.resendTimer=0,this.canResendOtp=!0}resendOtp(){let t=this.registrationForm.get("user.mobile"),r=t.value;r!==this.lastSentMobileNumber&&(this.stopResendTimer(),this.canResendOtp=!0,this.lastSentMobileNumber=r),t.markAsTouched();let i=this.intlClass.user?.isRequiredValidNumber;t.valid&&i&&this.canResendOtp&&this.store.dispatch(Ho({request:{referenceId:this.referenceId(),mobile:t.value,authkey:ft.sendOtpAuthKey}}))}initIntl(t){let r=document.querySelector("proxy-auth")?.shadowRoot?.getElementById("init-contact-"+t)||document.getElementById("init-contact-"+t),i=`${window.location.origin}/assets/utils/intl-tel-input-custom.css`;r&&(this.intlClass[t]=new vl(r,document.head,i),this.prefilledNumber&&r.setAttribute("value",`+${this.prefilledNumber}`))}close(t=!1){this.resetFormState(),this.resetOtpStoreState(),this.togglePopUp.emit(),t&&this.failureReturn.emit({code:0,closeByUser:t,message:"User cancelled the registration process."})}resetOtpStoreState(){this.store.dispatch(so({request:{otpGenerateData:null,getOtpInProcess:!1,getOtpSuccess:!1,verifyOtpV2Data:null,verifyOtpV2InProcess:!1,verifyOtpV2Success:!1,resendOtpInProcess:!1,resendOtpSuccess:!1,verifyOtpData:null,verifyOtpInProcess:!1,verifyOtpSuccess:!1,resendCount:0,apiErrorResponse:null,errors:null}}))}resetFormState(){this.isOtpVerified=!1,this.isOtpSent=!1,this.isNumberChanged=!1,this.otpError="",this.lastSentMobileNumber="",this.registrationForm.reset(),this.otpForm.reset(),this.stopResendTimer(),this.apiError.next(null)}returnSuccess(t){this.successReturn.emit(t)}submit(){if(this.apiError.next(null),!this.isOtpVerified){this.registrationForm.get("user.mobile").setErrors({otpVerificationFailed:!0});return}let t=Hx(Pr(this.registrationForm.getRawValue()),!0),r=JSON.parse(this.otpUtilityService.aesDecrypt(this.registrationViaLogin()?this.loginServiceData().state:this.serviceData()?.state??"",ft.uiEncodeKey,ft.uiIvKey,!0)||"{}");t?.user&&(delete t?.user?.confirmPassword,t.user.name=t?.user?.firstName+(t?.user?.lastName?" "+t?.user?.lastName:""),t.user.meta={},delete t?.user?.firstName,delete t?.user?.lastName),t?.company&&(t.company.meta={});let i=R({reference_id:this.referenceId(),service_id:this.registrationViaLogin()?this.loginServiceData().service_id:this.serviceData().service_id,url_unique_id:r?.url_unique_id,request_data:t},this.signupServiceId()&&{signup_service_id:this.signupServiceId()}),o=this.otpUtilityService.aesEncrypt(JSON.stringify(i),ft.uiEncodeKey,ft.uiIvKey,!0),a=this.registrationViaLogin()?this.loginServiceData().state:this.serviceData().state;this.otpService.register({proxy_state:o,state:a,otp_verification_token:this.otpVerificationToken}).subscribe(s=>{window.location.href=s.data.redirect_url},s=>{this.apiError.next(Me(s?.error.errors))})}getOtp(){this.registrationForm.get("user.mobile").errors?.otpVerificationFailed&&this.registrationForm.get("user.mobile").setErrors(null);let t=this.registrationForm.get("user.mobile");if(t.invalid)return;let r=this.intlClass.user?.isRequiredValidNumber;t.valid&&r&&this.store.dispatch(Ho({request:{referenceId:this.referenceId(),mobile:t.value,authkey:ft.sendOtpAuthKey}}))}verifyOtp(){let t=this.otpForm.value,r=this.registrationForm.get("user.mobile"),o=[t.otp1,t.otp2,t.otp3,t.otp4].filter(a=>a&&a.trim()!=="").join("");o.length===4&&this.store.dispatch(Pd({request:{referenceId:this.referenceId(),mobile:r.value,otp:o,authkey:ft.sendOtpAuthKey}}))}onOtpInput(t,r,i){let o=t.target,a=o.value;/^\d*$/.test(a)||(a=a.replace(/\D/g,""),o.value=a),this.otpForm.get(r).setValue(a),this.otpError&&(this.otpError=""),this.cdr.detectChanges(),a&&i&&i.focus()}onOtpPaste(t){t.preventDefault();let i=t.clipboardData.getData("text/plain").replace(/\D/g,"").slice(0,4).split(""),o=["otp1","otp2","otp3","otp4"];o.forEach((s,l)=>{let c=s;this.otpForm.get(c).setValue("")}),i.forEach((s,l)=>{if(l<4){let c=o[l];this.otpForm.get(c).setValue(s)}}),this.otpError&&(this.otpError=""),this.cdr.detectChanges();let a=Math.min(i.length-1,3);setTimeout(()=>{let s=document.querySelector(`#otp${a+1}`);if(s&&a<3)s.focus();else{let l=document.querySelector(`#otp${a+1}`);l&&l.focus()}},100)}handleGlobalPaste(t){let r=t.target;r&&r.closest(".otp-container")&&this.onOtpPaste(t)}onOtpKeyup(t,r){let o=t.target.value;this.otpForm.get(r).setValue(o),this.cdr.detectChanges()}onOtpKeydown(t,r,i){let o=t.target;t.key==="Backspace"&&!o.value&&i&&(t.preventDefault(),i.focus(),i.select())}onMobileInput(t,r){if(r==="user"){this.isOtpSent=!1;let o=t.target.value;this.registrationForm.get("user.mobile").setValue(o),this.otpForm.reset(),o!==this.lastSentMobileNumber&&(this.stopResendTimer(),this.canResendOtp=!0),this.cdr.detectChanges()}}numberChanged(){this.isOtpSent=!1,this.isOtpVerified=!1,this.isNumberChanged=!1,this.otpForm.reset(),this.cdr.detectChanges()}get primaryColor(){return this.version()!=="v2"?null:this.themeService.isDark()?this.uiPreferences?.dark_theme_primary_color||null:this.uiPreferences?.light_theme_primary_color||null}get borderRadiusValue(){if(this.version()!=="v2")return null;switch(this.uiPreferences?.border_radius){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";default:return null}}get buttonColor(){return this.version()!=="v2"?null:this.uiPreferences?.button_color||null}get buttonHoverColor(){return this.version()!=="v2"?null:this.uiPreferences?.button_hover_color||null}get buttonTextColor(){return this.version()!=="v2"?null:this.uiPreferences?.button_text_color||null}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-register"]],viewQuery:function(r,i){if(r&1&&bn(GG,5)(qG,5)(WG,5)(ZG,5),r&2){let o;Ot(o=Nt())&&(i.otp1Ref=o.first),Ot(o=Nt())&&(i.otp2Ref=o.first),Ot(o=Nt())&&(i.otp3Ref=o.first),Ot(o=Nt())&&(i.otp4Ref=o.first)}},inputs:{referenceId:[1,"referenceId"],serviceData:[1,"serviceData"],loginServiceData:[1,"loginServiceData"],registrationViaLogin:[1,"registrationViaLogin"],prefillDetails:[1,"prefillDetails"],showCompanyDetails:[1,"showCompanyDetails"],version:[1,"version"],theme:[1,"theme"],firstName:[1,"firstName"],lastName:[1,"lastName"],email:[1,"email"],signupServiceId:[1,"signupServiceId"],isRegisterFormOnly:[1,"isRegisterFormOnly"],isInDialog:[1,"isInDialog"]},outputs:{togglePopUp:"togglePopUp",successReturn:"successReturn",failureReturn:"failureReturn"},features:[Dt],decls:36,vars:49,consts:[["submitBtn",""],["formField",""],["intlFormField",""],["visibilityIcon",""],["otp1",""],["otp2",""],["otp3",""],["otp4",""],[1,"flex","items-center","justify-between","mb-4"],["proxyMarkAllAsTouched","",1,"flex","flex-col","gap-3","w-full",3,"valid","formGroup","buttonRef"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white"],[1,"grid","grid-cols-2","gap-3"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"flex","items-start","gap-2"],[1,"flex-1","min-w-0"],["type","button",1,"w-btn-primary","shrink-0","whitespace-nowrap","px-3",3,"disabled","has-hover-color","--btn-hover-color","background-color","color","border-radius"],[1,"flex","items-center","gap-1","mt-1","text-sm","font-medium","text-green-600"],[1,"flex","justify-end"],[1,"flex","flex-col","gap-2"],[1,"text-xs","text-gray-600","dark:text-gray-400"],[1,"font-semibold"],[1,"flex","items-end","justify-between","gap-3","mt-1"],[1,"text-xs","text-red-600","dark:text-red-400"],["type","button",1,"w-btn-primary","shrink-0"],[1,"text-base","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close",1,"flex","size-6","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500"],["type","button","aria-label","Close",1,"flex","size-6","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["width","12","height","12","viewBox","0 0 12 12","fill","none","aria-hidden","true"],["d","M11.8334 1.34163L10.6584 0.166626L6.00008 4.82496L1.34175 0.166626L0.166748 1.34163L4.82508 5.99996L0.166748 10.6583L1.34175 11.8333L6.00008 7.17496L10.6584 11.8333L11.8334 10.6583L7.17508 5.99996L11.8334 1.34163Z"],["type","button",1,"w-btn-primary","shrink-0","whitespace-nowrap","px-3",3,"click","disabled"],["xmlns","http://www.w3.org/2000/svg","height","18px","viewBox","0 -960 960 960","width","18px","fill","#4caf50","aria-hidden","true"],["d","m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"],["href","javascript:void(0)",1,"w-link",3,"click"],[1,"flex","items-center","gap-3",3,"formGroup"],["type","text","maxlength","1","formControlName","otp1",1,"w-input-otp",3,"input","keyup","keydown","paste"],["type","text","maxlength","1","formControlName","otp2",1,"w-input-otp",3,"input","keyup","keydown"],["type","text","maxlength","1","formControlName","otp3",1,"w-input-otp",3,"input","keyup","keydown"],["type","text","maxlength","1","formControlName","otp4",1,"w-input-otp",3,"input","keyup","keydown"],[1,"my-1","border-gray-200","dark:border-gray-700"],[1,"w-full"],[1,"block","text-sm","font-medium","text-gray-900","dark:text-white","mb-1"],[1,"relative"],["autocomplete","off",1,"w-input-sm",3,"type","formControl","placeholder","border-radius"],[1,"mt-1","text-xs","text-gray-400","dark:text-gray-500"],["autocomplete","off","maxlength","15",1,"w-input-sm","pr-9",3,"type","formControl","placeholder"],["type","button",1,"absolute","inset-y-0","right-0","flex","items-center","pr-2.5","cursor-pointer","text-gray-400","hover:text-gray-600","dark:hover:text-gray-300",3,"click"],["autocomplete","off",1,"w-input-sm",3,"type","formControl","placeholder"],["role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],[1,"w-full",2,"position","relative","margin-bottom","4px"],["type","tel","autocomplete","off",1,"w-input-sm",3,"keypress","input","blur","placeholder","disabled"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill","currentColor","aria-hidden","true",1,"size-4","text-gray-400","dark:text-gray-500"],["d","M12.01 20c-5.065 0-9.586-4.211-12.01-8.424 2.418-4.103 6.943-7.576 12.01-7.576 5.135 0 9.635 3.453 11.999 7.564-2.241 4.43-6.726 8.436-11.999 8.436zm-10.842-8.416c.843 1.331 5.018 7.416 10.842 7.416 6.305 0 10.112-6.103 10.851-7.405-.772-1.198-4.606-6.595-10.851-6.595-6.116 0-10.025 5.355-10.842 6.584zm10.832-4.584c2.76 0 5 2.24 5 5s-2.24 5-5 5-5-2.24-5-5 2.24-5 5-5zm0 1c2.208 0 4 1.792 4 4s-1.792 4-4 4-4-1.792-4-4 1.792-4 4-4z"],["d","M8.137 15.147c-.71-.857-1.146-1.947-1.146-3.147 0-2.76 2.241-5 5-5 1.201 0 2.291.435 3.148 1.145l1.897-1.897c-1.441-.738-3.122-1.248-5.035-1.248-6.115 0-10.025 5.355-10.842 6.584.529.834 2.379 3.527 5.113 5.428l1.865-1.865zm6.294-6.294c-.673-.53-1.515-.853-2.44-.853-2.207 0-4 1.792-4 4 0 .923.324 1.765.854 2.439l5.586-5.586zm7.56-6.146l-19.292 19.293-.708-.707 3.548-3.548c-2.298-1.612-4.234-3.885-5.548-6.169 2.418-4.103 6.943-7.576 12.01-7.576 2.065 0 4.021.566 5.782 1.501l3.501-3.501.707.707zm-2.465 3.879l-.734.734c2.236 1.619 3.628 3.604 4.061 4.274-.739 1.303-4.546 7.406-10.852 7.406-1.425 0-2.749-.368-3.951-.938l-.748.748c1.475.742 3.057 1.19 4.699 1.19 5.274 0 9.758-4.006 11.999-8.436-1.087-1.891-2.63-3.637-4.474-4.978zm-3.535 5.414c0-.554-.113-1.082-.317-1.562l.734-.734c.361.69.583 1.464.583 2.296 0 2.759-2.24 5-5 5-.832 0-1.604-.223-2.295-.583l.734-.735c.48.204 1.007.318 1.561.318 2.208 0 4-1.792 4-4z"]],template:function(r,i){if(r&1&&(U(0,iq,4,3,"div",8),g(1,"div",9),J("valid",function(){return i.submit()}),g(2,"p",10),E(3,"User Details"),m(),g(4,"div",11),Gt(5,oq,1,0,"ng-container",12)(6,aq,1,0,"ng-container",12),m(),Gt(7,sq,1,0,"ng-container",12),g(8,"div",13)(9,"div",14),Gt(10,lq,1,0,"ng-container",12),m(),U(11,fq,7,16,"button",15)(12,hq,4,0,"span",16),m(),U(13,gq,3,0,"div",17),U(14,_q,16,13,"div",18),g(15,"div",11),Gt(16,vq,1,0,"ng-container",12)(17,yq,1,0,"ng-container",12),m(),g(18,"p",19)(19,"span",20),E(20,"Note: "),m(),E(21,"Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol "),m(),U(22,Cq,6,14),g(23,"div",21)(24,"div",22),U(25,Dq,4,0),tt(26,"async"),m(),g(27,"button",23,0),E(29," Submit "),m()()(),Gt(30,Uq,8,4,"ng-template",null,1,Qn)(32,zq,4,10,"ng-template",null,2,Qn)(34,qq,2,1,"ng-template",null,3,Qn)),r&2){let o,a=mt(28),s=mt(31),l=mt(33);B(i.isInDialog()?-1:0),x(),te("formGroup",i.registrationForm)("buttonRef",a),x(),st("color",i.primaryColor||null),x(3),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(36,KG,i.registrationForm.get("user.firstName"))),x(),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(38,YG,i.registrationForm.get("user.lastName"))),x(),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(40,F4,i.registrationForm.get("user.email"))),x(3),te("ngTemplateOutlet",l)("ngTemplateOutletContext",Ov(42,QG,i.registrationForm.get("user.mobile"),i.isNumberChanged)),x(),B(i.isOtpVerified?12:11),x(2),B(i.isNumberChanged||i.isOtpVerified?13:-1),x(),B(i.isOtpSent&&!i.isOtpVerified?14:-1),x(2),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(45,XG,i.registrationForm.get("user.password"))),x(),te("ngTemplateOutlet",s)("ngTemplateOutletContext",qt(47,JG,i.registrationForm.get("user.confirmPassword"))),x(),st("color",i.primaryColor||null),x(4),B(i.showCompanyDetail?22:-1),x(3),B((o=ot(26,34,i.apiError))?25:-1,o),x(2),st("--btn-hover-color",i.buttonHoverColor)("background-color",i.buttonColor||null)("color",i.buttonColor?i.buttonTextColor||"#ffffff":null)("border-radius",i.borderRadiusValue||null),We("has-hover-color",!!i.buttonHoverColor)}},dependencies:[wn,Da,nr,$n,er,tr,Cx,Oa,Rn,hr,Ud,Zi],styles:['@charset "UTF-8";[_nghost-%COMP%]{width:100%;min-height:100px;display:flex;flex-direction:column;justify-content:flex-start;text-align:start}.has-hover-color[_ngcontent-%COMP%]:hover{background-color:var(--btn-hover-color)!important}[_nghost-%COMP%] .iti{width:100%}[_nghost-%COMP%] .iti input[type=tel]{padding-left:52px!important}.invalid-input[_ngcontent-%COMP%]{outline:2px solid var(--proxy-error-40);outline-offset:-1px}.dark[_nghost-%COMP%] .iti .iti__country-list, .dark [_nghost-%COMP%] .iti .iti__country-list{background-color:#1f2937;border-color:#374151;color:#f9fafb}.dark[_nghost-%COMP%] .iti__country, .dark [_nghost-%COMP%] .iti__country{color:#f9fafb!important}.dark[_nghost-%COMP%] .iti__country:hover, .dark [_nghost-%COMP%] .iti__country:hover, .dark[_nghost-%COMP%] .iti__country.iti__highlight, .dark [_nghost-%COMP%] .iti__country.iti__highlight{background-color:#312e81!important}.dark[_nghost-%COMP%] .iti__dial-code, .dark [_nghost-%COMP%] .iti__dial-code{color:#9ca3af}.dark[_nghost-%COMP%] .iti__divider, .dark [_nghost-%COMP%] .iti__divider{border-bottom-color:#374151}.dark[_nghost-%COMP%] .iti__selected-flag:hover, .dark [_nghost-%COMP%] .iti__selected-flag:hover, .dark[_nghost-%COMP%] .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag, .dark [_nghost-%COMP%] .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#ffffff14}.dark[_nghost-%COMP%] input[type=tel], .dark [_nghost-%COMP%] input[type=tel]{color:#f9fafb;background-color:transparent}'],changeDetection:0})}}return e})();var Wq=["initContact"],Zq=["dialogWrap"],Ol=e=>({widgetDataArray:e}),Bd=(e,n)=>n.service_id;function Kq(e,n){if(e&1){let t=be();g(0,"section",7)(1,"h1"),E(2),m(),g(3,"button",9),J("click",function(){W(t);let i=k();return Z(i.openPreviewDialog())}),ue(),g(4,"svg",10),Q(5,"path",11)(6,"path",12),m(),E(7," Preview "),m()()}if(e&2){let t=k();x(2),Ce("Click Here to preview this Reference ID: ",t.referenceId())}}function Yq(e,n){if(e&1){let t=be();g(0,"button",16),J("click",function(){W(t);let i=k(2);return Z(i.close(!0))}),ue(),g(1,"svg",17),Q(2,"path",18),m()()}if(e&2){let t=k(2);x(2),lt("fill",t.isDarkTheme?"#ffffff":"#5D6164")}}function Qq(e,n){e&1&&St(0)}function Xq(e,n){if(e&1&&(U(0,Yq,3,1,"button",13),g(1,"div",14),Gt(2,Qq,1,0,"ng-container",15),m()),e&2){let t=k(),r=mt(3);B(t.hideInlineHeader()?-1:0),x(2),te("ngTemplateOutlet",r)}}function Jq(e,n){if(e&1&&(g(0,"div",22),Q(1,"img",23),m()),e&2){let t=k();x(),te("src",t.ui_preferences.logo_url,Cc)}}function eW(e,n){if(e&1&&U(0,Jq,2,1,"div",22),e&2){let t=n;B(!(t==null||t.ui_preferences==null)&&t.ui_preferences.logo_url?0:-1)}}function tW(e,n){if(e&1&&(U(0,eW,1,1),tt(1,"async"),g(2,"h2",21),E(3),m()),e&2){let t,r=k(4);B((t=ot(1,4,r.selectWidgetTheme$))?0:-1,t),x(2),st("color",r.primaryColor||null),x(),Ce(" ",r.titleText," ")}}function nW(e,n){if(e&1&&U(0,tW,4,6),e&2){let t=n.$implicit,r=k(3);B((t==null?null:t.service_id)===r.featureServiceIds.PasswordAuthentication&&r.version()==="v2"&&r.loginStep===1?0:-1)}}function rW(e,n){e&1&&St(0)}function iW(e,n){e&1&&St(0)}function oW(e,n){e&1&&St(0)}function aW(e,n){if(e&1&&Gt(0,rW,1,0,"ng-container",24)(1,iW,1,0,"ng-container",24)(2,oW,1,0,"ng-container",24),e&2){let t=k();k(2);let r=mt(8),i=mt(10),o=mt(12);te("ngTemplateOutlet",i)("ngTemplateOutletContext",qt(6,Ol,t)),x(),te("ngTemplateOutlet",r)("ngTemplateOutletContext",qt(8,Ol,t)),x(),te("ngTemplateOutlet",o)("ngTemplateOutletContext",qt(10,Ol,t))}}function sW(e,n){e&1&&St(0)}function lW(e,n){e&1&&St(0)}function cW(e,n){e&1&&St(0)}function dW(e,n){if(e&1&&Gt(0,sW,1,0,"ng-container",24)(1,lW,1,0,"ng-container",24)(2,cW,1,0,"ng-container",24),e&2){let t=k();k(2);let r=mt(8),i=mt(10),o=mt(12);te("ngTemplateOutlet",o)("ngTemplateOutletContext",qt(6,Ol,t)),x(),te("ngTemplateOutlet",r)("ngTemplateOutletContext",qt(8,Ol,t)),x(),te("ngTemplateOutlet",i)("ngTemplateOutletContext",qt(10,Ol,t))}}function uW(e,n){if(e&1){let t=be();g(0,"p",25),E(1," Are you a new User? "),g(2,"a",26),J("click",function(){W(t);let i=k(3);return Z(i.showRegistration())}),E(3),m()()}if(e&2){let t=k(3);st("color",t.primaryColor||null),x(3),_t(t.signUpButtonText)}}function pW(e,n){e&1&&(g(0,"p",20),E(1,"No Service Enabled"),m())}function fW(e,n){if(e&1&&(Rt(0,nW,1,1,null,null,Bd),U(2,aW,3,12),U(3,dW,3,12),U(4,uW,4,3,"p",19),U(5,pW,2,0,"p",20)),e&2){let t=n,r=k(2);Pt(t),x(2),B(r.input_fields()==="top"?2:-1),x(),B(r.input_fields()==="bottom"?3:-1),x(),B(r.loginStep===1&&(t!=null&&t.length)&&r.isCreateAccountLink()?4:-1),x(),B(t!=null&&t.length?-1:5)}}function hW(e,n){if(e&1&&(U(0,fW,6,4),tt(1,"async")),e&2){let t,r=k();B((t=ot(1,1,r.selectWidgetData$))?0:-1,t)}}function gW(e,n){if(e&1){let t=be();g(0,"button",38),J("click",function(){W(t);let i=k(2);return Z(i.showRegistrationInDialog()?i.goBackFromRegistration():i.changeLoginStep(1))}),ue(),g(1,"svg",39),Q(2,"path",40),m()()}}function mW(e,n){e&1&&Q(0,"div",31)}function _W(e,n){e&1&&E(0," Create Account ")}function vW(e,n){e&1&&E(0," Forgot Password ")}function yW(e,n){e&1&&E(0," Sign In ")}function xW(e,n){e&1&&St(0)}function bW(e,n){if(e&1&&(g(0,"div",36),Gt(1,xW,1,0,"ng-container",15),m()),e&2){k(2);let t=mt(3);x(),te("ngTemplateOutlet",t)}}function wW(e,n){if(e&1){let t=be();g(0,"proxy-register",41),J("successReturn",function(i){W(t);let o=k(2);return Z(o.successReturn.emit(i))})("failureReturn",function(i){W(t);let o=k(2);return Z(o.failureReturn.emit(i))})("closePopUp",function(){W(t);let i=k(2);return Z(i.goBackFromRegistration())}),m()}if(e&2){let t=k(2);te("serviceData",t.serviceData())("referenceId",t.referenceId())("tokenAuth",t.tokenAuth())("theme",t.theme())("version",t.version())("isInDialog",!0)}}function CW(e,n){if(e&1){let t=be();g(0,"div",null,5)(2,"div",27),J("click",function(){W(t);let i=k();return Z(i.closePreviewDialog())}),m(),g(3,"div",28)(4,"div",29),U(5,gW,3,0,"button",30)(6,mW,1,0,"div",31),g(7,"h2",32),U(8,_W,1,0)(9,vW,1,0)(10,yW,1,0),m(),g(11,"button",33),J("click",function(){W(t);let i=k();return Z(i.closePreviewDialog())}),ue(),g(12,"svg",17),Q(13,"path",34),m()()(),Ye(),g(14,"div",35),U(15,bW,2,1,"div",36),U(16,wW,1,6,"proxy-register",37),m()()()}if(e&2){let t=k();We("dark",t.isDarkTheme),x(3),Ea("fixed inset-x-4 top-1/2 z-50 -translate-y-1/2 sm:inset-x-auto sm:left-1/2 sm:w-full sm:-translate-x-1/2 rounded-xl bg-white dark:bg-gray-900 shadow-2xl ring-1 ring-gray-900/5 dark:ring-white/10 flex flex-col max-h-[90vh] "+(t.showRegistrationInDialog()?"sm:max-w-md":"sm:max-w-sm")),x(2),B(t.showRegistrationInDialog()||t.loginStep===2||t.loginStep===3?5:6),x(3),B(t.showRegistrationInDialog()?8:t.loginStep===2||t.loginStep===3?9:10),x(7),B(t.showRegistrationInDialog()?-1:15),x(),B(t.showRegistrationInDialog()?16:-1)}}function EW(e,n){e&1&&(ue(),g(0,"svg",42),Q(1,"path",43),m())}function DW(e,n){e&1&&(ue(),g(0,"svg",42),Q(1,"path",44),m())}function SW(e,n){if(e&1&&U(0,EW,2,0,":svg:svg",42)(1,DW,2,0,":svg:svg",42),e&2){let t=k();B(t.showPassword?1:0)}}function kW(e,n){if(e&1&&(g(0,"div",45),Q(1,"div",46),g(2,"span",47),E(3,"Or continue with"),m(),Q(4,"div",46),m()),e&2){let t=k(4);x(2),st("color",t.primaryColor||null)}}function TW(e,n){if(e&1&&U(0,kW,5,2,"div",45),e&2){let t=k(2).widgetDataArray,r=k();B(r.hasOtherAuthOptions(t)?0:-1)}}function IW(e,n){if(e&1&&U(0,TW,1,1),e&2){let t=n.$implicit,r=k(2);B((t==null?null:t.service_id)===r.featureServiceIds.PasswordAuthentication&&r.version()==="v2"&&r.loginStep===1?0:-1)}}function AW(e,n){if(e&1&&Rt(0,IW,1,1,null,null,Bd),e&2){let t=n.widgetDataArray;Pt(t)}}function MW(e,n){e&1&&(g(0,"p",63),E(1," Email or Mobile number is required. "),m())}function RW(e,n){if(e&1&&(g(0,"div")(1,"label",59),E(2,"Email or Mobile"),m(),Q(3,"input",60),g(4,"p",61)(5,"span",62),E(6,"Note:"),m(),E(7," Enter Mobile number with country code (e.g. 91) "),m(),U(8,MW,2,0,"p",63),m()),e&2){let t=n,r=k(5);x(3),st("border-radius",r.borderRadiusValue||null),te("formControl",t),x(),st("color",r.primaryColor||null),x(4),B(t.touched&&(t.errors!=null&&t.errors.required)?8:-1)}}function PW(e,n){e&1&&(g(0,"p",69),E(1," Password is required. "),m())}function OW(e,n){e&1&&(g(0,"p",70),E(1,"Whitespace not allowed."),m())}function NW(e,n){if(e&1){let t=be();g(0,"div")(1,"label",64),E(2,"Password"),m(),g(3,"div",65),Q(4,"input",66),g(5,"button",67),J("click",function(){W(t);let i=k(5);return Z(i.showPassword=!i.showPassword)}),St(6,68),m()(),U(7,PW,2,0,"p",69),U(8,OW,2,0,"p",70),m()}if(e&2){let t=n,r=k(5),i=mt(6);x(4),st("border-radius",r.borderRadiusValue||null),te("type",r.showPassword?"text":"password")("formControl",t),x(),lt("aria-label",r.showPassword?"Hide password":"Show password"),x(),te("ngTemplateOutlet",i),x(),B(t.touched&&(t.errors!=null&&t.errors.required)?7:-1),x(),B(t.touched&&(t.errors!=null&&t.errors.cannotContainSpace)?8:-1)}}function FW(e,n){if(e&1){let t=be();g(0,"ng-hcaptcha",71,6),J("verify",function(i){W(t);let o=k(5);return Z(o.onHCaptchaVerify(i))})("expired",function(){W(t);let i=k(5);return Z(i.onHCaptchaExpired())})("error",function(i){W(t);let o=k(5);return Z(o.onHCaptchaError(i))}),m()}}function LW(e,n){if(e&1){let t=be();g(0,"ng-hcaptcha",72,6),J("verify",function(i){W(t);let o=k(5);return Z(o.onHCaptchaVerify(i))})("expired",function(){W(t);let i=k(5);return Z(i.onHCaptchaExpired())})("error",function(i){W(t);let o=k(5);return Z(o.onHCaptchaError(i))}),m()}}function jW(e,n){if(e&1&&(g(0,"p",53),E(1),m()),e&2){let t=k(5);x(),_t(t.loginError)}}function VW(e,n){e&1&&(ue(),g(0,"svg",58),Q(1,"circle",73)(2,"path",74),m())}function UW(e,n){if(e&1){let t=be();g(0,"div",48),U(1,RW,9,6,"div"),U(2,NW,9,8,"div"),g(3,"div",50),U(4,FW,2,0,"ng-hcaptcha",51),U(5,LW,2,0,"ng-hcaptcha",52),m(),U(6,jW,2,1,"p",53),g(7,"div",54)(8,"p",55)(9,"a",56),J("click",function(){W(t);let i=k(4);return Z(i.forgotPassword())}),E(10,"Forgot Password?"),m()(),g(11,"button",57),tt(12,"async"),J("click",function(){W(t);let i=k(4);return Z(i.login())}),U(13,VW,3,0,":svg:svg",58),tt(14,"async"),E(15," Sign in "),m()()()}if(e&2){let t,r,i=k(4);te("formGroup",i.loginForm),x(),B((t=i.loginForm.get("username"))?1:-1,t),x(),B((r=i.loginForm.get("password"))?2:-1,r),x(2),B(i.isDarkTheme?4:-1),x(),B(i.isDarkTheme?-1:5),x(),B(i.loginError?6:-1),x(5),st("--btn-hover-color",i.buttonHoverColor)("background-color",i.buttonColor||null)("color",i.buttonColor?i.buttonTextColor||"#ffffff":null)("border-radius",i.borderRadiusValue||null),We("has-hover-color",!!i.buttonHoverColor),te("disabled",ot(12,18,i.isLoginLoading$)),x(2),B(ot(14,20,i.isLoginLoading$)?13:-1)}}function BW(e,n){if(e&1&&(g(0,"h2",79),E(1," Reset Password "),m()),e&2){let t=k(5);st("color",t.primaryColor||null)}}function $W(e,n){e&1&&(g(0,"p",78),E(1," Email or Mobile is required. "),m())}function zW(e,n){e&1&&(g(0,"p",70),E(1,"Enter a valid Email or Mobile."),m())}function HW(e,n){if(e&1&&(g(0,"p",53),E(1),m()),e&2){let t=k(5);x(),_t(t.loginError)}}function GW(e,n){e&1&&(ue(),g(0,"svg",58),Q(1,"circle",73)(2,"path",74),m())}function qW(e,n){if(e&1){let t=be();g(0,"div",48),U(1,BW,2,2,"h2",75),g(2,"div")(3,"label",76),E(4,"Email or Mobile"),m(),Q(5,"input",77),U(6,$W,2,0,"p",78),U(7,zW,2,0,"p",70),m(),U(8,HW,2,1,"p",53),g(9,"button",57),tt(10,"async"),J("click",function(){W(t);let i=k(4);return Z(i.sendResetPasswordOtp())}),U(11,GW,3,0,":svg:svg",58),tt(12,"async"),E(13," Send OTP "),m()()}if(e&2){let t,r,i=k(4);We("p-4",i.hideInlineHeader()),te("formGroup",i.sendOtpLoginForm),x(),B(i.hideInlineHeader()?-1:1),x(4),st("border-radius",i.borderRadiusValue||null),x(),B((t=i.sendOtpLoginForm.get("userDetails"))!=null&&t.touched&&(!((t=i.sendOtpLoginForm.get("userDetails"))==null||t.errors==null)&&t.errors.required)?6:-1),x(),B((r=i.sendOtpLoginForm.get("userDetails"))!=null&&r.touched&&(!((r=i.sendOtpLoginForm.get("userDetails"))==null||r.errors==null)&&r.errors.pattern)?7:-1),x(),B(i.loginError?8:-1),x(),st("--btn-hover-color",i.buttonHoverColor)("background-color",i.buttonColor||null)("color",i.buttonColor?i.buttonTextColor||"#ffffff":null)("border-radius",i.borderRadiusValue||null),We("has-hover-color",!!i.buttonHoverColor),te("disabled",ot(10,21,i.isLoginLoading$)),x(2),B(ot(12,23,i.isLoginLoading$)?11:-1)}}function WW(e,n){if(e&1&&(g(0,"span",83),E(1),m()),e&2){let t=k(5);x(),Ce("(",t.remainingSeconds,"s)")}}function ZW(e,n){e&1&&(g(0,"p",86),E(1," OTP is required. "),m())}function KW(e,n){e&1&&(g(0,"p",89),E(1," Password is required. "),m())}function YW(e,n){if(e&1&&(g(0,"p",70),E(1),m()),e&2){let t=n;x(),Ce(" Min required length is ",t==null?null:t.requiredLength,". ")}}function QW(e,n){e&1&&(g(0,"p",70),E(1," Must contain uppercase, lowercase, digit and symbol. "),m())}function XW(e,n){if(e&1){let t=be();g(0,"div")(1,"label",87),E(2,"Password"),m(),g(3,"div",65),Q(4,"input",88),g(5,"button",67),J("click",function(){W(t);let i=k(5);return Z(i.showPassword=!i.showPassword)}),St(6,68),m()(),U(7,KW,2,0,"p",89),U(8,YW,2,1,"p",70),U(9,QW,2,0,"p",70),m()}if(e&2){let t,r=n,i=k(5),o=mt(6);x(4),st("border-radius",i.borderRadiusValue||null),te("type",i.showPassword?"text":"password")("formControl",r),x(),lt("aria-label",i.showPassword?"Hide password":"Show password"),x(),te("ngTemplateOutlet",o),x(),B(r.touched&&(r.errors!=null&&r.errors.required)?7:-1),x(),B((t=r.touched&&(r.errors==null?null:r.errors.minlength))?8:-1,t),x(),B(r.touched&&(r.errors!=null&&r.errors.pattern)?9:-1)}}function JW(e,n){e&1&&(g(0,"p",92),E(1," Confirm Password is required. "),m())}function eZ(e,n){if(e&1&&(g(0,"p",70),E(1),m()),e&2){let t=n;x(),Ce(" Min required length is ",t==null?null:t.requiredLength,". ")}}function tZ(e,n){e&1&&(g(0,"p",70),E(1," Must contain uppercase, lowercase, digit and symbol. "),m())}function nZ(e,n){e&1&&(g(0,"p",70),E(1,"Passwords do not match."),m())}function rZ(e,n){if(e&1&&(g(0,"div")(1,"label",90),E(2,"Confirm Password"),m(),Q(3,"input",91),U(4,JW,2,0,"p",92),U(5,eZ,2,1,"p",70),U(6,tZ,2,0,"p",70),U(7,nZ,2,0,"p",70),m()),e&2){let t,r=n,i=k(5);x(3),st("border-radius",i.borderRadiusValue||null),te("formControl",r),x(),B(r.touched&&(r.errors!=null&&r.errors.required)?4:-1),x(),B((t=r.touched&&(r.errors==null?null:r.errors.minlength))?5:-1,t),x(),B(r.touched&&(r.errors!=null&&r.errors.pattern)?6:-1),x(),B(r.touched&&(r.errors!=null&&r.errors.valueSameAsControl)?7:-1)}}function iZ(e,n){if(e&1&&(g(0,"p",53),E(1),m()),e&2){let t=k(5);x(),_t(t.loginError)}}function oZ(e,n){e&1&&(ue(),g(0,"svg",58),Q(1,"circle",73)(2,"path",74),m())}function aZ(e,n){if(e&1){let t=be();g(0,"div",48)(1,"h2",79),E(2," Change Password "),m(),g(3,"p",80),E(4),g(5,"a",81),J("click",function(){W(t);let i=k(4);return Z(i.changeLoginStep(2))}),E(6,"Change"),m()(),g(7,"button",82),J("click",function(){W(t);let i=k(4);return Z(i.sendResetPasswordOtp())}),E(8," Resend OTP "),U(9,WW,2,1,"span",83),m(),g(10,"div")(11,"label",84),E(12,"OTP"),m(),Q(13,"input",85),U(14,ZW,2,0,"p",86),m(),U(15,XW,10,9,"div"),U(16,rZ,8,7,"div"),U(17,iZ,2,1,"p",53),g(18,"button",57),tt(19,"async"),J("click",function(){W(t);let i=k(4);return Z(i.verifyResetPasswordOtp())}),U(20,oZ,3,0,":svg:svg",58),tt(21,"async"),E(22," Submit "),m()()}if(e&2){let t,r,i,o,a=k(4);te("formGroup",a.resetPasswordForm),x(),st("color",a.primaryColor||null),x(3),Ce(" ",(t=a.sendOtpLoginForm.get("userDetails"))==null?null:t.value," "),x(3),te("disabled",a.remainingSeconds>0),x(2),B(a.remainingSeconds>0?9:-1),x(4),st("border-radius",a.borderRadiusValue||null),x(),B((r=a.resetPasswordForm.get("otp"))!=null&&r.touched&&(!((r=a.resetPasswordForm.get("otp"))==null||r.errors==null)&&r.errors.required)?14:-1),x(),B((i=a.resetPasswordForm.get("password"))?15:-1,i),x(),B((o=a.resetPasswordForm.get("confirmPassword"))?16:-1,o),x(),B(a.loginError?17:-1),x(),st("--btn-hover-color",a.buttonHoverColor)("background-color",a.buttonColor||null)("color",a.buttonColor?a.buttonTextColor||"#ffffff":null)("border-radius",a.borderRadiusValue||null),We("has-hover-color",!!a.buttonHoverColor),te("disabled",ot(19,24,a.isLoginLoading$)),x(2),B(ot(21,26,a.isLoginLoading$)?20:-1)}}function sZ(e,n){if(e&1&&(U(0,UW,16,22,"div",48),U(1,qW,14,25,"div",49),U(2,aZ,23,28,"div",48)),e&2){let t=k(3);B(t.loginStep===1?0:-1),x(),B(t.loginStep===2?1:-1),x(),B(t.loginStep===3?2:-1)}}function lZ(e,n){if(e&1&&U(0,sZ,3,3),e&2){let t=n.$implicit,r=k(2);B((t==null?null:t.service_id)===r.featureServiceIds.PasswordAuthentication&&r.version()==="v2"?0:-1)}}function cZ(e,n){if(e&1&&Rt(0,lZ,1,1,null,null,Bd),e&2){let t=n.widgetDataArray;Pt(t)}}function dZ(e,n){if(e&1){let t=be();g(0,"button",96),J("click",function(){W(t);let i=k(2).$implicit,o=k(4);return Z(o.onVerificationBtnClick(i))}),Q(1,"img",97),m()}if(e&2){let t,r=k(2).$implicit,i=k(4);st("border-radius",i.borderRadiusValue||null),lt("aria-label",r.text),x(),We("invert",i.isDarkTheme&&(r.text==null||(t=r.text.toLowerCase())==null?null:t.includes("apple"))),te("src",r.icon,Cc)("alt",r.text)}}function uZ(e,n){if(e&1&&(U(0,dZ,2,7,"button",95),tt(1,"async")),e&2){let t=k().$implicit,r=k(4);B((t==null?null:t.service_id)!==r.featureServiceIds.Msg91OtpService||!ot(1,1,r.otpScriptLoading)?0:-1)}}function pZ(e,n){if(e&1&&U(0,uZ,2,3),e&2){let t=n.$implicit,r=k(4);B((t==null?null:t.service_id)!==r.featureServiceIds.PasswordAuthentication||(t==null?null:t.service_id)===r.featureServiceIds.PasswordAuthentication&&r.version()==="v1"?0:-1)}}function fZ(e,n){if(e&1&&(g(0,"div",93),Rt(1,pZ,1,1,null,null,Bd),m()),e&2){let t=k(2).widgetDataArray;x(),Pt(t)}}function hZ(e,n){if(e&1){let t=be();g(0,"button",99),J("click",function(){W(t);let i=k(2).$implicit,o=k(4);return Z(o.onVerificationBtnClick(i))}),Q(1,"img",100),g(2,"span",101),E(3),m()()}if(e&2){let t,r=k(2).$implicit,i=k(4);st("border-radius",i.borderRadiusValue||null),x(),We("invert",i.isDarkTheme&&(r.text==null||(t=r.text.toLowerCase())==null?null:t.includes("apple"))),te("src",r.icon,Cc)("alt",r.text),x(2),_t(r.text)}}function gZ(e,n){if(e&1&&(U(0,hZ,4,7,"button",98),tt(1,"async")),e&2){let t=k().$implicit,r=k(4);B((t==null?null:t.service_id)!==r.featureServiceIds.Msg91OtpService||!ot(1,1,r.otpScriptLoading)?0:-1)}}function mZ(e,n){if(e&1&&U(0,gZ,2,3),e&2){let t=n.$implicit,r=k(4);B((t==null?null:t.service_id)!==r.featureServiceIds.PasswordAuthentication||(t==null?null:t.service_id)===r.featureServiceIds.PasswordAuthentication&&r.version()==="v1"?0:-1)}}function _Z(e,n){if(e&1&&(g(0,"div",94),Rt(1,mZ,1,1,null,null,Bd),m()),e&2){let t=k(2).widgetDataArray;x(),Pt(t)}}function vZ(e,n){if(e&1&&(U(0,fZ,3,0,"div",93),U(1,_Z,3,0,"div",94)),e&2){let t=k(2);B(t.show_social_login_icons()?0:-1),x(),B(t.show_social_login_icons()?-1:1)}}function yZ(e,n){if(e&1&&U(0,vZ,2,2),e&2){let t=k();B(t.loginStep===1?0:-1)}}var L4=(()=>{class e extends Kn{get isDarkTheme(){return this.themeService.isDark(this.theme())}constructor(){super(),this.referenceId=Se(),this.serviceData=Se(),this.tokenAuth=Se(),this.target=Se(),this.version=Se(zn.V1),this.input_fields=Se(Pl.TOP),this.show_social_login_icons=Se(!1),this.isCreateAccountLink=Se(),this.theme=Se(),this.WidgetTheme=xt,this.isUserProxyContainer=Se(!0),this.hideInlineHeader=Se(!1),this.togglePopUp=pn(),this.successReturn=pn(),this.failureReturn=pn(),this.openPopUp=pn(),this.closePopUp=pn(),this.themeService=A(Sn),this.steps=1,this.phoneForm=new Lt({phone:new je("",[he.required])}),this.otpControl=new je(void 0,[he.required,he.pattern(Wh)]),this.emailControl=new je("",[he.required,he.pattern(Va)]),this.otpWidgetService=A(ml),this.otpScriptLoading=this.otpWidgetService.scriptLoading,this.timerSec=25,this.retryDisable=fe(!1),this.retryCount=0,this.sendOTPMode="1",this.otpPlaceHolder="\u2022",this.retryByVoiceClicked=!1,this.retryProcesses=[],this.otpErrorCodes=y1,this.featureServiceIds=zt,this.showPassword=!1,this.loginStep=1,this.loginForm=new Lt({username:new je(null,[he.required]),password:new je(null,[he.required,xi.cannotContainSpace])}),this.sendOtpLoginForm=new Lt({userDetails:new je(null,[he.required,he.pattern(Zh)])}),this.resetPasswordForm=new Lt({otp:new je(null,he.required),password:new je(null,[he.required,he.pattern(oo),he.minLength(8)]),confirmPassword:new je(null,[he.required,he.minLength(8),he.pattern(oo),xi.valueSameAsControl("password")])}),this.loginError=null,this.apiError=new dt(null),this.hCaptchaToken="",this.hCaptchaVerified=!1,this.uiPreferences={},this.dialogOpen=et(!1),this.showRegistrationInDialog=et(!1),this.dialogPortalRef=null,this.store=A(dn),this.cdr=A(cn),this._elemRef=A(An),this.loginComponentStore=A(Rl),this.otpUtilityService=A(Nr),this.widgetPortal=A(vi),sn(()=>this.themeService.setInputTheme(this.theme())),this.errors$=this.store.pipe(ke(o4),Ie(Le),ce(this.destroy$)),this.selectGetOtpInProcess$=this.store.pipe(ke(Ml),Ie(Le),ce(this.destroy$)),this.selectGetOtpSuccess$=this.store.pipe(ke(ug),Ie(Le),ce(this.destroy$)),this.selectResendOtpInProcess$=this.store.pipe(ke(pg),Ie(Le),ce(this.destroy$)),this.selectResendOtpSuccess$=this.store.pipe(ke(c4),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpData$=this.store.pipe(ke(d4),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpInProcess$=this.store.pipe(ke(fg),Ie(Le),ce(this.destroy$)),this.selectVerifyOtpSuccess$=this.store.pipe(ke(u4),Ie(Le),ce(this.destroy$)),this.selectResendCount$=this.store.pipe(ke(p4),Ie(Le),ce(this.destroy$)),this.selectGetOtpRes$=this.store.pipe(ke(dg),Ie(Le),ce(this.destroy$)),this.selectApiErrorResponse$=this.store.pipe(ke(hg),Ie(Le),ce(this.destroy$)),this.closeWidgetApiFailed$=this.store.pipe(ke(f4),Ie(Le),ce(this.destroy$)),this.selectWidgetData$=this.store.pipe(ke(qa),ce(this.destroy$)),this.selectWidgetTheme$=this.store.pipe(ke(Wa),ce(this.destroy$)),this.isLoginLoading$=this.loginComponentStore.isLoading$,this.otpData$=this.loginComponentStore.otpdata$,this.resetPasswordResult$=this.loginComponentStore.resetPassword$}ngOnInit(){this.selectGetOtpSuccess$.subscribe(t=>{t&&(this.steps=2,this.localSecTimer(),this.store.dispatch(so({request:{getOtpSuccess:!1,errors:null}})))}),this.selectResendOtpSuccess$.subscribe(t=>{t&&(this.localSecTimer(),this.store.dispatch(so({request:{resendOtpSuccess:!1,errors:null}})))}),this.selectVerifyOtpSuccess$.subscribe(t=>{if(t){let r=this.verifyOtpData();r&&this.returnSuccess(r)}}),this.selectApiErrorResponse$.subscribe(t=>{t&&(this.returnFailure(t),this.store.dispatch(so({request:{apiErrorResponse:null}})))}),this.closeWidgetApiFailed$.pipe(go(700)).subscribe(t=>{t&&this.close()}),this.selectGetOtpRes$.subscribe(t=>{this.otpRes=t}),this.selectWidgetData$.pipe(ce(this.destroy$)).subscribe(t=>{if(t&&t.length>0){let r=t.find(i=>i.service_id===zt.PasswordAuthentication);r&&(this.state=r.state)}}),this.loginComponentStore.apiError$.pipe(ce(this.destroy$)).subscribe(t=>{this.apiError.next(t),this.loginError=t,t&&this.resetHCaptcha()}),this.loginComponentStore.showRegistration$.pipe(Je(Boolean),ce(this.destroy$)).subscribe(t=>{if(t){let r=this.loginForm.get("username").value;this.showRegistration(r)}}),this.otpData$.pipe(ce(this.destroy$)).subscribe(t=>{t&&(this.changeLoginStep(3),this.startResetPasswordTimer())}),this.resetPasswordResult$.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.changeLoginStep(1)}),this.resetPasswordForm.get("password").valueChanges.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.resetPasswordForm.get("confirmPassword").updateValueAndValidity()}),this.selectWidgetTheme$.pipe(Je(Boolean),ce(this.destroy$)).subscribe(t=>{this.uiPreferences=t?.ui_preferences||{}}),this.otpWidgetService.forgotPasswordMode.pipe(ce(this.destroy$)).subscribe(t=>{t.active&&(this.changeLoginStep(2),t.prefillEmail&&this.sendOtpLoginForm.get("userDetails").setValue(t.prefillEmail),this.otpWidgetService.closeForgotPassword())})}ngAfterViewInit(){this.initIntl()}initIntl(){let t=document.querySelector("proxy-auth")?.shadowRoot,r=document.querySelector("proxy-auth")?.shadowRoot?.getElementById("init-contact"),i=`${ft.baseUrl}/${ft.production?"app":"hello-new"}/assets/utils/intl-tel-input-custom.css`;r&&(this.intlClass=new vl(r,t,i),r.addEventListener("focus",()=>{setTimeout(()=>{this.displayEnterNumber()},100)}),r.addEventListener("countrychange",()=>{this.displayEnterNumber()}))}displayEnterNumber(){this.displayMobileNumber=this.intlClass.phoneNumber.includes("+")?this.intlClass.phoneNumber:`+${this.intlClass.selectedCountryData?.dialCode}${this.intlClass.phoneNumber}`}sendOtp(){this.mobileNumber=this.intlClass.phoneNumber?.slice(1,this.intlClass.phoneNumber.length),this.store.dispatch(Ho({request:{referenceId:this.referenceId(),mobile:this.mobileNumber}}))}retryOtp(t=null){this.retryCount<2&&(this.retryCount+=1,this.store.dispatch(Od({request:{tokenAuth:this.tokenAuth(),referenceId:this.referenceId(),reqId:this.otpRes.reqId,retryChannel:t}})))}verifyOtp(){this.store.dispatch(Nd({request:{tokenAuth:this.tokenAuth(),otp:this.otpControl.value,referenceId:this.referenceId(),reqId:this.otpRes.reqId}})),this.selectApiErrorResponse$.pipe(ia(1),Tt(1)).subscribe(t=>{t&&(this.invalidOtpError=t.message,this.cdr.detectChanges())})}close(t=!1){document.getElementById(_l)?.remove(),this.isUserProxyContainer()&&this.resetStore(),this.togglePopUp.emit(),this.timeRemain=0,t&&this.failureReturn.emit({code:0,closeByUser:t,message:"User cancelled the verification process."})}resetStore(){this.store.dispatch(Md())}returnSuccess(t){this.successReturn.emit(t),this.close()}returnFailure(t){this.failureReturn.emit(t)}verifyOtpData(){let t=null;return this.selectVerifyOtpData$.pipe(Tt(1)).subscribe(r=>{t=r}),t}localSecTimer(){this.retryDisable=fe(!0);let t=Xl(1e3,1e3);this.timerSubscription=t.pipe(ce(this.destroy$)).subscribe(r=>{this.timeRemain=this.timerSec-r,this.timeRemain===this.timerSec&&(this.retryDisable=fe(!1)),this.timeRemain===0&&this.destroyTimerSubscription(),this.cdr.detectChanges()})}destroyTimerSubscription(){this.timerSubscription.unsubscribe()}openLink(t){window.open(t,this.target())}onVerificationBtnClick(t){t?.urlLink?this.openLink(t?.urlLink):t?.service_id===zt.Msg91OtpService?this.otpWidgetService.openWidget():t?.service_id===zt.PasswordAuthentication&&(this.version()===zn.V2?this.login():this.otpWidgetService.openLogin(!0))}encryptPassword(t){return this.otpUtilityService.aesEncrypt(JSON.stringify(t),ft.uiEncodeKey,ft.uiIvKey,!0)}login(){if(this.loginForm.invalid){this.loginForm.markAllAsTouched();return}if(!this.hCaptchaVerified){this.loginError="Please complete the hCaptcha verification";return}this.loginError=null;let t=this.encryptPassword(this.loginForm.get("password").value),r={state:this.state,user:this.loginForm.get("username").value?.replace(/^\+/,""),password:t,hCaptchaToken:this.hCaptchaToken};this.loginComponentStore.loginData(r)}onHCaptchaVerify(t){this.hCaptchaToken=t,this.hCaptchaVerified=!0}onHCaptchaExpired(){this.hCaptchaToken="",this.hCaptchaVerified=!1}onHCaptchaError(t){this.hCaptchaToken="",this.hCaptchaVerified=!1,console.error("hCaptcha error:",t)}resetHCaptcha(){this.hCaptchaToken="",this.hCaptchaVerified=!1,this.hCaptchaComponent&&this.hCaptchaComponent.reset()}showRegistration(t){this.isUserProxyContainer()?this.showRegistrationInDialog.set(!0):this.openPopUp.emit(t||this.loginForm.get("username")?.value)}openPreviewDialog(){this.dialogOpen.set(!0),this.showRegistrationInDialog.set(!1),setTimeout(()=>{this.dialogWrapRef?.nativeElement&&(this.dialogPortalRef=this.widgetPortal.attach(this.dialogWrapRef.nativeElement))})}closePreviewDialog(){this.dialogPortalRef?.detach(),this.dialogPortalRef=null,this.dialogOpen.set(!1),this.showRegistrationInDialog.set(!1),this.changeLoginStep(1)}goBackFromRegistration(){this.showRegistrationInDialog.set(!1)}hasOtherAuthOptions(t){return t?t.some(r=>r?.service_id!==this.featureServiceIds.PasswordAuthentication):!1}forgotPassword(){this.changeLoginStep(2)}changeLoginStep(t){this.apiError.next(null),this.loginError=null,this.loginStep=t,this.resetHCaptcha()}sendResetPasswordOtp(){if(this.sendOtpLoginForm.invalid){this.sendOtpLoginForm.markAllAsTouched();return}let t={state:this.state,user:this.sendOtpLoginForm.get("userDetails").value};this.loginComponentStore.resetPassword(t)}verifyResetPasswordOtp(){if(this.resetPasswordForm.invalid){this.resetPasswordForm.markAllAsTouched();return}let t=this.encryptPassword(this.resetPasswordForm.get("password").value),r={state:this.state,user:this.sendOtpLoginForm.get("userDetails").value,password:t,otp:this.resetPasswordForm.get("otp").value};this.loginComponentStore.verfyPasswordOtp(r)}get titleText(){return this.version()===zn.V2&&this.uiPreferences?.title?this.uiPreferences.title:"Login"}get primaryColor(){return this.version()!==zn.V2?null:this.themeService.isDark()?this.uiPreferences?.dark_theme_primary_color||null:this.uiPreferences?.light_theme_primary_color||null}get borderRadiusValue(){if(this.version()!==zn.V2)return null;switch(this.uiPreferences?.border_radius){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";default:return null}}get buttonColor(){return this.version()!==zn.V2?null:this.uiPreferences?.button_color||null}get buttonHoverColor(){return this.version()!==zn.V2?null:this.uiPreferences?.button_hover_color||null}get buttonTextColor(){return this.version()!==zn.V2?null:this.uiPreferences?.button_text_color||null}get signUpButtonText(){return this.uiPreferences?.sign_up_button_text||"Create an account"}startResetPasswordTimer(){this.remainingSeconds=15,this.resetPasswordTimerSubscription=ra(1e3).subscribe(()=>{this.remainingSeconds>0?this.remainingSeconds--:this.resetPasswordTimerSubscription.unsubscribe()})}ngOnDestroy(){super.ngOnDestroy(),this.resetPasswordTimerSubscription&&this.resetPasswordTimerSubscription.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["authorization"]],viewQuery:function(r,i){if(r&1&&bn(Wq,5)(Ys,5)(Zq,5),r&2){let o;Ot(o=Nt())&&(i.initContact=o.first),Ot(o=Nt())&&(i.hCaptchaComponent=o.first),Ot(o=Nt())&&(i.dialogWrapRef=o.first)}},inputs:{referenceId:[1,"referenceId"],serviceData:[1,"serviceData"],tokenAuth:[1,"tokenAuth"],target:[1,"target"],version:[1,"version"],input_fields:[1,"input_fields"],show_social_login_icons:[1,"show_social_login_icons"],isCreateAccountLink:[1,"isCreateAccountLink"],theme:[1,"theme"],isUserProxyContainer:[1,"isUserProxyContainer"],hideInlineHeader:[1,"hideInlineHeader"]},outputs:{togglePopUp:"togglePopUp",successReturn:"successReturn",failureReturn:"failureReturn",openPopUp:"openPopUp",closePopUp:"closePopUp"},features:[Mn([Rl]),Dt],decls:13,vars:3,consts:[["authContentTemplate",""],["visibilityIcon",""],["orDividerTemplate",""],["loginFormTemplate",""],["socialButtonsOnlyTemplate",""],["dialogWrap",""],["hCaptcha",""],[1,"flex","flex-col","items-center","gap-4","p-5"],[3,"dark"],["type","button","aria-haspopup","dialog",1,"inline-flex","items-center","gap-2","rounded-lg","bg-indigo-600","px-4","py-2.5","text-sm","font-semibold","text-white","shadow-sm","hover:bg-indigo-500","active:bg-indigo-700","transition-colors","duration-150","cursor-pointer","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-4"],["d","M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z"],["fill-rule","evenodd","d","M.664 10.59a1.651 1.651 0 0 1 0-1.186A10.004 10.004 0 0 1 10 3c4.257 0 7.893 2.66 9.336 6.41.147.381.146.804 0 1.186A10.004 10.004 0 0 1 10 17c-4.257 0-7.893-2.66-9.336-6.41ZM14 10a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z","clip-rule","evenodd"],["type","button","aria-label","Close",1,"absolute","right-4","top-4","flex","size-5","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500"],[1,"flex","w-full","flex-col","gap-4"],[4,"ngTemplateOutlet"],["type","button","aria-label","Close",1,"absolute","right-4","top-4","flex","size-5","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["width","12","height","12","viewBox","0 0 12 12","fill","none","aria-hidden","true"],["d","M11.8334 1.34163L10.6584 0.166626L6.00008 4.82496L1.34175 0.166626L0.166748 1.34163L4.82508 5.99996L0.166748 10.6583L1.34175 11.8333L6.00008 7.17496L10.6584 11.8333L11.8334 10.6583L7.17508 5.99996L11.8334 1.34163Z"],[1,"mt-2","text-center","text-xs","text-gray-500","dark:text-gray-400",3,"color"],[1,"text-xs","text-gray-500","dark:text-gray-400"],[1,"text-base","font-semibold","text-gray-900","dark:text-white","mb-2"],[1,"flex","w-full","justify-center","mb-1"],["alt","Logo","loading","lazy",1,"max-h-12","max-w-[200px]","object-contain",3,"src"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"mt-2","text-center","text-xs","text-gray-500","dark:text-gray-400"],["href","javascript:void(0)",1,"font-medium","text-indigo-600","dark:text-indigo-400","hover:underline","cursor-pointer",3,"click"],["aria-hidden","true",1,"fixed","inset-0","z-40","bg-black/50","dark:bg-black/70","backdrop-blur-sm",3,"click"],["role","dialog","aria-modal","true","aria-labelledby","auth-dialog-title"],[1,"flex","items-center","justify-between","px-5","py-3","border-b","border-gray-200","dark:border-gray-700"],["type","button","aria-label","Back",1,"flex","size-7","items-center","justify-center","rounded-md","text-gray-500","dark:text-gray-400","hover:text-gray-700","dark:hover:text-gray-200","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500"],["aria-hidden","true",1,"size-7"],["id","auth-dialog-title",1,"text-sm","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close dialog",1,"flex","size-7","items-center","justify-center","rounded-md","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["d","M11.8334 1.34163L10.6584 0.166626L6.00008 4.82496L1.34175 0.166626L0.166748 1.34163L4.82508 5.99996L0.166748 10.6583L1.34175 11.8333L6.00008 7.17496L10.6584 11.8333L11.8334 10.6583L7.17508 5.99996L11.8334 1.34163Z","fill","currentColor"],[1,"flex-1","overflow-y-auto","min-h-0","px-5","py-5"],[1,"flex","flex-col","gap-4"],[3,"serviceData","referenceId","tokenAuth","theme","version","isInDialog"],["type","button","aria-label","Back",1,"flex","size-7","items-center","justify-center","rounded-md","text-gray-500","dark:text-gray-400","hover:text-gray-700","dark:hover:text-gray-200","cursor-pointer","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","18px","viewBox","0 -960 960 960","width","18px","fill","currentColor","aria-hidden","true"],["d","M400-80 0-480l400-400 71 71-329 329 329 329-71 71Z"],[3,"successReturn","failureReturn","closePopUp","serviceData","referenceId","tokenAuth","theme","version","isInDialog"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill","currentColor","aria-hidden","true",1,"size-5","text-gray-400","dark:text-gray-500"],["d","M12.01 20c-5.065 0-9.586-4.211-12.01-8.424 2.418-4.103 6.943-7.576 12.01-7.576 5.135 0 9.635 3.453 11.999 7.564-2.241 4.43-6.726 8.436-11.999 8.436zm-10.842-8.416c.843 1.331 5.018 7.416 10.842 7.416 6.305 0 10.112-6.103 10.851-7.405-.772-1.198-4.606-6.595-10.851-6.595-6.116 0-10.025 5.355-10.842 6.584zm10.832-4.584c2.76 0 5 2.24 5 5s-2.24 5-5 5-5-2.24-5-5 2.24-5 5-5zm0 1c2.208 0 4 1.792 4 4s-1.792 4-4 4-4-1.792-4-4 1.792-4 4-4z"],["d","M8.137 15.147c-.71-.857-1.146-1.947-1.146-3.147 0-2.76 2.241-5 5-5 1.201 0 2.291.435 3.148 1.145l1.897-1.897c-1.441-.738-3.122-1.248-5.035-1.248-6.115 0-10.025 5.355-10.842 6.584.529.834 2.379 3.527 5.113 5.428l1.865-1.865zm6.294-6.294c-.673-.53-1.515-.853-2.44-.853-2.207 0-4 1.792-4 4 0 .923.324 1.765.854 2.439l5.586-5.586zm7.56-6.146l-19.292 19.293-.708-.707 3.548-3.548c-2.298-1.612-4.234-3.885-5.548-6.169 2.418-4.103 6.943-7.576 12.01-7.576 2.065 0 4.021.566 5.782 1.501l3.501-3.501.707.707zm-2.465 3.879l-.734.734c2.236 1.619 3.628 3.604 4.061 4.274-.739 1.303-4.546 7.406-10.852 7.406-1.425 0-2.749-.368-3.951-.938l-.748.748c1.475.742 3.057 1.19 4.699 1.19 5.274 0 9.758-4.006 11.999-8.436-1.087-1.891-2.63-3.637-4.474-4.978zm-3.535 5.414c0-.554-.113-1.082-.317-1.562l.734-.734c.361.69.583 1.464.583 2.296 0 2.759-2.24 5-5 5-.832 0-1.604-.223-2.295-.583l.734-.735c.48.204 1.007.318 1.561.318 2.208 0 4-1.792 4-4z"],[1,"flex","items-center","gap-3","my-1"],[1,"flex-1","h-px","bg-gray-200","dark:bg-gray-700"],[1,"text-xs","font-medium","text-gray-400","dark:text-gray-500"],[1,"flex","flex-col","gap-3","w-full",3,"formGroup"],[1,"flex","flex-col","gap-3","w-full",3,"p-4","formGroup"],[1,"flex","w-full","justify-center"],["theme","dark","size","normal"],["theme","light","size","normal"],["role","alert",1,"text-xs","text-red-600","dark:text-red-400"],[1,"flex","flex-col","gap-3","mt-1"],[1,"text-right"],["href","javascript:void(0)",1,"w-link",3,"click"],["type","button",1,"inline-flex","w-full","items-center","justify-center","gap-2","rounded-lg","bg-indigo-600","px-4","py-2.5","text-sm","font-semibold","text-white","shadow-sm","hover:bg-indigo-500","active:bg-indigo-700","transition-colors","duration-150","disabled:opacity-50","disabled:cursor-not-allowed","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500","cursor-pointer",3,"click","disabled"],["viewBox","0 0 24 24","fill","none","aria-hidden","true",1,"size-4","animate-spin"],["for","login-username",1,"w-label"],["id","login-username","type","text","placeholder","Email or Mobile","autocomplete","off","aria-describedby","login-username-hint login-username-error",1,"w-input",3,"formControl"],["id","login-username-hint",1,"mt-1","text-xs","text-gray-400","dark:text-gray-500"],[1,"font-semibold"],["id","login-username-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["for","login-password",1,"w-label"],[1,"relative"],["id","login-password","placeholder","Password","autocomplete","off","aria-describedby","login-password-error",1,"w-input","pr-10",3,"type","formControl"],["type","button",1,"absolute","inset-y-0","right-0","flex","items-center","pr-3","cursor-pointer",3,"click"],[3,"ngTemplateOutlet"],["id","login-password-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["theme","dark","size","normal",3,"verify","expired","error"],["theme","light","size","normal",3,"verify","expired","error"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z",1,"opacity-75"],[1,"text-base","font-semibold","text-gray-900","dark:text-white","mb-1",3,"color"],["for","reset-user-details",1,"w-label"],["id","reset-user-details","type","text","placeholder","Enter Email or Mobile","autocomplete","off","formControlName","userDetails","aria-describedby","reset-user-details-error",1,"w-input"],["id","reset-user-details-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],[1,"text-base","font-semibold","text-gray-900","dark:text-white","mb-1"],[1,"text-sm","text-gray-600","dark:text-gray-400"],["href","javascript:void(0)",1,"w-link","ml-2",3,"click"],["type","button",1,"w-link","self-start",3,"click","disabled"],[1,"ml-1","text-gray-500","dark:text-gray-400"],["for","reset-otp",1,"w-label"],["id","reset-otp","type","number","placeholder","Enter OTP","autocomplete","off","formControlName","otp","aria-describedby","reset-otp-error",1,"w-input","[appearance:textfield]","[&::-webkit-outer-spin-button]:appearance-none","[&::-webkit-inner-spin-button]:appearance-none"],["id","reset-otp-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["for","reset-password",1,"w-label"],["id","reset-password","placeholder","Password","autocomplete","off","aria-describedby","reset-password-error",1,"w-input","pr-10",3,"type","formControl"],["id","reset-password-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],["for","reset-confirm-password",1,"w-label"],["id","reset-confirm-password","type","password","placeholder","Confirm Password","autocomplete","off","aria-describedby","reset-confirm-password-error",1,"w-input",3,"formControl"],["id","reset-confirm-password-error","role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],[1,"flex","flex-row","items-center","justify-center","gap-4","my-1"],[1,"flex","flex-col","gap-2.5"],["type","button",1,"flex","size-14","items-center","justify-center","rounded-lg","border","border-gray-200","dark:border-gray-700","bg-white","dark:bg-transparent","hover:border-gray-200","dark:hover:border-gray-500","hover:shadow-sm","cursor-pointer","transition-all","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"border-radius"],["type","button",1,"flex","size-14","items-center","justify-center","rounded-lg","border","border-gray-200","dark:border-gray-700","bg-white","dark:bg-transparent","hover:border-gray-200","dark:hover:border-gray-500","hover:shadow-sm","cursor-pointer","transition-all","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["loading","lazy",1,"size-6","object-contain",3,"src","alt"],["type","button",1,"flex","h-11","w-full","items-center","justify-center","gap-3","rounded-lg","border","border-gray-200","dark:border-gray-700","bg-white","dark:bg-transparent","text-sm","font-semibold","text-gray-700","dark:text-white","hover:border-gray-200","dark:hover:border-gray-500","hover:bg-gray-50","dark:hover:bg-gray-800/50","cursor-pointer","transition-all","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"border-radius"],["type","button",1,"flex","h-11","w-full","items-center","justify-center","gap-3","rounded-lg","border","border-gray-200","dark:border-gray-700","bg-white","dark:bg-transparent","text-sm","font-semibold","text-gray-700","dark:text-white","hover:border-gray-200","dark:hover:border-gray-500","hover:bg-gray-50","dark:hover:bg-gray-800/50","cursor-pointer","transition-all","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["loading","lazy",1,"size-5","object-contain",3,"src","alt"],[1,"w-[180px]","text-left","whitespace-nowrap"]],template:function(r,i){r&1&&(U(0,Kq,8,1,"section",7),U(1,Xq,3,2),Gt(2,hW,2,3,"ng-template",null,0,Qn),U(4,CW,17,8,"div",8),Gt(5,SW,2,1,"ng-template",null,1,Qn)(7,AW,2,0,"ng-template",null,2,Qn)(9,cZ,2,0,"ng-template",null,3,Qn)(11,yZ,1,1,"ng-template",null,4,Qn)),r&2&&(B(i.isUserProxyContainer()?0:-1),x(),B(i.isUserProxyContainer()?-1:1),x(3),B(i.dialogOpen()?4:-1))},dependencies:[wn,Da,nr,$n,bx,er,tr,Oa,Rn,hr,yh,Ys,vg,Zi],encapsulation:2,changeDetection:0})}}return e})();var xZ=e=>({type:"text",label:"Email or Mobile",formControl:e}),bZ=e=>({type:"number",label:"OTP",formControl:e}),wZ=e=>({type:"password",label:"New Confirm Password",formControl:e,patternError:"Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol"});function CZ(e,n){if(e&1){let t=be();g(0,"button",12),J("click",function(){W(t);let i=k();return Z(i.changeStep(i.step-1))}),ue(),g(1,"svg",13),Q(2,"path",14),m()()}if(e&2){let t=k();x(),lt("fill",t.isDark?"#ffffff":"#5f6368")}}function EZ(e,n){e&1&&Q(0,"div")}function DZ(e,n){e&1&&(g(0,"p",31),E(1,"Email or Mobile number is required."),m())}function SZ(e,n){if(e&1&&(g(0,"div",17)(1,"label",29),E(2,"Email or Mobile"),m(),Q(3,"input",30),U(4,DZ,2,0,"p",31),g(5,"p",32)(6,"span",33),E(7,"Note:"),m(),E(8," Please enter your Mobile number with the country code (e.g. 91) "),m()()),e&2){let t=n;x(3),te("formControl",t),x(),B(t.touched&&(t.errors!=null&&t.errors.required)?4:-1)}}function kZ(e,n){e&1&&St(0)}function TZ(e,n){e&1&&(g(0,"p",31),E(1,"Password is required."),m())}function IZ(e,n){e&1&&(g(0,"p",31),E(1," Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol. "),m())}function AZ(e,n){if(e&1&&U(0,TZ,2,0,"p",31)(1,IZ,2,0,"p",31),e&2){let t=k();B(t.errors!=null&&t.errors.required?0:t.errors!=null&&t.errors.pattern?1:-1)}}function MZ(e,n){if(e&1){let t=be();g(0,"div",17)(1,"label",29),E(2,"Password"),m(),g(3,"div",34),Q(4,"input",35),g(5,"button",36),J("click",function(){W(t);let i=k(2);return Z(i.showPassword=!i.showPassword)}),Gt(6,kZ,1,0,"ng-container",37),m()(),U(7,AZ,2,1),m()}if(e&2){let t=n,r=k(2),i=mt(12);x(4),te("type",r.showPassword?"text":"password")("formControl",t),x(),lt("aria-label",r.showPassword?"Hide password":"Show password"),x(),te("ngTemplateOutlet",i),x(),B(t.touched?7:-1)}}function RZ(e,n){if(e&1){let t=be();g(0,"ng-hcaptcha",38,3),J("verify",function(i){W(t);let o=k(2);return Z(o.onHCaptchaVerify(i))})("expired",function(){W(t);let i=k(2);return Z(i.onHCaptchaExpired())})("error",function(i){W(t);let o=k(2);return Z(o.onHCaptchaError(i))}),m()}}function PZ(e,n){if(e&1){let t=be();g(0,"ng-hcaptcha",39,3),J("verify",function(i){W(t);let o=k(2);return Z(o.onHCaptchaVerify(i))})("expired",function(){W(t);let i=k(2);return Z(i.onHCaptchaExpired())})("error",function(i){W(t);let o=k(2);return Z(o.onHCaptchaError(i))}),m()}}function OZ(e,n){e&1&&(g(0,"p",21),E(1),m()),e&2&&(x(),_t(n))}function NZ(e,n){e&1&&(ue(),g(0,"svg",26),Q(1,"circle",40)(2,"path",41),m())}function FZ(e,n){if(e&1){let t=be();g(0,"div",15),J("valid",function(){W(t);let i=k();return Z(i.login())}),g(1,"h2",16),E(2,"Login"),m(),U(3,SZ,9,2,"div",17),U(4,MZ,8,5,"div",17),g(5,"div",18),U(6,RZ,2,0,"ng-hcaptcha",19),U(7,PZ,2,0,"ng-hcaptcha",20),m(),U(8,OZ,2,1,"p",21),tt(9,"async"),g(10,"div",22)(11,"div",23)(12,"a",24),J("click",function(){W(t);let i=k();return Z(i.changeStep(2))}),E(13,"Forgot Password?"),m()(),g(14,"button",25,2),tt(16,"async"),U(17,NZ,3,0,":svg:svg",26),tt(18,"async"),E(19," Login "),m(),g(20,"p",27),E(21," New User? "),g(22,"a",28),J("click",function(){W(t);let i=k();return Z(i.showRegistration())}),E(23,"Create Account"),m()()()()}if(e&2){let t,r,i,o=mt(15),a=k();te("formGroup",a.loginForm)("buttonRef",o),x(3),B((t=a.loginForm.get("username"))?3:-1,t),x(),B((r=a.loginForm.get("password"))?4:-1,r),x(2),B(a.isDark?6:-1),x(),B(a.isDark?-1:7),x(),B((i=ot(9,9,a.apiError))?8:-1,i),x(6),te("disabled",ot(16,11,a.isLoading$)),x(3),B(ot(18,13,a.isLoading$)?17:-1)}}function LZ(e,n){e&1&&St(0)}function jZ(e,n){e&1&&(g(0,"p",21),E(1),m()),e&2&&(x(),_t(n))}function VZ(e,n){e&1&&(ue(),g(0,"svg",26),Q(1,"circle",40)(2,"path",41),m())}function UZ(e,n){if(e&1){let t=be();g(0,"div",15),J("valid",function(){W(t);let i=k();return Z(i.sendOtp())}),g(1,"h2",16),E(2,"Reset Password"),m(),Gt(3,LZ,1,0,"ng-container",42),U(4,jZ,2,1,"p",21),tt(5,"async"),g(6,"button",25,4),tt(8,"async"),U(9,VZ,3,0,":svg:svg",26),tt(10,"async"),E(11," Send OTP "),m()()}if(e&2){let t,r=mt(7),i=k(),o=mt(10);te("formGroup",i.sendOtpForm)("buttonRef",r),x(3),te("ngTemplateOutlet",o)("ngTemplateOutletContext",qt(13,xZ,i.sendOtpForm.get("userDetails"))),x(),B((t=ot(5,7,i.apiError))?4:-1,t),x(2),te("disabled",ot(8,9,i.isLoading$)),x(3),B(ot(10,11,i.isLoading$)?9:-1)}}function BZ(e,n){if(e&1&&(g(0,"span"),E(1),m()),e&2){let t=k(2);x(),Ce("(",t.remainingSeconds,"s)")}}function $Z(e,n){e&1&&St(0)}function zZ(e,n){e&1&&St(0)}function HZ(e,n){e&1&&(g(0,"p",31),E(1,"Password is required."),m())}function GZ(e,n){if(e&1&&(g(0,"p",31),E(1),m()),e&2){let t=n;x(),Ce(" Min required length is ",t==null?null:t.requiredLength," ")}}function qZ(e,n){e&1&&(g(0,"p",31),E(1," Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol. "),m())}function WZ(e,n){if(e&1&&U(0,HZ,2,0,"p",31)(1,GZ,2,1,"p",31)(2,qZ,2,0,"p",31),e&2){let t,r=k();B(r.errors!=null&&r.errors.required?0:(t=r.errors==null?null:r.errors.minlength)?1:r.errors!=null&&r.errors.pattern?2:-1,t)}}function ZZ(e,n){if(e&1){let t=be();g(0,"div",17)(1,"label",29),E(2,"Password"),m(),g(3,"div",34),Q(4,"input",35),g(5,"button",36),J("click",function(){W(t);let i=k(2);return Z(i.showPassword=!i.showPassword)}),Gt(6,zZ,1,0,"ng-container",37),m()(),U(7,WZ,3,1),m()}if(e&2){let t=n,r=k(2),i=mt(12);x(4),te("type",r.showPassword?"text":"password")("formControl",t),x(),lt("aria-label",r.showPassword?"Hide password":"Show password"),x(),te("ngTemplateOutlet",i),x(),B(t.touched?7:-1)}}function KZ(e,n){e&1&&St(0)}function YZ(e,n){e&1&&(g(0,"p",21),E(1),m()),e&2&&(x(),_t(n))}function QZ(e,n){e&1&&(ue(),g(0,"svg",26),Q(1,"circle",40)(2,"path",41),m())}function XZ(e,n){if(e&1){let t=be();g(0,"div",15),J("valid",function(){W(t);let i=k();return Z(i.verfiyOtp())}),g(1,"h2",16),E(2,"Change Password"),m(),g(3,"div",43)(4,"span",44),E(5),m(),g(6,"a",24),J("click",function(){W(t);let i=k();return Z(i.changeStep(2))}),E(7,"Change"),m()(),g(8,"button",45),J("click",function(){W(t);let i=k();return Z(i.sendOtp())}),E(9," Resend OTP "),U(10,BZ,2,1,"span"),m(),Gt(11,$Z,1,0,"ng-container",42),U(12,ZZ,8,5,"div",17),Gt(13,KZ,1,0,"ng-container",42),U(14,YZ,2,1,"p",21),tt(15,"async"),g(16,"button",25,5),tt(18,"async"),U(19,QZ,3,0,":svg:svg",26),tt(20,"async"),E(21," Submit "),m()()}if(e&2){let t,r,i=mt(17),o=k(),a=mt(10);te("formGroup",o.resetPasswordForm)("buttonRef",i),x(5),_t(o.sendOtpForm.get("userDetails").value),x(3),te("disabled",o.remainingSeconds>0),x(2),B(o.remainingSeconds>0?10:-1),x(),te("ngTemplateOutlet",a)("ngTemplateOutletContext",qt(19,bZ,o.resetPasswordForm.get("otp"))),x(),B((t=o.resetPasswordForm.get("password"))?12:-1,t),x(),te("ngTemplateOutlet",a)("ngTemplateOutletContext",qt(21,wZ,o.resetPasswordForm.get("confirmPassword"))),x(),B((r=ot(15,13,o.apiError))?14:-1,r),x(2),te("disabled",ot(18,15,o.isLoading$)),x(3),B(ot(20,17,o.isLoading$)?19:-1)}}function JZ(e,n){if(e&1&&(g(0,"p",31),E(1),m()),e&2){let t=k(2).label;x(),Ce("",t," is required.")}}function eK(e,n){if(e&1&&(g(0,"p",31),E(1),m()),e&2){let t=k(2),r=t.label,i=t.patternError;x(),Ce(" ",i||"Enter valid "+r," ")}}function tK(e,n){if(e&1&&(g(0,"p",31),E(1),m()),e&2){let t=n;x(),Ce(" Min required length is ",t==null?null:t.requiredLength," ")}}function nK(e,n){e&1&&(g(0,"p",31),E(1,"Whitespace not allowed"),m())}function rK(e,n){if(e&1&&(g(0,"p",31),E(1),m()),e&2){let t=k(2).label;x(),Ce("",t," mismatch")}}function iK(e,n){if(e&1&&U(0,JZ,2,1,"p",31)(1,eK,2,1,"p",31)(2,tK,2,1,"p",31)(3,nK,2,0,"p",31)(4,rK,2,1,"p",31),e&2){let t,r=k().formControl;B(r.errors!=null&&r.errors.required?0:r.errors!=null&&r.errors.pattern?1:(t=r.errors==null?null:r.errors.minlength)?2:r.errors!=null&&r.errors.cannotContainSpace?3:r.errors!=null&&r.errors.valueSameAsControl?4:-1,t)}}function oK(e,n){if(e&1&&(g(0,"p",32),E(1),m()),e&2){let t=k().hint;x(),_t(t)}}function aK(e,n){if(e&1&&(g(0,"div",17)(1,"label",29),E(2),m(),Q(3,"input",46),U(4,iK,5,1),U(5,oK,2,1,"p",32),m()),e&2){let t=n.type,r=n.label,i=n.hint,o=n.formControl;x(2),_t(r),x(),te("formControl",o)("placeholder","Enter "+r),lt("type",t??"text"),x(),B(o.touched?4:-1),x(),B(i?5:-1)}}function sK(e,n){e&1&&(ue(),g(0,"svg",47),Q(1,"path",48),m())}function lK(e,n){e&1&&(ue(),g(0,"svg",47),Q(1,"path",49),m())}function cK(e,n){if(e&1&&U(0,sK,2,0,":svg:svg",47)(1,lK,2,0,":svg:svg",47),e&2){let t=k();B(t.showPassword?1:0)}}var j4=(()=>{class e extends Kn{get isDark(){return this.themeService.isDark(this.theme())}constructor(){super(),this.loginServiceData=Se(),this.theme=Se(),this.WidgetTheme=xt,this.themeService=A(Sn),this.togglePopUp=pn(),this.closePopUp=pn(),this.openPopUp=pn(),this.failureReturn=pn(),this.step=1,this.showPassword=!1,this.apiError=new dt(null),this.hCaptchaToken="",this.hCaptchaVerified=!1,this.componentStore=A(Rl),this.store=A(dn),this.otpUtilityService=A(Nr),this.otpData$=this.componentStore.otpdata$,this.isLoading$=this.componentStore.isLoading$,this.resetPassword$=this.componentStore.resetPassword$,this.loginForm=new Lt({username:new je(null,[he.required]),password:new je(null,[he.required,xi.cannotContainSpace])}),this.sendOtpForm=new Lt({userDetails:new je(null,[he.required,he.pattern(Zh)])}),this.resetPasswordForm=new Lt({otp:new je(null,he.required),password:new je(null,[he.required,he.pattern(oo),he.minLength(8)]),confirmPassword:new je(null,[he.required,he.minLength(8),he.pattern(oo),xi.valueSameAsControl("password")])}),sn(()=>this.themeService.setInputTheme(this.theme())),this.selectWidgetData$=this.store.pipe(ke(qa),ce(this.destroy$))}ngOnInit(){this.selectWidgetData$.pipe(ce(this.destroy$)).subscribe(t=>{this.state=t.find(r=>r.service_id===zt.PasswordAuthentication).state}),this.otpData$.pipe(ce(this.destroy$)).subscribe(t=>{t&&(this.changeStep(3),this.startTimer())}),this.resetPassword$.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.changeStep(1)}),this.resetPasswordForm.get("password").valueChanges.pipe(ce(this.destroy$)).subscribe(t=>{t&&this.resetPasswordForm.get("confirmPassword").updateValueAndValidity()}),this.componentStore.apiError$.subscribe(t=>{this.apiError.next(t),t&&(this.hCaptchaToken="",this.hCaptchaVerified=!1,this.hCaptchaComponent&&this.hCaptchaComponent.reset())}),this.componentStore.showRegistration$.pipe(Je(Boolean),ce(this.destroy$)).subscribe(t=>{t&&(this.prefillDetails=this.loginForm.get("username").value,this.showRegistration(this.prefillDetails))})}changeStep(t){this.apiError.next(null),this.step=t,this.hCaptchaToken="",this.hCaptchaVerified=!1,this.step===0&&this.closePopUp.emit()}showRegistration(t){this.openPopUp.emit(t)}close(t=!1){document.getElementById(_l)?.remove(),this.togglePopUp.emit(),t&&this.failureReturn.emit({code:0,closeByUser:t,message:"User cancelled the login process."})}encryptPassword(t){return this.otpUtilityService.aesEncrypt(JSON.stringify(t),ft.uiEncodeKey,ft.uiIvKey,!0)}login(){if(!this.hCaptchaVerified){this.apiError.next("Please complete the hCaptcha verification");return}let t=this.encryptPassword(this.loginForm.get("password").value),r={state:this.state,user:this.loginForm.get("username").value?.replace(/^\+/,""),password:t,hCaptchaToken:this.hCaptchaToken};this.componentStore.loginData(r)}sendOtp(){let t={state:this.state,user:this.sendOtpForm.get("userDetails").value};this.componentStore.resetPassword(t)}verfiyOtp(){let t=this.encryptPassword(this.resetPasswordForm.get("password").value),r={state:this.state,user:this.sendOtpForm.get("userDetails").value,password:t,otp:this.resetPasswordForm.get("otp").value};this.componentStore.verfyPasswordOtp(r)}onHCaptchaVerify(t){this.hCaptchaToken=t,this.hCaptchaVerified=!0}onHCaptchaExpired(){this.hCaptchaToken="",this.hCaptchaVerified=!1}onHCaptchaError(t){this.hCaptchaToken="",this.hCaptchaVerified=!1,console.error("hCaptcha error:",t)}startTimer(){this.remainingSeconds=15,this.timerSubscription=ra(1e3).subscribe(()=>{this.remainingSeconds>0?this.remainingSeconds--:this.timerSubscription.unsubscribe()})}ngOnDestroy(){this.timerSubscription&&this.timerSubscription.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-login"]],viewQuery:function(r,i){if(r&1&&bn(Ys,5),r&2){let o;Ot(o=Nt())&&(i.hCaptchaComponent=o.first)}},inputs:{loginServiceData:[1,"loginServiceData"],theme:[1,"theme"]},outputs:{togglePopUp:"togglePopUp",closePopUp:"closePopUp",openPopUp:"openPopUp",failureReturn:"failureReturn"},features:[Mn([Rl]),Dt],decls:13,vars:5,consts:[["formField",""],["visibilityIcon",""],["loginBtn",""],["hCaptcha",""],["sendOtpBtn",""],["verifyOtpBtn",""],[1,"flex","items-center","justify-between","mb-4"],["type","button","aria-label","Go back",1,"flex","size-6","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150"],["type","button","aria-label","Close",1,"flex","size-6","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150",3,"click"],["width","12","height","12","viewBox","0 0 12 12","fill","none","aria-hidden","true"],["d","M11.8334 1.34163L10.6584 0.166626L6.00008 4.82496L1.34175 0.166626L0.166748 1.34163L4.82508 5.99996L0.166748 10.6583L1.34175 11.8333L6.00008 7.17496L10.6584 11.8333L11.8334 10.6583L7.17508 5.99996L11.8334 1.34163Z"],["proxyMarkAllAsTouched","",1,"flex","flex-col","gap-3","w-full",3,"formGroup","buttonRef"],["type","button","aria-label","Go back",1,"flex","size-6","items-center","justify-center","rounded","text-gray-400","hover:text-gray-600","dark:text-gray-500","dark:hover:text-gray-300","cursor-pointer","transition-colors","duration-150",3,"click"],["xmlns","http://www.w3.org/2000/svg","height","16px","viewBox","0 -960 960 960","width","16px","aria-hidden","true"],["d","M400-80 0-480l400-400 71 71-329 329 329 329-71 71Z"],["proxyMarkAllAsTouched","",1,"flex","flex-col","gap-3","w-full",3,"valid","formGroup","buttonRef"],[1,"text-base","font-semibold","text-gray-900","dark:text-white"],[1,"w-full"],[1,"w-full","flex","justify-center","py-1"],["theme","dark","size","normal"],["theme","light","size","normal"],["role","alert",1,"text-xs","text-red-600","dark:text-red-400"],[1,"flex","flex-col","gap-3"],[1,"flex","justify-end"],["href","javascript:void(0)",1,"w-link",3,"click"],["type","button",1,"w-btn-primary","w-full","justify-center",3,"disabled"],["xmlns","http://www.w3.org/2000/svg","fill","none","viewBox","0 0 24 24","aria-hidden","true",1,"animate-spin","size-4","text-white"],[1,"text-center","text-xs","text-gray-500","dark:text-gray-400"],["href","javascript:void(0)",1,"font-medium","text-indigo-600","dark:text-indigo-400","hover:underline","cursor-pointer",3,"click"],[1,"block","text-sm","font-medium","text-gray-900","dark:text-white","mb-1"],["type","text","placeholder","Email or Mobile","autocomplete","off",1,"w-input-sm","[appearance:textfield]","[&::-webkit-outer-spin-button]:appearance-none","[&::-webkit-inner-spin-button]:appearance-none",3,"formControl"],["role","alert",1,"mt-1","text-xs","text-red-600","dark:text-red-400"],[1,"mt-1","text-xs","text-gray-400","dark:text-gray-500"],[1,"font-semibold"],[1,"relative"],["placeholder","Password","autocomplete","off",1,"w-input-sm","pr-9",3,"type","formControl"],["type","button",1,"absolute","inset-y-0","right-0","flex","items-center","pr-2.5","cursor-pointer","text-gray-400","hover:text-gray-600","dark:hover:text-gray-300",3,"click"],[4,"ngTemplateOutlet"],["theme","dark","size","normal",3,"verify","expired","error"],["theme","light","size","normal",3,"verify","expired","error"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z",1,"opacity-75"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"flex","items-center","justify-between","text-sm"],[1,"text-gray-700","dark:text-gray-300"],["type","button",1,"self-start","text-xs","font-medium","text-indigo-600","dark:text-indigo-400","hover:underline","cursor-pointer","disabled:opacity-50","disabled:cursor-not-allowed",3,"click","disabled"],["autocomplete","off",1,"w-input-sm",3,"formControl","placeholder"],["width","20","height","20","xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24","fill-rule","evenodd","clip-rule","evenodd","aria-hidden","true","fill","currentColor"],["d","M12.01 20c-5.065 0-9.586-4.211-12.01-8.424 2.418-4.103 6.943-7.576 12.01-7.576 5.135 0 9.635 3.453 11.999 7.564-2.241 4.43-6.726 8.436-11.999 8.436zm-10.842-8.416c.843 1.331 5.018 7.416 10.842 7.416 6.305 0 10.112-6.103 10.851-7.405-.772-1.198-4.606-6.595-10.851-6.595-6.116 0-10.025 5.355-10.842 6.584zm10.832-4.584c2.76 0 5 2.24 5 5s-2.24 5-5 5-5-2.24-5-5 2.24-5 5-5zm0 1c2.208 0 4 1.792 4 4s-1.792 4-4 4-4-1.792-4-4 1.792-4 4-4z"],["d","M8.137 15.147c-.71-.857-1.146-1.947-1.146-3.147 0-2.76 2.241-5 5-5 1.201 0 2.291.435 3.148 1.145l1.897-1.897c-1.441-.738-3.122-1.248-5.035-1.248-6.115 0-10.025 5.355-10.842 6.584.529.834 2.379 3.527 5.113 5.428l1.865-1.865zm6.294-6.294c-.673-.53-1.515-.853-2.44-.853-2.207 0-4 1.792-4 4 0 .923.324 1.765.854 2.439l5.586-5.586zm7.56-6.146l-19.292 19.293-.708-.707 3.548-3.548c-2.298-1.612-4.234-3.885-5.548-6.169 2.418-4.103 6.943-7.576 12.01-7.576 2.065 0 4.021.566 5.782 1.501l3.501-3.501.707.707zm-2.465 3.879l-.734.734c2.236 1.619 3.628 3.604 4.061 4.274-.739 1.303-4.546 7.406-10.852 7.406-1.425 0-2.749-.368-3.951-.938l-.748.748c1.475.742 3.057 1.19 4.699 1.19 5.274 0 9.758-4.006 11.999-8.436-1.087-1.891-2.63-3.637-4.474-4.978zm-3.535 5.414c0-.554-.113-1.082-.317-1.562l.734-.734c.361.69.583 1.464.583 2.296 0 2.759-2.24 5-5 5-.832 0-1.604-.223-2.295-.583l.734-.735c.48.204 1.007.318 1.561.318 2.208 0 4-1.792 4-4z"]],template:function(r,i){r&1&&(g(0,"div",6),U(1,CZ,3,1,"button",7)(2,EZ,1,0,"div"),g(3,"button",8),J("click",function(){return i.close(!0)}),ue(),g(4,"svg",9),Q(5,"path",10),m()()(),U(6,FZ,24,15,"div",11),U(7,UZ,12,15,"div",11),U(8,XZ,22,23,"div",11),Gt(9,aK,6,6,"ng-template",null,0,Qn)(11,cK,2,1,"ng-template",null,1,Qn)),r&2&&(x(),B(i.step>1?1:2),x(4),lt("fill",i.isDark?"#ffffff":"#5D6164"),x(),B(i.step===1?6:-1),x(),B(i.step===2?7:-1),x(),B(i.step===3?8:-1))},dependencies:[wn,Da,nr,$n,er,tr,Oa,Rn,Ud,Zi],styles:["[_nghost-%COMP%]{width:100%;display:flex;flex-direction:column}"],changeDetection:0})}}return e})();var Go=(()=>{class e{constructor(){this.toast=et(null),this.timer=null}show(t){this.timer&&clearTimeout(this.timer),this.toast.set(t),this.timer=setTimeout(()=>this.dismiss(),t.duration??3e3)}success(t,r=3e3){this.show({message:t,type:"success",duration:r})}error(t,r=3e3){this.show({message:t,type:"error",duration:r})}info(t,r=3e3){this.show({message:t,type:"info",duration:r})}dismiss(){this.timer&&clearTimeout(this.timer),this.toast.set(null)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function dK(e,n){e&1&&(ue(),nn(0,"svg",5),Wr(1,"path",15),un())}function uK(e,n){e&1&&(ue(),nn(0,"svg",6),Wr(1,"path",16),un())}function pK(e,n){e&1&&(ue(),nn(0,"svg",7),Wr(1,"path",17),un())}function fK(e,n){if(e&1){let t=be();nn(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"div",4),U(5,dK,2,0,":svg:svg",5)(6,uK,2,0,":svg:svg",6)(7,pK,2,0,":svg:svg",7),un(),nn(8,"div",8)(9,"p",9),E(10),un(),nn(11,"p",10),E(12),un()(),nn(13,"div",11)(14,"button",12),Io("click",function(){W(t);let i=k();return Z(i.toastService.dismiss())}),ue(),nn(15,"svg",13),Wr(16,"path",14),un()()()()()()()}if(e&2){let t=k();x(),We("bg-gray-800",t.isDark)("ring-gray-700",t.isDark)("bg-white",!t.isDark)("ring-gray-200",!t.isDark),x(4),B(t.toastService.toast().type==="success"?5:t.toastService.toast().type==="info"?6:7),x(4),We("text-gray-900",!t.isDark)("text-white",t.isDark),x(),Ce(" ",t.toastService.toast().type==="success"?"Success":t.toastService.toast().type==="info"?"Info":"Error"," "),x(),We("text-gray-500",!t.isDark)("text-gray-400",t.isDark),x(),Ce(" ",t.toastService.toast().message," "),x(2),We("text-gray-500",t.isDark)("hover:text-white",t.isDark)("text-gray-400",!t.isDark)("hover:text-gray-600",!t.isDark)}}var Nl=(()=>{class e{get isDark(){return this.themeService.isDark(this.theme())}constructor(){this.theme=Se(),this.toastService=A(Go),this.themeService=A(Sn),sn(()=>this.themeService.setInputTheme(this.theme()))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-toast"]],inputs:{theme:[1,"theme"]},decls:1,vars:1,consts:[["aria-live","assertive",1,"pointer-events-none","fixed","inset-0","flex","items-start","justify-end","px-4","py-6","sm:p-6","z-[9999]"],[1,"pointer-events-auto","w-full","max-w-sm","rounded-lg","shadow-lg","ring-1"],[1,"p-4"],[1,"flex","items-start"],[1,"shrink-0"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","aria-hidden","true",1,"size-6","text-green-500"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","aria-hidden","true",1,"size-6","text-blue-500"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","aria-hidden","true",1,"size-6","text-red-500"],[1,"ml-3","w-0","flex-1","pt-0.5"],[1,"text-sm","font-medium"],[1,"mt-1","text-sm"],[1,"ml-4","flex","shrink-0"],["type","button","aria-label","Close notification",1,"inline-flex","rounded-md","cursor-pointer","focus:outline-2","focus:outline-offset-2","focus:outline-indigo-500",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5"],["d","M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"],["stroke-linecap","round","stroke-linejoin","round","d","M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"],["stroke-linecap","round","stroke-linejoin","round","d","M11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"],["stroke-linecap","round","stroke-linejoin","round","d","M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"]],template:function(r,i){r&1&&U(0,fK,17,27,"div",0),r&2&&B(i.toastService.toast()?0:-1)},encapsulation:2,changeDetection:0})}}return e})();var V4=(()=>{class e{constructor(){this.title=Se("Confirm Action"),this.message=Se("Are you sure?"),this.confirmLabel=Se("Confirm"),this.cancelLabel=Se("Cancel"),this.isDark=Se(!1),this.confirmed=pn(),this.cancelled=pn(),this._id=Math.random().toString(36).slice(2,8)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-confirm-dialog"]],inputs:{title:[1,"title"],message:[1,"message"],confirmLabel:[1,"confirmLabel"],cancelLabel:[1,"cancelLabel"],isDark:[1,"isDark"]},outputs:{confirmed:"confirmed",cancelled:"cancelled"},decls:16,vars:10,consts:[["aria-hidden","true",1,"fixed","inset-0","bg-black/50","dark:bg-black/70","backdrop-blur-sm",2,"z-index","2147483646",3,"click"],["role","alertdialog","aria-modal","true",1,"fixed","inset-x-4","top-1/2","-translate-y-1/2","sm:inset-x-auto","sm:left-1/2","sm:w-full","sm:max-w-md","sm:-translate-x-1/2","rounded-xl","bg-white","dark:bg-gray-900","shadow-2xl","ring-1","ring-gray-900/5","dark:ring-white/10","p-6",2,"z-index","2147483647"],[1,"flex","items-start","gap-4"],["aria-hidden","true",1,"flex","size-10","shrink-0","items-center","justify-center","rounded-full","bg-red-100","dark:bg-red-900/30"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","aria-hidden","true",1,"size-5","text-red-600","dark:text-red-400"],["stroke-linecap","round","stroke-linejoin","round","d","M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"],[1,"min-w-0","flex-1"],[1,"text-base","font-semibold","text-gray-900","dark:text-white",3,"id"],[1,"mt-1","text-sm","text-gray-500","dark:text-gray-400",3,"id"],[1,"mt-5","flex","justify-end","gap-3"],["type","button",1,"rounded-lg","px-4","py-2","text-sm","font-semibold","text-gray-700","dark:text-gray-300","ring-1","ring-inset","ring-gray-300","dark:ring-gray-600","bg-white","dark:bg-gray-800","cursor-pointer","hover:bg-gray-50","dark:hover:bg-gray-700","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-indigo-500",3,"click"],["type","button",1,"rounded-lg","bg-red-600","px-4","py-2","text-sm","font-semibold","text-white","shadow-sm","cursor-pointer","hover:bg-red-500","active:bg-red-700","transition-colors","duration-150","focus-visible:outline","focus-visible:outline-2","focus-visible:outline-red-500",3,"click"]],template:function(r,i){r&1&&(nn(0,"div",0),Io("click",function(){return i.cancelled.emit()}),un(),nn(1,"div",1)(2,"div",2)(3,"div",3),ue(),nn(4,"svg",4),Wr(5,"path",5),un()(),Ye(),nn(6,"div",6)(7,"h3",7),E(8),un(),nn(9,"p",8),E(10),un()()(),nn(11,"div",9)(12,"button",10),Io("click",function(){return i.cancelled.emit()}),E(13),un(),nn(14,"button",11),Io("click",function(){return i.confirmed.emit()}),E(15),un()()()),r&2&&(x(),We("dark",i.isDark()),lt("aria-labelledby","confirm-title-"+i._id)("aria-describedby","confirm-desc-"+i._id),x(6),Tc("id","confirm-title-"+i._id),x(),Ce(" ",i.title()," "),x(),Tc("id","confirm-desc-"+i._id),x(),Ce(" ",i.message()," "),x(3),Ce(" ",i.cancelLabel()," "),x(2),Ce(" ",i.confirmLabel()," "))},encapsulation:2,changeDetection:0})}}return e})();var hK=["editDialogPortal"],gK=["confirmDialogPortal"],mK=["toastPortal"],_K=(e,n)=>n.id;function vK(e,n){if(e&1){let t=be();g(0,"button",34),J("click",function(){W(t);let i=k();return Z(i.openEditDialog())}),ue(),g(1,"svg",21),Q(2,"path",35),m(),E(3," Edit "),m()}}function yK(e,n){if(e&1&&(g(0,"div",24)(1,"div",36),ue(),g(2,"svg",37),Q(3,"circle",38)(4,"path",11),m(),Ye(),g(5,"div",17)(6,"p",39),E(7,"Full Name"),m(),g(8,"p",40),E(9),m()()(),g(10,"div",36),ue(),g(11,"svg",37),Q(12,"rect",41)(13,"path",42),m(),Ye(),g(14,"div",17)(15,"p",39),E(16,"Mobile"),m(),g(17,"p",43),E(18),m()()(),g(19,"div",36),ue(),g(20,"svg",37),Q(21,"rect",44)(22,"path",45),m(),Ye(),g(23,"div",17)(24,"p",39),E(25,"Email Address"),m(),g(26,"p",40),E(27),m()()()()),e&2){let t,r,i,o,a,s,l=k();x(9),Ce(" ",l.previousName||"\u2014"," "),x(8),We("text-gray-400",!((t=l.clientForm.get("mobile"))!=null&&t.value)||((t=l.clientForm.get("mobile"))==null?null:t.value)==="--Not Provided--")("italic",!((r=l.clientForm.get("mobile"))!=null&&r.value)||((r=l.clientForm.get("mobile"))==null?null:r.value)==="--Not Provided--")("text-gray-900",((i=l.clientForm.get("mobile"))==null?null:i.value)&&((i=l.clientForm.get("mobile"))==null?null:i.value)!=="--Not Provided--")("dark:text-white",((o=l.clientForm.get("mobile"))==null?null:o.value)&&((o=l.clientForm.get("mobile"))==null?null:o.value)!=="--Not Provided--"),x(),Ce(" ",((a=l.clientForm.get("mobile"))==null?null:a.value)==="--Not Provided--"?"Not provided":((a=l.clientForm.get("mobile"))==null?null:a.value)||"Not provided"," "),x(9),Ce(" ",(s=l.clientForm.get("email"))==null?null:s.value," ")}}function xK(e,n){e&1&&(g(0,"span",52),E(1," \u25CF Current "),m())}function bK(e,n){if(e&1){let t=be();g(0,"button",54),J("click",function(){W(t);let i=k().$implicit,o=k(2);return Z(o.openModal(i==null?null:i.id))}),E(1,"\u2197 Leave"),m()}}function wK(e,n){if(e&1&&(g(0,"div",47)(1,"div",48)(2,"div",49),E(3),tt(4,"slice"),tt(5,"uppercase"),m(),g(6,"div",50)(7,"p",51),E(8),m(),U(9,xK,2,0,"span",52),m()(),U(10,bK,2,0,"button",53),m()),e&2){let t=n.$implicit,r=k(2);x(2),We("bg-indigo-100",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname)("dark:bg-indigo-900",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname)("text-indigo-700",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname)("dark:text-indigo-300",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname)("bg-gray-100",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname)("dark:bg-gray-700",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname)("text-gray-600",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname)("dark:text-gray-300",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname),x(),Ce(" ",ot(5,32,df(4,28,t.name,0,2))," "),x(4),We("font-semibold",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname)("font-medium",(r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname)("text-gray-900",!0)("dark:text-white",!0),x(),Ce(" ",t.name," "),x(),B((r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)===t.company_uname?9:-1),x(),B((r.companyDetails==null||r.companyDetails.currentCompany==null?null:r.companyDetails.currentCompany.company_uname)!==t.company_uname?10:-1)}}function CK(e,n){if(e&1&&(g(0,"div",30)(1,"div",46)(2,"span"),E(3,"Organization"),m(),g(4,"span"),E(5,"Actions"),m()(),Rt(6,wK,11,34,"div",47,_K),tt(8,"async"),m()),e&2){let t,r=k();x(6),Pt((t=ot(8,0,r.userDetails$))==null?null:t.c_companies)}}function EK(e,n){e&1&&(g(0,"p",31),E(1," Nothing here \u2014 there are no companies to show "),m())}function DK(e,n){e&1&&(g(0,"p",67),E(1,"Name is required."),m())}function SK(e,n){e&1&&(g(0,"p",67),E(1,"Invalid name format."),m())}function kK(e,n){if(e&1){let t=be();g(0,"div",null,1)(2,"div",55),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),m(),g(3,"div",56)(4,"div",57)(5,"h2",58),E(6,"Edit Profile"),m(),g(7,"button",59),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),ue(),g(8,"svg",60),Q(9,"path",61),m()()(),Ye(),g(10,"form",62)(11,"div",63)(12,"div")(13,"label",64),E(14," Full Name "),g(15,"span",65),E(16,"*"),m()(),Q(17,"input",66),U(18,DK,2,0,"p",67)(19,SK,2,0,"p",67),m(),g(20,"div")(21,"label",68),E(22,"Mobile"),m(),Q(23,"input",69),m(),g(24,"div",70)(25,"label",71),E(26,"Email Address"),m(),Q(27,"input",72),m()()(),g(28,"div",73)(29,"button",74),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),E(30,"Cancel"),m(),g(31,"button",75),J("click",function(){W(t);let i=k();return Z(i.updateUser())}),ue(),g(32,"svg",76),Q(33,"path",77),m(),E(34," Save Changes "),m()()()()}if(e&2){let t,r=k();We("dark",r.isDark),x(10),te("formGroup",r.clientForm),x(8),B((t=r.clientForm.get("name"))!=null&&t.touched&&((t=r.clientForm.get("name"))!=null&&t.hasError("required"))?18:(t=r.clientForm.get("name"))!=null&&t.touched&&((t=r.clientForm.get("name"))!=null&&t.hasError("pattern"))?19:-1),x(5),lt("aria-readonly","true"),x(4),lt("aria-readonly","true"),x(4),te("disabled",r.clientForm.invalid)}}function TK(e,n){if(e&1){let t=be();g(0,"div",null,2)(2,"proxy-confirm-dialog",78),J("confirmed",function(){W(t);let i=k();return Z(i.confirmLeave())})("cancelled",function(){W(t);let i=k();return Z(i.confirmDialogCompanyId.set(null))}),m()()}if(e&2){let t=k();We("dark",t.isDark),x(2),te("isDark",t.isDark)}}var U4=(()=>{class e extends Kn{get isDark(){return this.themeService.isDark(this.theme())}set css(t){this.cssSubject$.next(t)}constructor(){super(),this.authToken=Se(),this.target=Se(),this.showCard=Se(),this.theme=Se(),this.WidgetTheme=xt,this.themeService=A(Sn),this.cssSubject$=new dt({position:"absolute","margin-left":"50%",top:"10px"}),this.css$=this.cssSubject$.pipe(de(t=>!t||!Object.keys(t).length?{position:"absolute","margin-left":"50%",top:"10px"}:t)),this.successReturn=Se(),this.failureReturn=Se(),this.otherData=Se({}),this.clientForm=new Lt({name:new je("",[he.required,he.pattern(ZA)]),mobile:new je({value:"",disabled:!0}),email:new je({value:"",disabled:!0})}),this.isEditing=!1,this.store=A(dn),this.toastService=A(Go),this.widgetPortal=A(vi),this.cdr=A(cn),this.confirmDialogCompanyId=et(null),this.editDialogRef=null,this.confirmDialogPortalRef=null,this.toastPortalRef=null,sn(()=>this.themeService.setInputTheme(this.theme())),this.userDetails$=this.store.pipe(ke(h4),Ie(Le),ce(this.destroy$)),this.userInProcess$=this.store.pipe(ke(g4),Ie(Le),ce(this.destroy$)),this.deleteCompany$=this.store.pipe(ke(m4),Ie(Le),ce(this.destroy$)),this.update$=this.store.pipe(ke(v4),Ie(Le),ce(this.destroy$)),this.error$=this.store.pipe(ke(A4),Ie(Le),ce(this.destroy$))}ngAfterViewInit(){this.toastPortalEl?.nativeElement&&(this.toastPortalRef=this.widgetPortal.attach(this.toastPortalEl.nativeElement))}ngOnDestroy(){this.editDialogRef?.detach(),this.confirmDialogPortalRef?.detach(),this.toastPortalRef?.detach(),super.ngOnDestroy()}ngOnInit(){this.userDetails$.pipe(ce(this.destroy$)).subscribe(t=>{t&&(this.previousName=t?.name,this.companyDetails=t,this.clientForm.get("name").setValue(t?.name),this.clientForm.get("email").setValue(t?.email),this.clientForm.get("mobile").setValue(t?.mobile?t.mobile:"--Not Provided--"))}),this.clientForm.get("name").valueChanges.subscribe(t=>{t.trim()!==this.previousName&&this.clientForm.get("name").markAsTouched()}),this.store.dispatch(Al({request:this.authToken()}))}openModal(t){this.confirmDialogCompanyId.set(t),this.cdr.detectChanges(),this.confirmDialogPortalEl?.nativeElement&&(this.confirmDialogPortalRef=this.widgetPortal.attach(this.confirmDialogPortalEl.nativeElement))}confirmLeave(){this.confirmDialogPortalRef?.detach(),this.confirmDialogPortalRef=null;let t=this.confirmDialogCompanyId();this.confirmDialogCompanyId.set(null),t&&(this.store.dispatch(Fd({companyId:t,authToken:this.authToken()})),this.deleteCompany$.pipe(Je(Boolean),Tt(1)).subscribe(r=>{r&&(window.parent.postMessage({type:"proxy",data:{event:"userLeftCompany",companyId:t}},"*"),this.store.dispatch(Al({request:this.authToken()})))}))}openEditDialog(){this.isEditing=!0,this.cdr.detectChanges(),this.editDialogPortalEl?.nativeElement&&(this.editDialogRef=this.widgetPortal.attach(this.editDialogPortalEl.nativeElement))}cancelEdit(){this.editDialogRef?.detach(),this.editDialogRef=null,this.isEditing=!1,this.clientForm.get("name").setValue(this.previousName)}updateUser(){let t=this.clientForm.get("name"),r=t?.value?.trim();if(r===this.previousName){this.editDialogRef?.detach(),this.editDialogRef=null,this.isEditing=!1;return}if(!(!r||t.invalid)){if(!navigator.onLine){this.errorMessage="Something went wrong",this.clear();return}this.store.dispatch(Ld({name:r,authToken:this.authToken()})),this.update$.pipe(Je(Boolean),Tt(1)).subscribe(i=>{i&&(this.editDialogRef?.detach(),this.editDialogRef=null,this.isEditing=!1,this.previousName=r,this.toastService.success("Information successfully updated"))}),this.error$.pipe(Je(Boolean),Tt(1)).subscribe(i=>{i?.[0]&&this.toastService.error(i[0])}),window.parent.postMessage({type:"proxy",data:{event:"userNameUpdated",enteredName:r}},"*")}}clear(){this.toastService.error("Something went wrong"),setTimeout(()=>{this.errorMessage=""},3e3)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["user-profile"]],viewQuery:function(r,i){if(r&1&&bn(hK,5)(gK,5)(mK,5),r&2){let o;Ot(o=Nt())&&(i.editDialogPortalEl=o.first),Ot(o=Nt())&&(i.confirmDialogPortalEl=o.first),Ot(o=Nt())&&(i.toastPortalEl=o.first)}},inputs:{authToken:[1,"authToken"],target:[1,"target"],showCard:[1,"showCard"],theme:[1,"theme"],css:"css",successReturn:[1,"successReturn"],failureReturn:[1,"failureReturn"],otherData:[1,"otherData"]},features:[Dt],decls:55,vars:25,consts:[["toastPortal",""],["editDialogPortal",""],["confirmDialogPortal",""],[1,"h-full","flex-col","bg-transparent","overflow-y-auto"],[1,"mx-auto","max-w-5xl","px-4","sm:px-6","lg:px-8","py-8","flex","flex-col","gap-6"],[1,"w-card-section"],[1,"w-dialog-header","px-5","py-4"],[1,"flex","items-center","gap-3"],[1,"w-icon-box"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","1.8","aria-hidden","true",1,"size-4","text-indigo-600","dark:text-indigo-400"],["cx","8","cy","5.5","r","3"],["d","M2 14c0-3.3 2.7-6 6-6s6 2.7 6 6"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white"],[1,"text-xs","text-gray-500","dark:text-gray-400"],["type","button",1,"w-btn-secondary-sm","inline-flex","items-center","gap-1.5"],[1,"flex","items-center","gap-4","px-5","py-4","bg-indigo-50","dark:bg-indigo-900/20"],[1,"w-avatar","size-14","text-lg"],[1,"min-w-0"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white","truncate"],[1,"text-xs","text-gray-500","dark:text-gray-400","truncate"],[1,"mt-1","inline-flex","items-center","gap-1","rounded-full","bg-indigo-100","dark:bg-indigo-900/50","px-2","py-0.5","text-xs","font-medium","text-indigo-700","dark:text-indigo-300"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","2","aria-hidden","true",1,"size-3"],["x","2","y","6","width","12","height","8","rx","1"],["d","M5 6V4a3 3 0 016 0v2"],[1,"grid","grid-cols-1","lg:grid-cols-3","divide-y","lg:divide-y-0","lg:divide-x","divide-gray-100","dark:divide-gray-800","border-t","border-gray-200","dark:border-gray-700"],[1,"w-icon-box","bg-teal-100","dark:bg-teal-900/50"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","1.8","aria-hidden","true",1,"size-4","text-teal-600","dark:text-teal-400"],["x","2","y","7","width","12","height","7","rx","1"],["d","M5 7V5a3 3 0 016 0v2"],[1,"w-badge"],[1,"divide-y","divide-gray-100","dark:divide-gray-800"],[1,"px-5","py-6","text-sm","italic","text-gray-400","dark:text-gray-500"],[3,"dark"],[3,"theme"],["type","button",1,"w-btn-secondary-sm","inline-flex","items-center","gap-1.5",3,"click"],["d","M11 2l3 3-8 8H3v-3l8-8z"],[1,"flex","items-start","gap-2.5","px-5","py-4"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","1.8","aria-hidden","true",1,"mt-0.5","size-4","shrink-0","text-gray-400","dark:text-gray-500"],["cx","8","cy","5","r","3"],[1,"w-micro-label"],[1,"text-sm","font-medium","text-gray-900","dark:text-white","break-all"],["x","2","y","3","width","12","height","10","rx","1.5"],["d","M5 7h6M5 10h4"],[1,"text-sm","font-medium"],["x","2","y","4","width","12","height","9","rx","1"],["d","M2 5l6 5 6-5"],[1,"hidden","lg:grid","grid-cols-[1fr_auto]","px-5","py-3","text-xs","font-medium","text-gray-500","dark:text-gray-400","uppercase","tracking-wide"],[1,"flex","flex-wrap","items-center","justify-between","gap-3","px-4","lg:px-5","py-3"],[1,"flex","min-w-0","items-center","gap-3"],[1,"w-avatar","size-8","text-xs"],[1,"min-w-0","flex","items-center","gap-2","flex-wrap"],[1,"text-sm","truncate"],[1,"inline-flex","items-center","rounded-full","bg-green-100","dark:bg-green-900/40","px-2","py-0.5","text-[10px]","font-bold","uppercase","tracking-normal","text-green-700","dark:text-green-400"],["type","button",1,"w-btn-danger-sm"],["type","button",1,"w-btn-danger-sm",3,"click"],["aria-hidden","true",1,"w-dialog-backdrop",3,"click"],["role","dialog","aria-labelledby","edit-profile-title","aria-modal","true",1,"w-dialog-panel"],[1,"w-dialog-header"],["id","edit-profile-title",1,"text-base","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close dialog",1,"w-btn-close",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5"],["d","M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"],[1,"w-dialog-body",3,"formGroup"],[1,"grid","grid-cols-1","gap-4","sm:grid-cols-2"],["for","profile-name",1,"w-label"],["aria-hidden","true",1,"text-red-500"],["id","profile-name","type","text","formControlName","name","placeholder","Enter your name",1,"w-input"],["role","alert",1,"w-field-error"],["for","profile-mobile",1,"w-label"],["id","profile-mobile","type","text","formControlName","mobile","placeholder","Not provided",1,"w-input-readonly"],[1,"sm:col-span-2"],["for","profile-email",1,"w-label"],["id","profile-email","type","email","formControlName","email","placeholder","Enter your email",1,"w-input-readonly"],[1,"w-dialog-footer"],["type","button",1,"w-btn-secondary",3,"click"],["type","button",1,"w-btn-primary",3,"click","disabled"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","2.2","aria-hidden","true",1,"size-3.5"],["d","M3 8l4 4 6-6"],["title","Leave Company","message","Are you sure you want to leave this company? This action cannot be undone.","confirmLabel","Leave","cancelLabel","Cancel",3,"confirmed","cancelled","isDark"]],template:function(r,i){if(r&1&&(g(0,"div",3)(1,"div",4)(2,"div",5)(3,"div",6)(4,"div",7)(5,"div",8),ue(),g(6,"svg",9),Q(7,"circle",10)(8,"path",11),m()(),Ye(),g(9,"div")(10,"h2",12),E(11,"User Details"),m(),g(12,"p",13),E(13,"Manage your personal information"),m()()(),U(14,vK,4,0,"button",14),m(),g(15,"div",15)(16,"div",16),E(17),tt(18,"slice"),tt(19,"uppercase"),m(),g(20,"div",17)(21,"p",18),E(22),m(),g(23,"p",19),E(24),m(),g(25,"span",20),ue(),g(26,"svg",21),Q(27,"rect",22)(28,"path",23),m(),E(29),tt(30,"async"),m()()(),U(31,yK,28,11,"div",24),m(),Ye(),g(32,"div",5)(33,"div",6)(34,"div",7)(35,"div",25),ue(),g(36,"svg",26),Q(37,"rect",27)(38,"path",28),m()(),Ye(),g(39,"div")(40,"h2",12),E(41,"Organizations"),m(),g(42,"p",13),E(43,"Workspaces you're a member of"),m()()(),g(44,"span",29),E(45),tt(46,"async"),m()(),U(47,CK,9,2,"div",30),tt(48,"async"),Ca(49,EK,2,0,"p",31),m()()(),U(50,kK,35,7,"div",32),U(51,TK,3,3,"div",32),g(52,"div",null,0),Q(54,"proxy-toast",33),m()),r&2){let o,a,s,l;We("dark",i.isDark),x(14),B(i.isEditing?-1:14),x(3),Ce(" ",ot(19,17,df(18,13,i.previousName||"U",0,2))," "),x(5),Ce(" ",i.previousName||"User"," "),x(2),Ce(" ",(o=i.clientForm.get("email"))==null?null:o.value," "),x(5),Ce(" ",((a=ot(30,19,i.userDetails$))==null||a.c_companies==null?null:a.c_companies.length)||0," Organizations "),x(2),B(i.isEditing?-1:31),x(14),Ce(" ",((s=ot(46,21,i.userDetails$))==null||s.c_companies==null?null:s.c_companies.length)||0," total "),x(2),B(!((l=ot(48,23,i.userDetails$))==null||l.c_companies==null)&&l.c_companies.length?47:49),x(3),B(i.isEditing?50:-1),x(),B(i.confirmDialogCompanyId()?51:-1),x(3),te("theme",i.theme())}},dependencies:[wn,nr,Oo,$n,er,tr,Rn,hr,Nl,V4,Zi,Hv,Gv],styles:[`@charset "UTF-8"; +`],encapsulation:2,changeDetection:0})}}return e})();var IK=(e,n)=>n.id;function AK(e,n){e&1&&(g(0,"p",13),E(1,"Name is required"),m())}function MK(e,n){if(e&1&&(g(0,"option",18),E(1),m()),e&2){let t=n.$implicit;te("value",t.id.toString()),x(),_t(t.name)}}function RK(e,n){e&1&&(g(0,"p",13),E(1,"Email is required"),m())}function PK(e,n){e&1&&(g(0,"p",13),E(1,"Enter a valid email address"),m())}function OK(e,n){e&1&&(g(0,"p",13),E(1,"Enter a valid mobile with country code"),m())}var B4=(()=>{class e{constructor(){this.authToken="",this.theme="",this.roles=et([]),this.store=A(dn),this.fb=A(vh),this.cdr=A(cn),this.destroyRef=A(an),this._hostEl=null,this._selfRef=null,this._systemDark=et(typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches),this.isDark=Wt(()=>this.theme===xt.Dark?!0:this.theme===xt.Light?!1:this._systemDark())}ngOnInit(){if(this.form=this.fb.group({name:["",he.required],email:["",[he.required,he.email]],mobileNumber:["",[he.pattern(/^(\+?[1-9]\d{1,14}|[0-9]{10})$/)]],role:[""]}),this._hostEl&&this._hostEl.classList.toggle("dark",this.isDark()),this.store.dispatch(ne.getRoles({authToken:this.authToken,itemsPerPage:1e3})),this.store.pipe(ke(mg),Ie(Le),_n(this.destroyRef)).subscribe(t=>{t?.data?.data&&(this.roles.set(t.data.data),this.cdr.markForCheck())}),this.store.pipe(ke(gg),Ie(Le),_n(this.destroyRef)).subscribe(t=>{t&&this.close()}),typeof window<"u"){let t=window.matchMedia("(prefers-color-scheme: dark)"),r=i=>{this._systemDark.set(i.matches),this._hostEl&&this._hostEl.classList.toggle("dark",this.isDark()),this.cdr.markForCheck()};t.addEventListener("change",r),this.destroyRef.onDestroy(()=>t.removeEventListener("change",r))}}ngOnDestroy(){this._hostEl?.remove(),this._hostEl=null}save(){if(!this.form.valid){this.form.markAllAsTouched();return}let t=this.form.value;this.store.dispatch(ne.addUser({payload:{user:{name:t.name,email:t.email,mobile:t.mobileNumber||""},role_id:t.role},authToken:this.authToken}))}close(){this._selfRef&&(this._selfRef.destroy(),this._selfRef=null)}static open(t,r,i){BA();let o=document.createElement("div");o.setAttribute("data-widget-overlay",""),o.classList.toggle("dark",i.theme===xt.Dark?!0:i.theme===xt.Light?!1:window.matchMedia("(prefers-color-scheme: dark)").matches),document.body.appendChild(o);let a=gf(e,{environmentInjector:r,hostElement:o});return a.instance.authToken=i.authToken,a.instance.theme=i.theme,a.instance._hostEl=o,a.instance._selfRef=a,t.attachView(a.hostView),a.changeDetectorRef.detectChanges(),a}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["add-user-dialog"]],decls:52,vars:6,consts:[["aria-hidden","true",1,"w-dialog-backdrop",3,"click"],["role","dialog","aria-labelledby","add-user-dialog-title","aria-modal","true",1,"w-dialog-panel"],[1,"w-dialog-header"],["id","add-user-dialog-title",1,"text-base","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close dialog",1,"w-btn-close",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5"],["d","M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"],[1,"w-dialog-body","space-y-5"],[1,"space-y-5",3,"formGroup"],[1,"grid","grid-cols-1","gap-5","sm:grid-cols-2"],["for","au-name",1,"w-label"],["aria-hidden","true",1,"text-red-500"],["id","au-name","formControlName","name","type","text","placeholder","Jane Smith",1,"w-input"],["role","alert",1,"w-field-error"],["for","au-role",1,"w-label"],[1,"relative"],["id","au-role","formControlName","role",1,"w-select"],["value",""],[3,"value"],[1,"pointer-events-none","absolute","inset-y-0","right-0","flex","items-center","pr-2.5"],["viewBox","0 0 20 20","fill","currentColor",1,"size-4","text-gray-400"],["fill-rule","evenodd","d","M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule","evenodd"],["for","au-email",1,"w-label"],["id","au-email","formControlName","email","type","email","placeholder","jane@company.com",1,"w-input"],["for","au-mobile",1,"w-label"],[1,"font-normal","text-gray-400","dark:text-gray-500"],["id","au-mobile","formControlName","mobileNumber","type","tel","placeholder","917001002003",1,"w-input"],[1,"mt-1.5","text-xs","text-gray-500","dark:text-gray-400"],[1,"w-dialog-footer"],["type","button",1,"w-btn-secondary",3,"click"],["type","button",1,"w-btn-primary",3,"click","disabled"]],template:function(r,i){if(r&1&&(g(0,"div",0),J("click",function(){return i.close()}),m(),g(1,"div",1)(2,"div",2)(3,"h2",3),E(4," Add Member "),m(),g(5,"button",4),J("click",function(){return i.close()}),ue(),g(6,"svg",5),Q(7,"path",6),m()()(),Ye(),g(8,"div",7)(9,"form",8)(10,"div",9)(11,"div")(12,"label",10),E(13," Full name "),g(14,"span",11),E(15,"*"),m()(),Q(16,"input",12),U(17,AK,2,0,"p",13),m(),g(18,"div")(19,"label",14),E(20,"Role"),m(),g(21,"div",15)(22,"select",16)(23,"option",17),E(24,"Select role"),m(),Rt(25,MK,2,2,"option",18,IK),m(),g(27,"div",19),ue(),g(28,"svg",20),Q(29,"path",21),m()()()()(),Ye(),g(30,"div")(31,"label",22),E(32," Email address "),g(33,"span",11),E(34,"*"),m()(),Q(35,"input",23),U(36,RK,2,0,"p",13),U(37,PK,2,0,"p",13),m(),g(38,"div")(39,"label",24),E(40," Mobile "),g(41,"span",25),E(42,"(optional)"),m()(),Q(43,"input",26),U(44,OK,2,0,"p",13),g(45,"p",27),E(46," Include country code, e.g. 917001002003 "),m()()()(),g(47,"div",28)(48,"button",29),J("click",function(){return i.close()}),E(49,"Cancel"),m(),g(50,"button",30),J("click",function(){return i.save()}),E(51," Add Member "),m()()()),r&2){let o,a,s,l;x(9),te("formGroup",i.form),x(8),B((o=i.form.get("name"))!=null&&o.touched&&((o=i.form.get("name"))!=null&&o.hasError("required"))?17:-1),x(8),Pt(i.roles()),x(11),B((a=i.form.get("email"))!=null&&a.touched&&((a=i.form.get("email"))!=null&&a.hasError("required"))?36:-1),x(),B((s=i.form.get("email"))!=null&&s.touched&&((s=i.form.get("email"))!=null&&s.hasError("email"))?37:-1),x(7),B((l=i.form.get("mobileNumber"))!=null&&l.touched&&((l=i.form.get("mobileNumber"))!=null&&l.hasError("pattern"))?44:-1),x(6),te("disabled",i.form.invalid)}},dependencies:[wn,nr,Oo,Zs,Ks,$n,No,er,tr,Rn,hr],encapsulation:2,changeDetection:0})}}return e})();var $4=(()=>{class e{constructor(){this.openAddUser$=new qe,this._pendingConfig=null,this._appRef=A(pr),this._injector=A(Ut),!(typeof window>"u")&&window.addEventListener("openAddUserDialog",t=>{let r={authToken:t.detail?.authToken??"",theme:t.detail?.theme??""};this.openAddUser$.observed?this.openAddUser$.next():this._openStandaloneDialog(r)})}consumePending(){let t=this._pendingConfig;return this._pendingConfig=null,t}_openStandaloneDialog(t){B4.open(this._appRef,this._injector,{authToken:t.authToken,theme:t.theme??""})}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Ci=(function(e){return e.Members="members",e.Roles="roles",e.Permissions="permissions",e})(Ci||{});var NK=["mainDialogPortal"],FK=["confirmDialogPortal"],LK=["toastPortal"],z4=()=>[1,2,3],H4=()=>[1,2,3,4,5],jK=e=>[e],yg=(e,n)=>n.id;function VK(e,n){e&1&&(g(0,"header",5)(1,"div",11)(2,"div",12)(3,"div",13),ue(),g(4,"svg",14),Q(5,"path",15),m()(),Ye(),g(6,"h1",16),E(7,"Team Settings"),m()()()())}function UK(e,n){if(e&1){let t=be();g(0,"div",17)(1,"nav",18)(2,"button",19),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Members))}),ue(),g(3,"svg",20),Q(4,"path",21),m(),E(5," Members "),m(),Ye(),g(6,"button",19),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Roles))}),ue(),g(7,"svg",20),Q(8,"path",22),m(),E(9," Roles "),m(),Ye(),g(10,"button",19),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Permissions))}),ue(),g(11,"svg",20),Q(12,"path",23),m(),E(13," Permissions "),m()()(),Ye(),g(14,"aside",24)(15,"nav",25)(16,"button",26),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Members))}),ue(),g(17,"svg",27),Q(18,"path",28),m(),E(19," Members "),m(),Ye(),g(20,"button",26),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Roles))}),ue(),g(21,"svg",27),Q(22,"path",29),m(),E(23," Roles "),m(),Ye(),g(24,"button",26),J("click",function(){W(t);let i=k();return Z(i.tabChange(i.UserManagementTab.Permissions))}),ue(),g(25,"svg",27),Q(26,"path",30),m(),E(27," Permissions "),m()()()}if(e&2){let t=k();x(2),te("ngClass",t.activeTab===t.UserManagementTab.Members?"border-indigo-500 text-indigo-600 dark:text-indigo-400 dark:border-indigo-400":"border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-200"),lt("aria-current",t.activeTab===t.UserManagementTab.Members?t.ariaCurrent:null),x(),te("ngClass",t.activeTab===t.UserManagementTab.Members?"text-indigo-500 dark:text-indigo-400":"text-gray-400 hover:text-gray-500"),x(3),te("ngClass",t.activeTab===t.UserManagementTab.Roles?"border-indigo-500 text-indigo-600 dark:text-indigo-400 dark:border-indigo-400":"border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-200"),lt("aria-current",t.activeTab===t.UserManagementTab.Roles?t.ariaCurrent:null),x(),te("ngClass",t.activeTab===t.UserManagementTab.Roles?"text-indigo-500 dark:text-indigo-400":"text-gray-400 hover:text-gray-500"),x(3),te("ngClass",t.activeTab===t.UserManagementTab.Permissions?"border-indigo-500 text-indigo-600 dark:text-indigo-400 dark:border-indigo-400":"border-transparent text-gray-500 dark:text-gray-400 hover:border-gray-300 hover:text-gray-700 dark:hover:text-gray-200"),lt("aria-current",t.activeTab===t.UserManagementTab.Permissions?t.ariaCurrent:null),x(),te("ngClass",t.activeTab===t.UserManagementTab.Permissions?"text-indigo-500 dark:text-indigo-400":"text-gray-400 hover:text-gray-500"),x(5),te("ngClass",t.activeTab===t.UserManagementTab.Members?"bg-indigo-50 dark:bg-indigo-900/30 text-indigo-600 dark:text-indigo-400 font-semibold":"text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 hover:text-indigo-600 dark:hover:text-indigo-400"),lt("aria-current",t.activeTab===t.UserManagementTab.Members?t.ariaCurrent:null),x(4),te("ngClass",t.activeTab===t.UserManagementTab.Roles?"bg-indigo-50 dark:bg-indigo-900/30 text-indigo-600 dark:text-indigo-400 font-semibold":"text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 hover:text-indigo-600 dark:hover:text-indigo-400"),lt("aria-current",t.activeTab===t.UserManagementTab.Roles?t.ariaCurrent:null),x(4),te("ngClass",t.activeTab===t.UserManagementTab.Permissions?"bg-indigo-50 dark:bg-indigo-900/30 text-indigo-600 dark:text-indigo-400 font-semibold":"text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 hover:text-indigo-600 dark:hover:text-indigo-400"),lt("aria-current",t.activeTab===t.UserManagementTab.Permissions?t.ariaCurrent:null)}}function BK(e,n){if(e&1){let t=be();g(0,"button",41),J("click",function(){W(t);let i=k(2);return Z(i.addUser())}),ue(),g(1,"svg",42),Q(2,"path",43),m(),E(3," Invite member "),m()}}function $K(e,n){e&1&&(g(0,"div",44)(1,"div",45),Q(2,"div",46),g(3,"div",47),Q(4,"div",48)(5,"div",49),m()(),g(6,"div",50),Q(7,"div",51)(8,"div",52)(9,"div",53),m()())}function zK(e,n){e&1&&(g(0,"div",39),Rt(1,$K,10,0,"div",44,fr),m()),e&2&&(x(),Pt(Ms(0,z4)))}function HK(e,n){e&1&&(g(0,"div",54),ue(),g(1,"svg",56),Q(2,"path",57),m(),Ye(),g(3,"p",58),E(4,"No team members yet"),m(),g(5,"p",33),E(6,"Invite someone to get started."),m()())}function GK(e,n){if(e&1){let t=be();g(0,"button",70),J("click",function(){W(t);let i=k(),o=i.$implicit,a=i.$index,s=k(3);return Z(s.editUser(o,a))}),E(1," Edit"),g(2,"span",71),E(3),m()()}if(e&2){let t=k().$implicit;x(3),Ce(", ",t.name)}}function qK(e,n){if(e&1){let t=be();g(0,"button",72),J("click",function(){W(t);let i=k(),o=i.$implicit,a=i.$index,s=k(3);return Z(s.deleteUser(o,a))}),E(1," Remove"),g(2,"span",71),E(3),m()()}if(e&2){let t=k().$implicit;x(3),Ce(", ",t.name)}}function WK(e,n){if(e&1&&(g(0,"div",55)(1,"div",45)(2,"div",59),E(3),m(),g(4,"div",60)(5,"p",61),E(6),m(),g(7,"p",62),ue(),g(8,"svg",63),Q(9,"path",64)(10,"path",65),m(),E(11),m()()(),Ye(),g(12,"div",66)(13,"span",67),E(14),m(),U(15,GK,4,1,"button",68),U(16,qK,4,1,"button",69),m()()),e&2){let t=n.$implicit,r=k(3);x(3),Ce(" ",(t.name||t.email||"?").charAt(0).toUpperCase()," "),x(3),Ce(" ",t.name||"\u2014"," "),x(5),Ce(" ",t.email," "),x(3),Ce(" ",t.role||"Member"," "),x(),B(r.canEditUser?15:-1),x(),B(r.canRemoveUser?16:-1)}}function ZK(e,n){if(e&1&&(U(0,HK,7,0,"div",54),g(1,"div",39),Rt(2,WK,17,6,"div",55,fr),m()),e&2){let t=k(2);B(t.userData.length===0?0:-1),x(2),Pt(t.userData)}}function KK(e,n){if(e&1){let t=be();g(0,"nav",40)(1,"p",73),E(2," Showing "),g(3,"span",74),E(4),m(),E(5,"\u2013"),g(6,"span",74),E(7),m(),E(8," of "),g(9,"span",74),E(10),m()(),g(11,"div",75)(12,"button",76),J("click",function(){W(t);let i=k(2);return Z(i.onUsersPageChange({pageIndex:i.currentPageIndex-1,pageSize:i.currentPageSize,length:i.totalUsers}))}),E(13," Previous "),m(),g(14,"button",76),J("click",function(){W(t);let i=k(2);return Z(i.onUsersPageChange({pageIndex:i.currentPageIndex+1,pageSize:i.currentPageSize,length:i.totalUsers}))}),E(15," Next "),m()()()}if(e&2){let t=k(2);x(4),_t(t.currentPageIndex*t.currentPageSize+1),x(3),_t((t.currentPageIndex+1)*t.currentPageSize>t.totalUsers?t.totalUsers:(t.currentPageIndex+1)*t.currentPageSize),x(3),_t(t.totalUsers),x(2),te("disabled",t.currentPageIndex===0),x(2),te("disabled",(t.currentPageIndex+1)*t.currentPageSize>=t.totalUsers)}}function YK(e,n){if(e&1){let t=be();g(0,"div")(1,"div",31)(2,"div")(3,"h2",32),E(4,"Team members"),m(),g(5,"p",33),E(6,"Manage who has access to this workspace."),m()(),U(7,BK,4,0,"button",34),m(),g(8,"div",35),ue(),g(9,"svg",36),Q(10,"path",37),m(),Ye(),g(11,"input",38),As("ngModelChange",function(i){W(t);let o=k();return Ac(o.searchTerm,i)||(o.searchTerm=i),Z(i)}),J("input",function(){W(t);let i=k();return Z(i.applyFilter())}),m()(),U(12,zK,3,1,"div",39),U(13,ZK,4,1),U(14,KK,16,5,"nav",40),m()}if(e&2){let t=k();x(7),B(t.canAddUser?7:-1),x(4),Is("ngModel",t.searchTerm),x(),B(t.isUsersLoading&&!t.skipSkeletonLoading?12:-1),x(),B(!t.isUsersLoading||t.skipSkeletonLoading?13:-1),x(),B(t.totalUsers>t.currentPageSize?14:-1)}}function QK(e,n){if(e&1&&Q(0,"div",85),e&2){let t=n.$implicit;st("width",50+t*8,"px")}}function XK(e,n){e&1&&(g(0,"div",78)(1,"div",79)(2,"div",80),Q(3,"div",81)(4,"div",82),m(),Q(5,"div",52),m(),g(6,"div",83),Rt(7,QK,1,2,"div",84,fr),m()()),e&2&&(x(7),Pt(Ms(0,H4)))}function JK(e,n){e&1&&(g(0,"div",39),Rt(1,XK,9,1,"div",78,fr),m()),e&2&&(x(),Pt(Ms(0,z4)))}function eY(e,n){e&1&&(g(0,"div",86),E(1,"No roles found"),m())}function tY(e,n){e&1&&(g(0,"span",92),E(1,"Default"),m(),g(2,"span",92),E(3,"Default"),m())}function nY(e,n){if(e&1&&(g(0,"span",94),ue(),g(1,"svg",95),Q(2,"path",96),m(),E(3),m()),e&2){let t=n.$implicit,r=n.$index;Ea(qt(3,jK,r%6===0?"bg-indigo-50 text-indigo-700 dark:bg-indigo-900/40 dark:text-indigo-300":r%6===1?"bg-teal-50 text-teal-700 dark:bg-teal-900/40 dark:text-teal-300":r%6===2?"bg-orange-50 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300":r%6===3?"bg-green-50 text-green-700 dark:bg-green-900/40 dark:text-green-300":r%6===4?"bg-purple-50 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300":"bg-rose-50 text-rose-700 dark:bg-rose-900/40 dark:text-rose-300").join(" ")),x(3),Ce(" ",t.name," ")}}function rY(e,n){if(e&1&&(g(0,"div",83),Rt(1,nY,4,5,"span",93,yg),m()),e&2){let t=k().$implicit;x(),Pt(t.c_permissions)}}function iY(e,n){e&1&&(g(0,"p",91),E(1,"No permissions assigned"),m())}function oY(e,n){if(e&1){let t=be();g(0,"div",87)(1,"div",79)(2,"div",88)(3,"span",89),E(4),m(),U(5,tY,4,0),m(),g(6,"button",90),J("click",function(){let i=W(t),o=i.$implicit,a=i.$index,s=k(3);return Z(s.editRole(o,a))}),E(7," Edit "),m()(),U(8,rY,3,0,"div",83)(9,iY,2,0,"p",91),m()}if(e&2){let t=n.$implicit;x(4),_t(t.name),x(),B(t.is_default?5:-1),x(),te("disabled",t.is_default),x(2),B(t.c_permissions!=null&&t.c_permissions.length?8:9)}}function aY(e,n){if(e&1&&(U(0,eY,2,0,"div",86),g(1,"div",39),Rt(2,oY,10,4,"div",87,fr),m()),e&2){let t=k(2);B(t.filteredRolesData.length===0?0:-1),x(2),Pt(t.filteredRolesData)}}function sY(e,n){if(e&1){let t=be();g(0,"div")(1,"div",31)(2,"div")(3,"h2",32),E(4,"Roles"),m(),g(5,"p",33),E(6,"Define roles and their associated permissions."),m()(),g(7,"button",41),J("click",function(){W(t);let i=k();return Z(i.openAddRoleDialog())}),ue(),g(8,"svg",42),Q(9,"path",43),m(),E(10," Add role "),m()(),Ye(),g(11,"div",35),ue(),g(12,"svg",36),Q(13,"path",37),m(),Ye(),g(14,"input",77),As("ngModelChange",function(i){W(t);let o=k();return Ac(o.roleSearchTerm,i)||(o.roleSearchTerm=i),Z(i)}),J("input",function(){W(t);let i=k();return Z(i.applyRoleFilter())}),m()(),U(15,JK,3,1,"div",39),U(16,aY,4,1),m()}if(e&2){let t=k();x(14),Is("ngModel",t.roleSearchTerm),x(),B(t.isRolesLoading?15:-1),x(),B(t.isRolesLoading?-1:16)}}function lY(e,n){e&1&&(g(0,"div",44)(1,"div",98),Q(2,"div",99)(3,"div",100),m(),Q(4,"div",52),m())}function cY(e,n){e&1&&(g(0,"div",39),Rt(1,lY,5,0,"div",44,fr),m()),e&2&&(x(),Pt(Ms(0,H4)))}function dY(e,n){e&1&&(g(0,"div",86),E(1,"No permissions found"),m())}function uY(e,n){if(e&1){let t=be();g(0,"div",101)(1,"div",102)(2,"div",103),ue(),g(3,"svg",104),Q(4,"path",96),m()(),Ye(),g(5,"p",105),E(6),m()(),g(7,"button",106),J("click",function(){let i=W(t),o=i.$implicit,a=i.$index,s=k(3);return Z(s.editPermission(o,a))}),E(8," Edit "),m()()}if(e&2){let t=n.$implicit;x(6),Ce(" ",t.name," ")}}function pY(e,n){if(e&1&&(U(0,dY,2,0,"div",86),g(1,"div",39),Rt(2,uY,9,1,"div",101,fr),m()),e&2){let t=k(2);B(t.filteredPermissionsData.length===0?0:-1),x(2),Pt(t.filteredPermissionsData)}}function fY(e,n){if(e&1){let t=be();g(0,"div")(1,"div",31)(2,"div")(3,"h2",32),E(4,"Permissions"),m(),g(5,"p",33),E(6,"Granular access controls that can be assigned to roles."),m()(),g(7,"button",41),J("click",function(){W(t);let i=k();return Z(i.openAddPermissionDialog())}),ue(),g(8,"svg",42),Q(9,"path",43),m(),E(10," Add permission "),m()(),Ye(),g(11,"div",35),ue(),g(12,"svg",36),Q(13,"path",37),m(),Ye(),g(14,"input",97),As("ngModelChange",function(i){W(t);let o=k();return Ac(o.permissionSearchTerm,i)||(o.permissionSearchTerm=i),Z(i)}),J("input",function(){W(t);let i=k();return Z(i.applyPermissionFilter())}),m()(),U(15,cY,3,1,"div",39),U(16,pY,4,1),m()}if(e&2){let t=k();x(14),Is("ngModel",t.permissionSearchTerm),x(),B(t.isPermissionsLoading?15:-1),x(),B(t.isPermissionsLoading?-1:16)}}function hY(e,n){e&1&&(g(0,"p",122),E(1,"Role name is required"),m())}function gY(e,n){e&1&&(g(0,"p",125),E(1," No permissions available "),m())}function mY(e,n){if(e&1){let t=be();g(0,"label",126)(1,"input",131),J("change",function(i){let o=W(t).$implicit,a=k(3);return Z(a.onPermissionCheckboxChange("addRoleForm",o.id,i))}),m(),g(2,"span",132),E(3),m()()}if(e&2){let t,r=n.$implicit,i=k(3);x(),te("value",r.id)("checked",(t=i.addRoleForm.get("permission"))==null||t.value==null?null:t.value.includes(r.id)),x(2),_t(r.name)}}function _Y(e,n){e&1&&(g(0,"p",127),E(1,"At least one permission is required"),m())}function vY(e,n){if(e&1&&(g(0,"form",115)(1,"div")(2,"label",119),E(3,"Role name "),g(4,"span",120),E(5,"*"),m()(),Q(6,"input",121),U(7,hY,2,0,"p",122),m(),g(8,"div")(9,"label",123),E(10,"Permissions "),g(11,"span",120),E(12,"*"),m()(),g(13,"div",124),U(14,gY,2,0,"p",125),Rt(15,mY,4,3,"label",126,yg),m(),U(17,_Y,2,0,"p",127),m(),g(18,"div")(19,"label",128),E(20,"Description "),g(21,"span",129),E(22,"(optional)"),m()(),Q(23,"textarea",130),m()()),e&2){let t,r,i=k(2);te("formGroup",i.addRoleForm),x(7),B((t=i.addRoleForm.get("roleName"))!=null&&t.touched&&((t=i.addRoleForm.get("roleName"))!=null&&t.hasError("required"))?7:-1),x(7),B(i.permissions.length===0?14:-1),x(),Pt(i.permissions),x(2),B((r=i.addRoleForm.get("permission"))!=null&&r.touched&&((r=i.addRoleForm.get("permission"))!=null&&r.hasError("required"))?17:-1)}}function yY(e,n){e&1&&(g(0,"p",135),E(1,"Permission name is required"),m())}function xY(e,n){if(e&1&&(g(0,"form",115)(1,"div")(2,"label",133),E(3,"Permission name "),g(4,"span",120),E(5,"*"),m()(),Q(6,"input",134),U(7,yY,2,0,"p",135),m(),g(8,"div")(9,"label",128),E(10,"Description "),g(11,"span",129),E(12,"(optional)"),m()(),Q(13,"textarea",136),m()()),e&2){let t,r=k(2);te("formGroup",r.addPermissionTabForm),x(7),B((t=r.addPermissionTabForm.get("permission"))!=null&&t.touched&&((t=r.addPermissionTabForm.get("permission"))!=null&&t.hasError("required"))?7:-1)}}function bY(e,n){e&1&&(g(0,"p",140),E(1,"Name is required"),m())}function wY(e,n){if(e&1&&(g(0,"option",145),E(1),m()),e&2){let t=n.$implicit;te("value",t.id.toString()),x(),_t(t.name)}}function CY(e,n){e&1&&(g(0,"p",151),E(1,"Email is required"),m())}function EY(e,n){e&1&&(g(0,"p",127),E(1,"Enter a valid email address"),m())}function DY(e,n){e&1&&(g(0,"p",154),E(1," Enter a valid mobile with country code "),m())}function SY(e,n){if(e&1){let t=be();g(0,"label",126)(1,"input",131),J("change",function(i){let o=W(t).$implicit,a=k(4);return Z(a.onPermissionCheckboxChange("addUserForm",o.id,i))}),m(),g(2,"span",132),E(3),m()()}if(e&2){let t,r=n.$implicit,i=k(4);x(),te("value",r.id)("checked",(t=i.addUserForm.get("permission"))==null||t.value==null?null:t.value.includes(r.id)),x(2),_t(r.name)}}function kY(e,n){if(e&1&&(g(0,"div")(1,"label",156),E(2,"Additional permissions"),m(),g(3,"div",157),Rt(4,SY,4,3,"label",126,yg),m()()),e&2){let t=k(3);x(4),Pt(t.getAvailableAdditionalPermissions())}}function TY(e,n){if(e&1&&(g(0,"form",115)(1,"div",137)(2,"div")(3,"label",138),E(4,"Full name "),g(5,"span",120),E(6,"*"),m()(),Q(7,"input",139),U(8,bY,2,0,"p",140),m(),g(9,"div")(10,"label",141),E(11,"Role"),m(),g(12,"div",142)(13,"select",143)(14,"option",144),E(15,"Select role"),m(),Rt(16,wY,2,2,"option",145,yg),m(),g(18,"div",146),ue(),g(19,"svg",147),Q(20,"path",148),m()()()()(),Ye(),g(21,"div")(22,"label",149),E(23,"Email address "),g(24,"span",120),E(25,"*"),m()(),Q(26,"input",150),U(27,CY,2,0,"p",151),U(28,EY,2,0,"p",127),m(),g(29,"div")(30,"label",152),E(31," Mobile "),g(32,"span",129),E(33,"(optional)"),m()(),Q(34,"input",153),U(35,DY,2,0,"p",154),g(36,"p",155),E(37," Include country code, e.g. 917001002003 "),m()(),U(38,kY,6,0,"div"),m()),e&2){let t,r,i,o,a=k(2);te("formGroup",a.addUserForm),x(7),lt("readonly",a.isEditUser?"":null)("aria-readonly",a.isEditUser?"true":null),x(),B((t=a.addUserForm.get("name"))!=null&&t.touched&&((t=a.addUserForm.get("name"))!=null&&t.hasError("required"))?8:-1),x(8),Pt(a.roles),x(10),lt("readonly",a.isEditUser?"":null)("aria-readonly",a.isEditUser?"true":null),x(),B((r=a.addUserForm.get("email"))!=null&&r.touched&&((r=a.addUserForm.get("email"))!=null&&r.hasError("required"))?27:-1),x(),B((i=a.addUserForm.get("email"))!=null&&i.touched&&((i=a.addUserForm.get("email"))!=null&&i.hasError("email"))?28:-1),x(6),lt("readonly",a.isEditUser?"":null)("aria-readonly",a.isEditUser?"true":null),x(),B((o=a.addUserForm.get("mobileNumber"))!=null&&o.touched&&((o=a.addUserForm.get("mobileNumber"))!=null&&o.hasError("pattern"))?35:-1),x(3),B(a.isEditUser&&a.getAvailableAdditionalPermissions().length>0?38:-1)}}function IY(e,n){if(e&1){let t=be();g(0,"div",null,2)(2,"div",107),J("click",function(){W(t);let i=k();return Z(i.closeDialog())}),m(),g(3,"div",108)(4,"div",109)(5,"h2",110),E(6),m(),g(7,"button",111),J("click",function(){W(t);let i=k();return Z(i.closeDialog())}),ue(),g(8,"svg",112),Q(9,"path",113),m()()(),Ye(),g(10,"div",114),U(11,vY,24,4,"form",115),U(12,xY,14,2,"form",115),U(13,TY,39,12,"form",115),m(),g(14,"div",116)(15,"button",117),J("click",function(){W(t);let i=k();return Z(i.closeDialog())}),E(16,"Cancel"),m(),g(17,"button",118),J("click",function(){W(t);let i=k();return Z(i.getSaveAction())}),E(18),m()()()()}if(e&2){let t=k();We("dark",t.isDark),x(6),Ce(" ",t.getDialogTitle()," "),x(5),B(t.isEditRole?11:-1),x(),B(t.isEditPermission?12:-1),x(),B(t.isEditUser||!t.isEditRole&&!t.isEditPermission?13:-1),x(4),te("disabled",t.getFormInvalid()),x(),Ce(" ",t.getSaveButtonText()," ")}}function AY(e,n){if(e&1){let t=be();g(0,"div",null,3)(2,"div",107),J("click",function(){W(t);let i=k();return Z(i.cancelDelete())}),m(),g(3,"div",158)(4,"div",159)(5,"div",160),ue(),g(6,"svg",161),Q(7,"path",162),m()(),Ye(),g(8,"div",163)(9,"h3",164),E(10," Remove member "),m(),g(11,"p",165),E(12," Are you sure you want to remove "),g(13,"span",166),E(14),m(),E(15,"? This action cannot be undone. "),m()()(),g(16,"div",167)(17,"button",117),J("click",function(){W(t);let i=k();return Z(i.cancelDelete())}),E(18,"Cancel"),m(),g(19,"button",168),J("click",function(){W(t);let i=k();return Z(i.confirmDelete())}),E(20,"Remove"),m()()()()}if(e&2){let t=k();We("dark",t.isDark),x(14),_t(t.pendingDeleteUser==null?null:t.pendingDeleteUser.name)}}var G4=(()=>{class e{get isDark(){return this.themeService.isDark(this.theme())}constructor(){this.userToken=Se(),this.pass=Se(!1),this.theme=Se(),this.WidgetTheme=xt,this.UserManagementTab=Ci,this.ariaCurrent=["p","a","g","e"].join(""),this.exclude_role_ids=Se([]),this.include_role_ids=Se([]),this.isHidden=et(!1),this.showDialog=et(!1),this.showConfirmDialog=et(!1),this.themeService=A(Sn),this.availableTabs=Wt(()=>{let i=[Ci.Members];return this.pass()&&i.push(Ci.Roles,Ci.Permissions),i}),this.hasMultipleTabs=Wt(()=>this.availableTabs().length>1),this.pendingDeleteUser=null,this.pendingDeleteIndex=-1,this.pendingEditUser=null,this.roles=[],this.permissions=[],this.searchTerm="",this.searchSubject=new qe,this.roleSearchTerm="",this.filteredRolesData=[],this.permissionSearchTerm="",this.filteredPermissionsData=[],this.emailVisibility={},this.expandedRoles={},this.isEditRole=!1,this.isEditPermission=!1,this.isEditUser=!1,this.currentEditingUser=null,this.currentEditingPermission=null,this.userData=[],this.canRemoveUser=!1,this.canEditUser=!1,this.canAddUser=!1,this.totalUsers=0,this.currentPageIndex=0,this.currentPageSize=50,this.isUsersLoading=!0,this.isRolesLoading=!1,this.isPermissionsLoading=!1,this.skipSkeletonLoading=!1,this.activeTab=Ci.Members,this.destroyRef=A(an),this.fb=A(vh),this.cdr=A(cn),this.store=A(dn),this.toastService=A(Go),this.widgetPortal=A(vi),this.bridge=A($4),this.mainDialogRef=null,this.confirmDialogRef=null,this.toastPortalRef=null,sn(()=>this.themeService.setInputTheme(this.theme())),this.store.pipe(ke(mg),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.roles=i.data?.data,this.defaultRoles=i.data?.default_roles,this.filteredRolesData=[...this.roles],this.isRolesLoading=!1,this.pendingEditUser&&(this.patchEditUserForm(this.pendingEditUser),this.pendingEditUser=null),this.cdr.markForCheck())}),this.store.pipe(ke(b4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.permissions=i.data.data,this.filteredPermissionsData=[...this.permissions],this.isPermissionsLoading=!1,this.cdr.markForCheck())}),this.store.pipe(ke(w4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{if(i){this.totalUsers=i.data?.totalEntityCount||0,this.canRemoveUser=i.data?.permissionToRemoveUser,this.canAddUser=i.data?.permissionToAddUser,this.canEditUser=i.data?.permissionToEditUser,this.userData=i.data?.users||[];let o=i.data?.pageNo,a=i.data?.itemsPerPage;o!==void 0&&(this.currentPageIndex=o-1),a!==void 0&&(this.currentPageSize=parseInt(a,10)||10),this.cdr.markForCheck()}}),this.store.pipe(ke(C4),_n(this.destroyRef)).subscribe(i=>{this.isUsersLoading=!i,this.cdr.markForCheck()}),this.store.pipe(ke(gg),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getCompanyUsers(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(y4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getRoles(),this.refreshFormData(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(x4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getPermissions(),this.refreshFormData(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(D4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getPermissions(),this.refreshFormData(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(S4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getRoles(),this.refreshFormData(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(E4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getCompanyUsers(),this.skipSkeletonLoading=!1,this.cdr.markForCheck())}),this.store.pipe(ke(T4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getCompanyUsers(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.store.pipe(ke(I4),Ie(Le),_n(this.destroyRef)).subscribe(i=>{i&&(this.getCompanyUsers(),i?.data?.message&&this.toastService.success(i.data.message),this.cdr.markForCheck())}),this.searchSubject.pipe(go(300),Ie(),_n(this.destroyRef)).subscribe(i=>{this.getCompanyUsers(i),this.cdr.markForCheck()}),this.addUserForm=this.fb.group({name:["",he.required],email:["",[he.required,he.email]],mobileNumber:["",[he.pattern(/^(\+?[1-9]\d{1,14}|[0-9]{10})$/)]],role:[""],permission:[[]]}),this.addUserForm.get("role")?.valueChanges.pipe(_n(this.destroyRef)).subscribe(i=>{this.onRoleChange(i)}),this.addRoleForm=this.fb.group({roleName:["",he.required],description:[""],permission:[[],he.required]}),this.addPermissionTabForm=this.fb.group({permission:["",he.required],description:[""]});let t=()=>this.isHidden.set(!1),r=()=>this.isHidden.set(!0);this.bridge.openAddUser$.pipe(_n(this.destroyRef)).subscribe(()=>this.addUser()),this.bridge.consumePending()!==null&&Promise.resolve().then(()=>this.addUser()),window.addEventListener("showUserManagement",t),window.addEventListener("hideUserManagement",r),this.destroyRef.onDestroy(()=>{window.removeEventListener("showUserManagement",t),window.removeEventListener("hideUserManagement",r),this.mainDialogRef?.detach(),this.confirmDialogRef?.detach(),this.toastPortalRef?.detach(),this.showDialog.set(!1),this.showConfirmDialog.set(!1)})}ngOnInit(){this.getCompanyUsers()}ngAfterViewInit(){this.toastPortalEl?.nativeElement&&(this.toastPortalRef=this.widgetPortal.attach(this.toastPortalEl.nativeElement))}ngOnDestroy(){}tabChange(t){this.activeTab=t,t===Ci.Roles?(this.isRolesLoading=!0,this.getRoles()):t===Ci.Permissions?(this.isPermissionsLoading=!0,this.getPermissions()):t===Ci.Members&&this.getCompanyUsers()}deleteUser(t,r){this.pendingDeleteUser=t,this.pendingDeleteIndex=r,this.showConfirmDialog.set(!0),this.cdr.detectChanges(),this.confirmDialogPortalEl?.nativeElement&&(this.confirmDialogRef=this.widgetPortal.attach(this.confirmDialogPortalEl.nativeElement))}confirmDelete(){if(this.pendingDeleteUser){let t=this.pendingDeleteUser.user_id;this.userData=this.userData.filter(r=>r.user_id!==t),this.totalUsers=Math.max(0,this.totalUsers-1),this.store.dispatch(ne.deleteUser({companyId:t,authToken:this.userToken()}))}this.cancelDelete()}cancelDelete(){this.confirmDialogRef?.detach(),this.confirmDialogRef=null,this.pendingDeleteUser=null,this.pendingDeleteIndex=-1,this.showConfirmDialog.set(!1)}editUser(t,r){this.skipSkeletonLoading=!0,this.isEditUser=!0,this.isEditRole=!1,this.isEditPermission=!1,this.currentEditingUser=t,this.pendingEditUser=t,this.getRoles(),this.openDialog()}patchEditUserForm(t){let r=this.getRoleIdByName(t.role),i=this.getPermissionIdsByName(t.additionalpermissions||[]);this.addUserForm.patchValue({name:t.name,email:t.email,mobileNumber:t.mobile||"",role:r?r.toString():t.role||"",permission:i}),this.cdr.markForCheck()}getPermissionsTooltip(t){let r=t?.permissions?.length?`Permissions: +\u2022 ${t.permissions.join(` +\u2022 `)}`:"No permissions assigned";return t?.additionalpermissions?.length&&(r+=` + +Additional Permissions: ++ ${t.additionalpermissions.join(` ++ `)}`),r}applyFilter(){this.searchSubject.next(this.searchTerm)}clearSearch(){this.searchTerm="",this.applyFilter()}isEmailVisible(t){return this.emailVisibility[t]||!1}toggleEmailVisibility(t){this.emailVisibility[t]=!this.emailVisibility[t]}getRoleIdByName(t){return this.roles?.find(r=>r.name===t)?.id}getRoleNameById(t){return t&&this.roles?.find(r=>r.id===t)?.name||""}onRoleChange(t){let r=t?this.roles.find(i=>i.id===t)?.c_permissions?.map(i=>i.id)??[]:[];this.addUserForm.get("permission")?.setValue(r)}getPermissionIdsByName(t){return t.map(r=>this.permissions.find(o=>o.name===r)?.id).filter(r=>r!==void 0)}getPermissionNamesByIds(t){return t.map(r=>this.permissions.find(o=>o.id===r)?.name).filter(r=>r!==void 0)}openDialog(){this.showDialog.set(!0),this.cdr.detectChanges(),this.mainDialogPortalEl?.nativeElement&&(this.mainDialogRef=this.widgetPortal.attach(this.mainDialogPortalEl.nativeElement))}addUser(){this.getRoles(),this.isEditUser=!1,this.isEditRole=!1,this.isEditPermission=!1,this.currentEditingUser=null,this.addUserForm.reset(),this.defaultRoles?.default_member_role&&this.addUserForm.patchValue({role:this.defaultRoles.default_member_role}),this.openDialog()}closeDialog(){this.mainDialogRef?.detach(),this.mainDialogRef=null,this.showDialog.set(!1),this.isEditUser=!1,this.isEditRole=!1,this.isEditPermission=!1,this.currentEditingUser=null,this.currentEditingPermission=null}saveUser(){if(this.addUserForm.valid){let t=this.addUserForm.value,i=(t.role?this.getRoleById(t.role):null)?.name||t.role||"User";if((this.isEditUser||this.isEditRole)&&this.currentEditingUser){if(this.userData.findIndex(a=>a.userId===this.currentEditingUser.userId)!==-1){let a=this.currentEditingUser.mobile||"",s=t.mobileNumber||"",l={id:this.currentEditingUser.user_id,name:t.name};a!==s&&(l.mobile=s);let c={id:l.id,role_id:t.role},d={id:l.id,cpermissions:t.permission};this.store.dispatch(ne.updateUserRole({payload:c,authToken:this.userToken()})),this.store.dispatch(ne.updateUserPermission({payload:d,authToken:this.userToken()}))}}else{let o={userId:(this.userData.length+1).toString().padStart(3,"0"),name:t.name,email:t.email,mobileNumber:t.mobileNumber||"",role:i,permissions:this.getDefaultPermissions(i)},a={user:{name:o.name,email:o.email,mobile:o.mobileNumber},role_id:t.role};this.store.dispatch(ne.addUser({payload:a,authToken:this.userToken()}))}this.closeDialog()}}getRoleById(t){return this.roles.find(r=>r.id===t)}getVisiblePermissions(t){return!t||!t.c_permissions||t.c_permissions.length===0?[]:this.expandedRoles[t.id]||!1?t.c_permissions:t.c_permissions.slice(0,3)}getDefaultPermissions(t){switch(t){case"Admin":return["Full Access","User Management","System Settings","Reports"];case"Manager":return["User Management","Reports","View Settings"];case"User":return["Read Only","View Reports"];default:return["Read Only"]}}addRole(){this.isEditRole=!0,this.isEditPermission=!1,this.currentEditingUser=null,this.addRoleForm.reset(),this.openDialog()}saveAddRole(){if(!this.addRoleForm.valid)return;let t=this.addRoleForm.value;this.isEditRole&&this.currentEditingUser?this.store.dispatch(ne.updateRole({payload:{id:this.currentEditingUser.id,name:t.roleName,cpermissions:t.permission},authToken:this.userToken()})):this.store.dispatch(ne.createRole({name:t.roleName,permissions:this.getPermissionNamesByIds(t.permission),authToken:this.userToken()})),this.addRoleForm.reset(),this.closeDialog()}saveAddPermissionTab(){if(!this.addPermissionTabForm.valid)return;let t=this.addPermissionTabForm.value;this.isEditPermission&&this.currentEditingPermission?this.store.dispatch(ne.updatePermission({payload:{id:this.currentEditingPermission.id,name:t.permission},authToken:this.userToken()})):this.store.dispatch(ne.createPermission({name:t.permission,authToken:this.userToken()})),this.addPermissionTabForm.reset(),this.closeDialog()}onPermissionCheckboxChange(t,r,i){let o=i.target.checked,a=this[t],s=a.get("permission")?.value??[],l=o?[...s,r]:s.filter(c=>c!==r);a.get("permission")?.setValue(l),a.get("permission")?.markAsTouched()}getCompanyUsers(t){let r=this.currentPageSize,i=this.currentPageIndex,o=t?.trim()||void 0;this.store.dispatch(ne.getCompanyUsers({authToken:this.userToken(),itemsPerPage:r,pageNo:i,search:o,exclude_role_ids:this.exclude_role_ids(),include_role_ids:this.include_role_ids()}))}onUsersPageChange(t){this.currentPageIndex=t.pageIndex,this.currentPageSize=t.pageSize;let r=this.searchTerm?.trim()||void 0;this.store.dispatch(ne.getCompanyUsers({authToken:this.userToken(),itemsPerPage:t.pageSize,pageNo:t.pageIndex,search:r}))}getRoles(){this.store.dispatch(ne.getRoles({authToken:this.userToken(),itemsPerPage:1e3}))}onRolesPageChange(t){this.store.dispatch(ne.getRoles({authToken:this.userToken(),itemsPerPage:t.pageSize}))}getPermissions(){this.store.dispatch(ne.getPermissions({authToken:this.userToken(),itemsPerPage:1e3}))}refreshFormData(){setTimeout(()=>{this.filteredPermissionsData=[...this.permissions],this.filteredRolesData=[...this.roles],this.cdr.markForCheck()},100)}applyRoleFilter(){let t=this.roleSearchTerm.toLowerCase().trim();this.filteredRolesData=t?this.roles.filter(r=>r.name.toLowerCase().includes(t)||r.c_permissions?.some(i=>i.name.toLowerCase().includes(t))):[...this.roles]}editRole(t,r){this.currentEditingUser=t,this.isEditRole=!0,this.isEditPermission=!1,this.isEditUser=!1;let i=t.c_permissions?t.c_permissions.map(a=>a.id):[],o=()=>{this.addRoleForm.patchValue({roleName:t.name,description:`Description for ${t.name} role`,permission:i})};this.openDialog(),this.permissions?.length>0?o():setTimeout(o,500)}applyPermissionFilter(){let t=this.permissionSearchTerm.toLowerCase().trim();this.filteredPermissionsData=t?this.permissions.filter(r=>r.name.toLowerCase().includes(t)):[...this.permissions]}openAddPermissionDialog(){this.isEditPermission=!0,this.isEditRole=!1,this.currentEditingPermission=null,this.addPermissionTabForm.reset(),this.openDialog()}editPermission(t,r){this.currentEditingPermission=t,this.isEditPermission=!0,this.isEditRole=!1,this.addPermissionTabForm.patchValue({permission:t.name,description:`Description for ${t.name} permission`}),this.openDialog()}getDialogTitle(){return this.isEditPermission?this.currentEditingPermission?"Edit Permission":"Add New Permission":this.isEditRole?this.currentEditingUser?"Edit Role":"Add New Role":this.isEditUser?"Edit member":"Add New member"}getSaveAction(){this.isEditPermission?this.saveAddPermissionTab():this.isEditRole?this.saveAddRole():this.saveUser()}getFormInvalid(){return this.isEditPermission?this.addPermissionTabForm.invalid:this.isEditRole?this.addRoleForm.invalid:this.addUserForm.invalid}getSaveButtonText(){return this.isEditPermission?this.currentEditingPermission?"Update Permission":"Add Permission":this.isEditRole?this.currentEditingUser?"Update Role":"Add Role":this.isEditUser?"Update member":"Add member"}getAvailableAdditionalPermissions(){if(!this.currentEditingUser)return[];let r=this.roles.find(i=>i.name===this.currentEditingUser.role)?.c_permissions?.map(i=>i.name)??[];return this.permissions.filter(i=>!r.includes(i.name))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["user-management"]],viewQuery:function(r,i){if(r&1&&bn(NK,5)(FK,5)(LK,5),r&2){let o;Ot(o=Nt())&&(i.mainDialogPortalEl=o.first),Ot(o=Nt())&&(i.confirmDialogPortalEl=o.first),Ot(o=Nt())&&(i.toastPortalEl=o.first)}},inputs:{userToken:[1,"userToken"],pass:[1,"pass"],theme:[1,"theme"],exclude_role_ids:[1,"exclude_role_ids"],include_role_ids:[1,"include_role_ids"]},decls:15,vars:12,consts:[["container",""],["toastPortal",""],["mainDialogPortal",""],["confirmDialogPortal",""],[1,"h-full","flex-col","bg-transparent","overflow-y-auto"],[1,"bg-white","dark:bg-gray-900","border-b","border-gray-200","dark:border-gray-800"],[1,"mx-auto","w-full","max-w-7xl","px-4","sm:px-6","lg:px-8"],[1,"flex","flex-col","lg:flex-row","gap-x-6","py-5"],[1,"flex-1","min-w-0","overflow-y-auto","lg:px-4","pt-3","lg:pt-0"],[3,"dark"],[3,"theme"],[1,"mx-auto","max-w-7xl","px-4","sm:px-6","lg:px-8"],[1,"flex","h-12","items-center","gap-3"],[1,"flex","size-7","items-center","justify-center","rounded-md","bg-indigo-600"],["viewBox","0 0 24 24","fill","currentColor","aria-hidden","true",1,"size-3.5","text-white"],["d","M4.5 6.375a4.125 4.125 0 1 1 8.25 0 4.125 4.125 0 0 1-8.25 0ZM14.25 8.625a3.375 3.375 0 1 1 6.75 0 3.375 3.375 0 0 1-6.75 0ZM1.5 19.125a7.125 7.125 0 0 1 14.25 0v.003l-.001.119a.75.75 0 0 1-.363.63 13.067 13.067 0 0 1-6.761 1.873c-2.472 0-4.786-.684-6.76-1.873a.75.75 0 0 1-.364-.63l-.001-.122ZM17.25 19.128l-.001.144a2.25 2.25 0 0 1-.233.96 10.088 10.088 0 0 0 5.06-1.01.75.75 0 0 0 .42-.643 4.875 4.875 0 0 0-6.957-4.611 8.586 8.586 0 0 1 1.71 5.157v.003Z"],[1,"text-xs","font-semibold","text-gray-900","dark:text-white"],[1,"lg:hidden","border-b","border-gray-200","dark:border-gray-700","mb-4"],["aria-label","Tabs",1,"-mb-px","flex","space-x-1","overflow-x-auto"],["type","button",1,"w-nav-tab",3,"click","ngClass"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"-ml-0.5","size-4",3,"ngClass"],["d","M7 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM14.5 9a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM1.615 16.428a1.224 1.224 0 0 1-.569-1.175 6.002 6.002 0 0 1 11.908 0c.058.467-.172.92-.57 1.174A9.953 9.953 0 0 1 7 18a9.953 9.953 0 0 1-5.385-1.572ZM14.5 16h-.106c.07-.297.088-.611.048-.933a7.47 7.47 0 0 0-1.588-3.755 4.502 4.502 0 0 1 5.874 2.636.818.818 0 0 1-.36.98A7.465 7.465 0 0 1 14.5 16Z"],["d","M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"],["d","M10 1a4.5 4.5 0 0 0-4.5 4.5V9H5a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-.5V5.5A4.5 4.5 0 0 0 10 1Zm3 8V5.5a3 3 0 1 0-6 0V9h6Z","clip-rule","evenodd","fill-rule","evenodd"],[1,"hidden","lg:block","w-44","shrink-0","self-start","bg-white","dark:bg-gray-900","rounded-xl","border","border-gray-200","dark:border-gray-700","p-2"],["aria-label","Settings sections",1,"flex","flex-col","gap-1"],["type","button",1,"w-nav-item",3,"click","ngClass"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","aria-hidden","true",1,"size-5","shrink-0"],["stroke-linecap","round","stroke-linejoin","round","d","M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"],["stroke-linecap","round","stroke-linejoin","round","d","M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"],["stroke-linecap","round","stroke-linejoin","round","d","M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"],[1,"flex","flex-wrap","items-start","justify-between","gap-3","mb-4"],[1,"text-sm","font-bold","text-gray-900","dark:text-white"],[1,"w-section-subtitle"],["type","button",1,"w-btn-primary-sm"],[1,"relative","mb-6","px-px"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"w-search-icon"],["fill-rule","evenodd","d","M9 3.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11ZM2 9a7 7 0 1 1 12.452 4.391l3.328 3.329a.75.75 0 1 1-1.06 1.06l-3.329-3.328A7 7 0 0 1 2 9Z","clip-rule","evenodd"],["type","search","placeholder","Search members...","autocomplete","off",1,"w-input-search",3,"ngModelChange","input","ngModel"],[1,"flex","flex-col","gap-3"],["aria-label","Pagination",1,"flex","flex-col","lg:flex-row","items-center","justify-between","gap-3","border-t","border-gray-200","dark:border-gray-700","pt-4","mt-2"],["type","button",1,"w-btn-primary-sm",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-3.5"],["d","M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z"],[1,"w-card","px-5","py-4","flex","items-center","justify-between","gap-4","animate-pulse"],[1,"flex","min-w-0","items-center","gap-x-3"],[1,"size-10","flex-none","rounded-full","bg-gray-200","dark:bg-gray-700"],[1,"min-w-0","flex-auto","space-y-1.5"],[1,"h-3","w-32","rounded","bg-gray-200","dark:bg-gray-700"],[1,"h-2.5","w-44","rounded","bg-gray-200","dark:bg-gray-700"],[1,"flex","shrink-0","items-center","gap-x-2"],[1,"h-2.5","w-14","rounded","bg-gray-200","dark:bg-gray-700"],[1,"h-7","w-12","rounded-md","bg-gray-200","dark:bg-gray-700"],[1,"h-7","w-14","rounded-md","bg-gray-200","dark:bg-gray-700"],[1,"flex","flex-col","items-center","justify-center","py-16","text-center"],[1,"rounded-xl","border","border-gray-200","dark:border-gray-700","bg-white","dark:bg-gray-900","px-3","py-3","flex","flex-col","sm:flex-row","sm:items-center","sm:justify-between","gap-2","sm:gap-3"],["fill","none","viewBox","0 0 24 24","stroke","currentColor","stroke-width","1",1,"size-12","text-gray-300","dark:text-gray-600","mb-4"],["stroke-linecap","round","stroke-linejoin","round","d","M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z"],[1,"text-sm","font-medium","text-gray-900","dark:text-white"],[1,"w-avatar","size-9"],[1,"min-w-0","flex-auto","overflow-hidden"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white","truncate"],[1,"mt-0.5","flex","items-center","gap-1","text-xs","text-gray-500","dark:text-gray-400","truncate"],["viewBox","0 0 20 20","fill","currentColor",1,"size-3.5","shrink-0"],["d","M3 4a2 2 0 0 0-2 2v1.161l8.441 4.221a1.25 1.25 0 0 0 1.118 0L19 7.162V6a2 2 0 0 0-2-2H3Z"],["d","m19 8.839-7.77 3.885a2.75 2.75 0 0 1-2.46 0L1 8.839V14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.839Z"],[1,"flex","shrink-0","items-center","gap-x-2","pl-12","sm:pl-0"],[1,"w-badge-green","inline-flex"],["type","button",1,"w-btn-secondary-sm","px-2.5","py-1"],["type","button",1,"w-btn-danger-sm","px-2.5","py-1"],["type","button",1,"w-btn-secondary-sm","px-2.5","py-1",3,"click"],[1,"sr-only"],["type","button",1,"w-btn-danger-sm","px-2.5","py-1",3,"click"],[1,"text-xs","text-gray-700","dark:text-gray-300","text-center","lg:text-left"],[1,"font-medium"],[1,"flex","gap-2"],["type","button",1,"w-btn-secondary",3,"click","disabled"],["type","search","placeholder","Search roles...","autocomplete","off",1,"w-input-search",3,"ngModelChange","input","ngModel"],[1,"w-card","px-5","py-4","animate-pulse"],[1,"flex","items-center","justify-between","mb-3"],[1,"flex","items-center","gap-2"],[1,"h-3.5","w-24","rounded","bg-gray-200","dark:bg-gray-700"],[1,"h-5","w-14","rounded-md","bg-gray-200","dark:bg-gray-700"],[1,"flex","flex-wrap","gap-1.5"],[1,"h-5","rounded-full","bg-gray-200","dark:bg-gray-700",3,"width"],[1,"h-5","rounded-full","bg-gray-200","dark:bg-gray-700"],[1,"py-12","text-center","text-sm","text-gray-500","dark:text-gray-400"],[1,"w-card","px-5","py-4"],[1,"flex","items-center","gap-2","flex-wrap"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white"],["type","button",1,"w-btn-secondary-sm",3,"click","disabled"],[1,"text-xs","italic","text-gray-400","dark:text-gray-500"],[1,"w-badge"],[1,"inline-flex","items-center","gap-1","rounded-full","px-2.5","py-0.5","text-xs","font-medium",3,"class"],[1,"inline-flex","items-center","gap-1","rounded-full","px-2.5","py-0.5","text-xs","font-medium"],["viewBox","0 0 20 20","fill","currentColor",1,"size-3","shrink-0"],["fill-rule","evenodd","d","M10 1a4.5 4.5 0 0 0-4.5 4.5V9H5a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-.5V5.5A4.5 4.5 0 0 0 10 1Zm3 8V5.5a3 3 0 1 0-6 0V9h6Z","clip-rule","evenodd"],["type","search","placeholder","Search permissions...","autocomplete","off",1,"w-input-search",3,"ngModelChange","input","ngModel"],[1,"flex","min-w-0","items-center","gap-3"],[1,"size-8","flex-none","rounded-lg","bg-gray-200","dark:bg-gray-700"],[1,"h-3","w-36","rounded","bg-gray-200","dark:bg-gray-700"],[1,"w-card","px-5","py-4","flex","items-center","justify-between","gap-4"],[1,"flex","items-center","gap-3","min-w-0"],[1,"w-icon-box","bg-indigo-50","dark:bg-indigo-900/30"],["viewBox","0 0 20 20","fill","currentColor",1,"size-4","text-indigo-600","dark:text-indigo-400"],[1,"text-sm","font-medium","text-gray-900","dark:text-white","truncate"],["type","button",1,"w-btn-secondary-sm",3,"click"],["aria-hidden","true",1,"w-dialog-backdrop",3,"click"],["role","dialog","aria-labelledby","dialog-title","aria-modal","true",1,"w-dialog-panel"],[1,"w-dialog-header"],["id","dialog-title",1,"text-base","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close dialog",1,"w-btn-close",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5"],["d","M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"],[1,"w-dialog-body","space-y-5"],[1,"space-y-5",3,"formGroup"],[1,"w-dialog-footer"],["type","button",1,"w-btn-secondary",3,"click"],["type","button",1,"w-btn-primary",3,"click","disabled"],["for","role-name",1,"w-label"],["aria-hidden","true",1,"text-red-500"],["id","role-name","formControlName","roleName","type","text","placeholder","e.g. Editor, Viewer","aria-describedby","role-name-error",1,"w-input"],["id","role-name-error","role","alert",1,"w-field-error"],["id","role-permissions-label",1,"w-label"],["role","group","aria-labelledby","role-permissions-label",1,"w-checkbox-group"],[1,"px-3.5","py-3","text-sm","text-gray-500","dark:text-gray-400","italic"],[1,"w-checkbox-row"],["role","alert",1,"w-field-error"],[1,"w-label"],[1,"font-normal","text-gray-400","dark:text-gray-500"],["formControlName","description","placeholder","Describe this role\u2026","rows","3",1,"w-textarea"],["type","checkbox",1,"w-checkbox",3,"change","value","checked"],[1,"text-sm","text-gray-900","dark:text-white"],["for","permission-name",1,"w-label"],["id","permission-name","formControlName","permission","type","text","placeholder","e.g. create:reports","aria-describedby","permission-name-error",1,"w-input"],["id","permission-name-error","role","alert",1,"w-field-error"],["formControlName","description","placeholder","Describe this permission\u2026","rows","3",1,"w-textarea"],[1,"grid","grid-cols-1","gap-5","sm:grid-cols-2"],["for","user-name",1,"w-label"],["id","user-name","formControlName","name","type","text","placeholder","Jane Smith","aria-describedby","user-name-error",1,"w-input-readonly","read-only:cursor-default","read-only:opacity-60"],["id","user-name-error","role","alert",1,"w-field-error"],["for","user-role",1,"w-label"],[1,"relative"],["id","user-role","formControlName","role",1,"w-select"],["value",""],[3,"value"],[1,"pointer-events-none","absolute","inset-y-0","right-0","flex","items-center","pr-2.5"],["viewBox","0 0 20 20","fill","currentColor",1,"size-4","text-gray-400","dark:text-gray-500"],["fill-rule","evenodd","d","M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule","evenodd"],["for","user-email",1,"w-label"],["id","user-email","formControlName","email","type","email","placeholder","jane@company.com","aria-describedby","user-email-error",1,"w-input-readonly","read-only:cursor-default","read-only:opacity-60"],["id","user-email-error","role","alert",1,"w-field-error"],["for","user-mobile",1,"w-label"],["id","user-mobile","formControlName","mobileNumber","type","tel","placeholder","917001002003","aria-describedby","user-mobile-hint user-mobile-error",1,"w-input-readonly","read-only:cursor-default","read-only:opacity-60"],["id","user-mobile-error","role","alert",1,"w-field-error"],["id","user-mobile-hint",1,"mt-1.5","text-xs","text-gray-500","dark:text-gray-400"],["id","user-extra-perms-label",1,"w-label"],["role","group","aria-labelledby","user-extra-perms-label",1,"w-checkbox-group"],["role","alertdialog","aria-labelledby","confirm-delete-title","aria-describedby","confirm-delete-desc","aria-modal","true",1,"w-dialog-panel","sm:max-w-md","p-6"],[1,"flex","items-start","gap-4"],["aria-hidden","true",1,"flex","size-10","shrink-0","items-center","justify-center","rounded-full","bg-red-100","dark:bg-red-900/30"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5","text-red-600","dark:text-red-400"],["fill-rule","evenodd","d","M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z","clip-rule","evenodd"],[1,"min-w-0","flex-1"],["id","confirm-delete-title",1,"text-base","font-semibold","text-gray-900","dark:text-white"],["id","confirm-delete-desc",1,"w-section-subtitle"],[1,"font-semibold","text-gray-900","dark:text-white"],[1,"mt-5","flex","justify-end","gap-3"],["type","button",1,"w-btn-danger",3,"click"]],template:function(r,i){r&1&&(g(0,"div",4,0),U(2,VK,8,0,"header",5),g(3,"div",6)(4,"div",7),U(5,UK,28,15),g(6,"main",8),U(7,YK,15,5,"div"),U(8,sY,17,3,"div"),U(9,fY,17,3,"div"),m()()(),U(10,IY,19,8,"div",9),U(11,AY,21,3,"div",9),m(),g(12,"div",null,1),Q(14,"proxy-toast",10),m()),r&2&&(st("display",i.isHidden()?"none":"flex"),We("dark",i.isDark),x(2),B(i.hasMultipleTabs()?2:-1),x(3),B(i.hasMultipleTabs()?5:-1),x(2),B(i.activeTab===i.UserManagementTab.Members?7:-1),x(),B(i.activeTab===i.UserManagementTab.Roles&&i.pass()?8:-1),x(),B(i.activeTab===i.UserManagementTab.Permissions&&i.pass()?9:-1),x(),B(i.showDialog()?10:-1),x(),B(i.showConfirmDialog()?11:-1),x(3),te("theme",i.theme()))},dependencies:[wn,$v,m2,Oo,Zs,Ks,$n,No,er,tr,xx,nr,Rn,hr,Nl],styles:[".hover-actions[_ngcontent-%COMP%]{opacity:0;transition:opacity .15s ease;position:absolute;top:6px;right:12px;z-index:10}.table-row[_ngcontent-%COMP%]:hover .hover-actions[_ngcontent-%COMP%]{opacity:1}.user-item[_ngcontent-%COMP%]:hover .user-actions[_ngcontent-%COMP%]{opacity:1;visibility:visible}@keyframes _ngcontent-%COMP%_shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-avatar[_ngcontent-%COMP%], .skeleton-text[_ngcontent-%COMP%], .skeleton-button[_ngcontent-%COMP%]{border-radius:4px;background:linear-gradient(90deg,var(--proxy-neutral-90) 25%,var(--proxy-neutral-95) 50%,var(--proxy-neutral-90) 75%);background-size:200% 100%;animation:_ngcontent-%COMP%_shimmer 1.5s infinite}.skeleton-avatar[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%}.skeleton-name[_ngcontent-%COMP%]{width:120px;height:16px;margin-bottom:6px}.skeleton-email[_ngcontent-%COMP%]{width:180px;height:14px}.skeleton-role[_ngcontent-%COMP%]{width:80px;height:14px}.skeleton-button[_ngcontent-%COMP%]{width:60px;height:32px}table[_ngcontent-%COMP%]{box-shadow:none!important}th[_ngcontent-%COMP%], td[_ngcontent-%COMP%]{border:1px solid var(--proxy-neutral-90);padding:14px;text-align:left}td.mat-cell[_ngcontent-%COMP%]{padding:10px}th[_ngcontent-%COMP%]{font-weight:600;height:22px;padding-left:12px!important}td[_ngcontent-%COMP%]{font-size:12px;height:22px}.role-column[_ngcontent-%COMP%]{width:25%!important}.permissions-column[_ngcontent-%COMP%]{width:70%!important;overflow:visible;position:relative}.permission-column[_ngcontent-%COMP%]{overflow:visible}.permissions-cell-content[_ngcontent-%COMP%]{min-height:40px;padding-right:60px} .btn-danger{background-color:var(--proxy-error-40)!important;color:var(--proxy-neutral-100)!important} .btn-danger:hover, .btn-danger:focus{background-color:var(--proxy-error-40)!important;filter:brightness(.85)} .permissions-tooltip, .email-tooltip{background-color:#000000e6!important;color:var(--proxy-neutral-100)!important;font-size:12px!important;white-space:pre-line!important;border-radius:4px!important;padding:10px!important;line-height:1.4!important;text-align:left!important}@media(max-width:600px){.mobile-number-field[_ngcontent-%COMP%]{margin-bottom:16px}}@media(max-width:380px){.mobile-number-field[_ngcontent-%COMP%]{margin-bottom:30px}}"],changeDetection:0})}}return e})();var MY=["editDialogPortal"],RY=["toastPortal"];function PY(e,n){if(e&1){let t=be();g(0,"button",17),J("click",function(){W(t);let i=k();return Z(i.startEdit())}),ue(),g(1,"svg",18),Q(2,"path",19),m(),E(3," Edit "),m()}if(e&2){let t=k();te("disabled",!t.allowedUpdatePermissions)("title",t.allowedUpdatePermissions?"":"No permission")}}function OY(e,n){if(e&1&&(g(0,"div",14)(1,"div",20),ue(),g(2,"svg",21),Q(3,"rect",9)(4,"path",10),m(),Ye(),g(5,"div",22)(6,"p",23),E(7,"Company Name"),m(),g(8,"p",24),E(9),m()()(),g(10,"div",20),ue(),g(11,"svg",21),Q(12,"rect",25)(13,"path",26),m(),Ye(),g(14,"div",22)(15,"p",23),E(16,"Email"),m(),g(17,"p",24),E(18),m()()(),g(19,"div",27),ue(),g(20,"svg",21),Q(21,"path",28),m(),Ye(),g(22,"div",22)(23,"p",23),E(24,"Phone Number"),m(),g(25,"p",24),E(26),m()()(),g(27,"div",29),ue(),g(28,"svg",21),Q(29,"circle",30)(30,"path",31),m(),Ye(),g(31,"div",22)(32,"p",23),E(33,"Timezone"),m(),g(34,"p",24),E(35),m()()()()),e&2){let t,r,i,o,a=k();x(9),Ce(" ",((t=a.organizationForm.get("companyName"))==null?null:t.value)||"\u2014"," "),x(9),Ce(" ",((r=a.organizationForm.get("email"))==null?null:r.value)||"\u2014"," "),x(8),Ce(" ",((i=a.organizationForm.get("phoneNumber"))==null?null:i.value)||"\u2014"," "),x(9),Ce(" ",((o=a.organizationForm.get("timeZoneName"))==null?null:o.value)||"\u2014"," ")}}function NY(e,n){e&1&&(g(0,"p",45),E(1,"Company name is required."),m())}function FY(e,n){e&1&&(g(0,"p",45),E(1," Company name must be at least 3 characters. "),m())}function LY(e,n){e&1&&(g(0,"p",48),E(1,"Email is required."),m())}function jY(e,n){e&1&&(g(0,"p",48),E(1,"Please enter a valid email."),m())}function VY(e,n){e&1&&(g(0,"p",51),E(1," Phone number must be 10\u201315 digits. "),m())}function UY(e,n){if(e&1&&(g(0,"option",56),E(1),m()),e&2){let t=n.$implicit,r=k(2);te("value",r.getTimezoneValue(t)),x(),_t(r.getTimezoneLabel(t))}}function BY(e,n){e&1&&(ue(),g(0,"svg",63),Q(1,"circle",64)(2,"path",65),m(),E(3," Saving\u2026 "))}function $Y(e,n){e&1&&(ue(),g(0,"svg",66),Q(1,"path",67),m(),E(2," Save Changes "))}function zY(e,n){if(e&1){let t=be();g(0,"div",null,1)(2,"div",32),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),m(),g(3,"div",33)(4,"div",34)(5,"h2",35),E(6," Edit Organization "),m(),g(7,"button",36),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),ue(),g(8,"svg",37),Q(9,"path",38),m()()(),Ye(),g(10,"form",39),J("ngSubmit",function(){W(t);let i=k();return Z(i.onSubmit())}),g(11,"div",40)(12,"div",41)(13,"label",42),E(14,"Company Name "),g(15,"span",43),E(16,"*"),m()(),Q(17,"input",44),U(18,NY,2,0,"p",45)(19,FY,2,0,"p",45),m(),g(20,"div",41)(21,"label",46),E(22,"Email "),g(23,"span",43),E(24,"*"),m()(),Q(25,"input",47),U(26,LY,2,0,"p",48)(27,jY,2,0,"p",48),m(),g(28,"div")(29,"label",49),E(30,"Phone Number"),m(),Q(31,"input",50),U(32,VY,2,0,"p",51),m(),g(33,"div")(34,"label",52),E(35,"Timezone"),m(),g(36,"div",53)(37,"select",54)(38,"option",55),E(39,"Select timezone"),m(),Rt(40,UY,2,2,"option",56,fr),m(),g(42,"div",57),ue(),g(43,"svg",58),Q(44,"path",59),m()()()()()(),Ye(),g(45,"div",60)(46,"button",61),J("click",function(){W(t);let i=k();return Z(i.cancelEdit())}),E(47," Cancel "),m(),g(48,"button",62),U(49,BY,4,0)(50,$Y,3,0),m()()()()}if(e&2){let t,r,i,o=k();We("dark",o.isDark),x(10),te("formGroup",o.organizationForm),x(8),B((t=o.organizationForm.get("companyName"))!=null&&t.touched&&((t=o.organizationForm.get("companyName"))!=null&&t.hasError("required"))?18:(t=o.organizationForm.get("companyName"))!=null&&t.touched&&((t=o.organizationForm.get("companyName"))!=null&&t.hasError("minlength"))?19:-1),x(8),B((r=o.organizationForm.get("email"))!=null&&r.touched&&((r=o.organizationForm.get("email"))!=null&&r.hasError("required"))?26:(r=o.organizationForm.get("email"))!=null&&r.touched&&((r=o.organizationForm.get("email"))!=null&&r.hasError("pattern"))?27:-1),x(6),B((i=o.organizationForm.get("phoneNumber"))!=null&&i.touched&&((i=o.organizationForm.get("phoneNumber"))!=null&&i.hasError("pattern"))?32:-1),x(8),Pt(o.timezones),x(6),te("disabled",o.updateInProgress),x(2),te("disabled",o.updateInProgress),x(),B(o.updateInProgress?49:50)}}var q4=(()=>{class e extends Kn{get isDark(){return this.themeService.isDark(this.theme())}constructor(){super(),this.authToken=Se(),this.theme=Se(),this.WidgetTheme=xt,this.themeService=A(Sn),this.organizationForm=new Lt({companyName:new je("",[he.required,he.minLength(3)]),email:new je("",[he.required,he.pattern(Va)]),phoneNumber:new je("",[he.pattern(/^$|^[0-9]{10,15}$/)]),timezone:new je(""),timeZoneName:new je("")}),this.updateInProgress=!1,this.timezones=[],this.isEditing=!1,this.initialFormValue=null,this.editSnapshot=null,this.otpService=A(Or),this.cdr=A(cn),this.toastService=A(Go),this.widgetPortal=A(vi),this.editDialogRef=null,this.toastPortalRef=null,this.allowedUpdatePermissions=!1,sn(()=>this.themeService.setInputTheme(this.theme()))}ngOnInit(){this.authToken()&&(this.otpService.getOrganizationDetails(this.authToken()).pipe(ce(this.destroy$)).subscribe({next:t=>{let r=t?.data?.[0]?.currentCompany;if(this.allowedUpdatePermissions=t?.data?.[0]?.currentCompany?.permissions?.includes("update_c_company"),r&&typeof r=="object"){let i=r.timeZoneName??this.timezones.find(a=>a?.offset===r.timezone)?.label??"",o={companyName:r.name??"",email:r.email??"",phoneNumber:r.mobile??"",timezone:r.timezone??"",timeZoneName:i??""};this.organizationForm.patchValue(o),this.initialFormValue=o,this.cdr.markForCheck()}},error:()=>{}}),this.otpService.getTimezones(this.authToken()).pipe(ce(this.destroy$)).subscribe({next:t=>{let r=t?.data??t;Array.isArray(r)&&(this.timezones=t.data)},error:()=>{}})),this.organizationForm.get("timeZoneName")?.valueChanges.pipe(ce(this.destroy$)).subscribe(t=>{this.organizationForm.get("timezone")?.setValue(this.timezones.find(r=>r?.label===t)?.offset??"")})}ngAfterViewInit(){this.toastPortalEl?.nativeElement&&(this.toastPortalRef=this.widgetPortal.attach(this.toastPortalEl.nativeElement))}ngOnDestroy(){this.editDialogRef?.detach(),this.toastPortalRef?.detach(),super.ngOnDestroy()}showToast(t,r){t&&(r==="success"?this.toastService.success(t):this.toastService.error(t))}startEdit(){this.editSnapshot=R({},this.organizationForm.value),this.isEditing=!0,this.cdr.detectChanges(),this.editDialogPortalEl?.nativeElement&&(this.editDialogRef=this.widgetPortal.attach(this.editDialogPortalEl.nativeElement))}cancelEdit(){this.editDialogRef?.detach(),this.editDialogRef=null,this.editSnapshot&&this.organizationForm.patchValue(this.editSnapshot),this.organizationForm.markAsPristine(),this.organizationForm.markAsUntouched(),this.isEditing=!1}getTimezoneValue(t){return typeof t=="string"?t:t.label??""}getTimezoneLabel(t){return typeof t=="string"?t:t.label??""}onSubmit(){if(!this.organizationForm.valid||!this.authToken()||this.updateInProgress){this.organizationForm.markAllAsTouched();return}let t=this.organizationForm.getRawValue(),r={companyName:t.companyName??"",email:t.email??"",phoneNumber:t.phoneNumber??"",timezone:t.timezone??"",timeZoneName:t.timeZoneName??""};if(this.initialFormValue&&this.initialFormValue.companyName===r.companyName&&this.initialFormValue.email===r.email&&this.initialFormValue.phoneNumber===r.phoneNumber&&this.initialFormValue.timezone===r.timezone&&this.initialFormValue.timeZoneName===r.timeZoneName){this.editDialogRef?.detach(),this.editDialogRef=null,this.isEditing=!1;return}this.updateInProgress=!0,this.cdr.markForCheck(),this.otpService.updateCompany(this.authToken(),{name:t.companyName??"",email:t.email??"",mobile:t.phoneNumber??"",timezone:t.timezone??"",timeZoneName:t.timeZoneName??""}).pipe(ce(this.destroy$),jn(()=>{this.updateInProgress=!1,this.cdr.markForCheck()})).subscribe({next:i=>{this.initialFormValue=R({},r),this.editDialogRef?.detach(),this.editDialogRef=null,this.isEditing=!1,this.showToast(i?.data?.message,"success"),this.cdr.markForCheck(),window.dispatchEvent(new CustomEvent("organizationDetailsUpdateResponse",{bubbles:!0,composed:!0,detail:{data:i?.data,error:!1}}))},error:i=>{this.showToast(void 0,"error"),this.cdr.markForCheck(),window.dispatchEvent(new CustomEvent("organizationDetailsUpdateResponse",{bubbles:!0,composed:!0,detail:{data:i?.error?.errors??i?.error??i,error:!0}}))}})}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["organization-details"]],viewQuery:function(r,i){if(r&1&&bn(MY,5)(RY,5),r&2){let o;Ot(o=Nt())&&(i.editDialogPortalEl=o.first),Ot(o=Nt())&&(i.toastPortalEl=o.first)}},inputs:{authToken:[1,"authToken"],theme:[1,"theme"]},features:[Dt],decls:20,vars:6,consts:[["toastPortal",""],["editDialogPortal",""],[1,"h-full","flex-col","bg-transparent","overflow-y-auto"],[1,"mx-auto","max-w-5xl","px-4","sm:px-6","lg:px-8","py-8"],[1,"w-card-section"],[1,"w-dialog-header","px-5","py-4"],[1,"flex","items-center","gap-3"],[1,"w-icon-box"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.8","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"size-4","text-indigo-600","dark:text-indigo-400"],["x","3","y","3","width","18","height","18","rx","2"],["d","M9 9h1m5 0h1M9 13h1m5 0h1M9 17h1m5 0h1"],[1,"text-sm","font-semibold","text-gray-900","dark:text-white"],[1,"text-xs","text-gray-500","dark:text-gray-400"],["type","button",1,"w-btn-secondary-sm","inline-flex","items-center","gap-1.5",3,"disabled","title"],[1,"grid","grid-cols-1","lg:grid-cols-2","divide-y","lg:divide-y-0","lg:divide-x","divide-gray-100","dark:divide-gray-800"],[3,"dark"],[3,"theme"],["type","button",1,"w-btn-secondary-sm","inline-flex","items-center","gap-1.5",3,"click","disabled","title"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","2","aria-hidden","true",1,"size-3"],["d","M11 2l3 3-8 8H3v-3l8-8z"],[1,"flex","items-start","gap-2.5","px-5","py-4","border-b","border-gray-100","dark:border-gray-800"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"mt-0.5","size-4","shrink-0","text-gray-400","dark:text-gray-500"],[1,"min-w-0"],[1,"w-micro-label"],[1,"text-sm","font-medium","text-gray-900","dark:text-white","truncate"],["x","2","y","4","width","20","height","16","rx","2"],["d","M2 7l10 7 10-7"],[1,"flex","items-start","gap-2.5","px-5","py-4","border-t","lg:border-t-0","border-gray-100","dark:border-gray-800"],["d","M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 8.81 19.79 19.79 0 012 4.18 2 2 0 014 2h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z"],[1,"flex","items-start","gap-2.5","px-5","py-4","border-t","border-gray-100","dark:border-gray-800"],["cx","12","cy","12","r","10"],["d","M12 6v6l4 2"],["aria-hidden","true",1,"w-dialog-backdrop",3,"click"],["role","dialog","aria-labelledby","org-edit-dialog-title","aria-modal","true",1,"w-dialog-panel"],[1,"w-dialog-header"],["id","org-edit-dialog-title",1,"text-base","font-semibold","text-gray-900","dark:text-white"],["type","button","aria-label","Close dialog",1,"w-btn-close",3,"click"],["viewBox","0 0 20 20","fill","currentColor","aria-hidden","true",1,"size-5"],["d","M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"],["id","org-edit-form",1,"w-dialog-body",3,"ngSubmit","formGroup"],[1,"grid","grid-cols-1","gap-5","sm:grid-cols-2"],[1,"sm:col-span-2"],["for","org-company-name",1,"w-label"],["aria-hidden","true",1,"text-red-500"],["id","org-company-name","type","text","formControlName","companyName","placeholder","Enter company name","aria-describedby","org-company-name-error",1,"w-input"],["id","org-company-name-error","role","alert",1,"w-field-error"],["for","org-email",1,"w-label"],["id","org-email","type","email","formControlName","email","placeholder","Enter email","aria-describedby","org-email-error",1,"w-input"],["id","org-email-error","role","alert",1,"w-field-error"],["for","org-phone",1,"w-label"],["id","org-phone","type","tel","formControlName","phoneNumber","placeholder","Enter phone number","aria-describedby","org-phone-error",1,"w-input"],["id","org-phone-error","role","alert",1,"w-field-error"],["for","org-timezone",1,"w-label"],[1,"relative"],["id","org-timezone","formControlName","timeZoneName",1,"w-select"],["value","","disabled",""],[3,"value"],["aria-hidden","true",1,"pointer-events-none","absolute","inset-y-0","right-0","flex","items-center","pr-2.5"],["viewBox","0 0 20 20","fill","currentColor",1,"size-4","text-gray-400","dark:text-gray-500"],["fill-rule","evenodd","d","M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z","clip-rule","evenodd"],[1,"w-dialog-footer"],["type","button",1,"w-btn-secondary",3,"click","disabled"],["type","submit","form","org-edit-form",1,"w-btn-primary",3,"disabled"],["viewBox","0 0 24 24","fill","none","aria-hidden","true",1,"size-4","animate-spin"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","4",1,"opacity-25"],["fill","currentColor","d","M4 12a8 8 0 018-8v4a4 4 0 00-4 4H4z",1,"opacity-75"],["viewBox","0 0 16 16","fill","none","stroke","currentColor","stroke-width","2.2","aria-hidden","true",1,"size-3.5"],["d","M3 8l4 4 6-6"]],template:function(r,i){r&1&&(g(0,"div",2)(1,"div",3)(2,"div",4)(3,"div",5)(4,"div",6)(5,"div",7),ue(),g(6,"svg",8),Q(7,"rect",9)(8,"path",10),m()(),Ye(),g(9,"div")(10,"h2",11),E(11,"Organization Details"),m(),g(12,"p",12),E(13,"Manage your organization information"),m()()(),U(14,PY,4,2,"button",13),m(),U(15,OY,36,4,"div",14),m()(),U(16,zY,51,9,"div",15),m(),g(17,"div",null,0),Q(19,"proxy-toast",16),m()),r&2&&(We("dark",i.isDark),x(14),B(i.isEditing?-1:14),x(),B(i.isEditing?-1:15),x(),B(i.isEditing?16:-1),x(3),te("theme",i.theme()))},dependencies:[wn,nr,Oo,Zs,Ks,$n,No,er,tr,Rn,hr,Nl],encapsulation:2,changeDetection:0})}}return e})();var W4=(()=>{class e{injectSubscriptionStyles(t){if(document.getElementById("subscription-styles"))return;let r=document.createElement("style");r.id="subscription-styles",r.textContent=this.buildSubscriptionCSS(t),document.head.appendChild(r)}buildSubscriptionCSS(t){return` + @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); + .position-relative{position:relative!important} + .d-flex{display:flex!important} + .d-block{display:block!important} + .flex-row{flex-direction:row!important} + .flex-column{flex-direction:column!important} + .align-items-center{align-items:center!important} + .align-items-stretch{align-items:stretch!important} + .justify-content-start{justify-content:flex-start!important} + .w-100{width:100%!important} + .p-0{padding:0!important} + .py-3{padding-top:1rem!important;padding-bottom:1rem!important} + .m-0{margin:0!important} + .mt-0{margin-top:0!important} + .mb-2{margin-bottom:.5rem!important} + .mb-3{margin-bottom:1rem!important} + .mb-4{margin-bottom:1.5rem!important} + .my-3{margin-top:1rem!important;margin-bottom:1rem!important} + .text-left{text-align:left!important} + .gap-2{gap:.5rem!important} + .gap-3{gap:1rem!important} + .gap-4{gap:1.5rem!important} + + .subscription-plans-container{flex:1;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:20px;font-family:'Outfit',sans-serif} + .plans-grid{gap:20px;max-width:100%;margin:0;align-items:flex-start;padding:20px 0 0 20px;overflow-x:auto;overflow-y:visible} + .plans-grid::-webkit-scrollbar{height:8px} + .plans-grid::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px} + .plans-grid::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px} + @media(max-width:768px){.plans-grid{flex-direction:column;align-items:center;gap:20px;overflow-x:visible;overflow-y:auto}} + + .plan-card{background:${t?"transparent":"#ffffff"};border:${t?"1px solid #e6e6e6":"2px solid #e6e6e6"};border-radius:4px;padding:26px 24px;min-width:290px;max-width:350px;width:350px;flex:1;min-height:348px;font-family:'Outfit',sans-serif;position:relative;margin-top:30px} + .plan-card.highlighted{border:${t?"2px solid #ffffff":"2px solid #000000"}} + @media(max-width:768px){.plan-card{min-width:50%;max-width:400px;width:100%;padding:30px 20px}} + + .popular-badge{position:absolute;top:-12px;right:20px;background:#4d4d4d;color:#fff;padding:6px 16px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;z-index:100} + .plan-title{font-size:28px;font-weight:700;color:#333} + .plan-price .price-number{font-size:39px;font-weight:700;color:#4d4d4d;line-height:1} + .plan-price .price-currency{font-size:16px;font-weight:400;color:#666;line-height:1;margin-top:4px;margin-left:4px} + .included-resources .resource-box{border-radius:4px;padding:4px 2px;font-size:14px;font-weight:600;color:#4d4d4d;text-align:left} + .section-title{font-size:18px;font-weight:600;color:#333;margin:0 0 8px 0} + .plan-features{list-style:none} + .plan-features .feature-item{padding:4px 0!important;margin-bottom:0!important;color:#4d4d4d;font-size:14px;font-weight:600} + .plan-button{width:65%;padding:6px;border-radius:4px;font-size:15px;font-weight:400;font-family:'Outfit',sans-serif;cursor:pointer;transition:all .3s ease;border:1px solid;margin-top:auto} + .plan-button.primary{background:#4d4d4d;color:#fff;border-color:#4d4d4d;font-weight:700} + .plan-button.primary:hover{background:#333;border-color:#333} + .plan-button.plan-button-disabled,.plan-button:disabled{opacity:.7!important;cursor:not-allowed!important;pointer-events:none!important} + .divider{height:1px;background:#e0e0e0} + *{box-sizing:border-box;font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;color:${t?"#ffffff":""}!important} + `}buildContainerHTML(t,r,i){return t.length===0?'
    No subscription plans available
    ':`
    ${t.map(a=>this.buildPlanCardHTML(a,r,i)).join("")}
    `}buildPlanCardHTML(t,r,i){let o=t.plan_meta?.highlight_plan||!1,a=t.plan_meta?.tag?``:"",s=t.plan_price?.match(/(\d+)\s+(.+)/),l=s?s[1]:"0",c=s?s[2]:"USD",d=r?"#ffffff":"#4d4d4d",u=!!t.isSubscribed,p=`plan-card d-flex flex-column gap-3 position-relative${o?" popular highlighted":""}${t.isSelected?" selected":""}`,f=i?t.isSubscribed?"Your current plan":"Get "+t.plan_name:"Get Started",h=u?'disabled aria-disabled="true"':"",v=u?"cursor:not-allowed;pointer-events:none;":"";return`
    + ${a} +
    +

    ${t.plan_name}

    +
    ${l}${c}
    + +
    +
    + ${this.buildMetricsHTML(t)} + ${this.buildFeaturesHTML(t,d)} + ${this.buildExtraFeaturesHTML(t,d)} +
    `}buildMetricsHTML(t){return t.plan_meta?.metrics?.length?`

    Included

    ${t.plan_meta.metrics.map(i=>`
    ${i}
    `).join("")}
    `:""}buildFeaturesHTML(t,r){let i=t.plan_meta?.features?.included||[],o=t.plan_meta?.features?.notIncluded||[];if(!i.length&&!o.length)return"";let a=``,s='',l=i.map(d=>`
  • ${a}${d}
  • `).join(""),c=o.map(d=>`
  • ${s}${d}
  • `).join("");return`

    Features

      ${l}${c}
    `}buildExtraFeaturesHTML(t,r){if(!t.plan_meta?.extra?.length)return"";let i=``;return`

    Extra

      ${t.plan_meta.extra.map(a=>`
    • ${i}${a}
    • `).join("")}
    `}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Z4=(()=>{class e{createLogoElement(t,r){if(!r)return null;let i=t.createElement("div");i.style.cssText="width:316px;display:flex;justify-content:center;margin:0 8px 12px 8px;";let o=t.createElement("img");return o.src=r,o.alt="Logo",o.loading="lazy",o.style.cssText="max-height:48px;max-width:200px;object-fit:contain;",t.appendChild(i,o),i}appendSkeletonLoader(t,r){if(r.querySelector("#skeleton-loader"))return;let i=t.createElement("div");if(i.id="skeleton-loader",i.style.cssText="display:block;width:100%;",!document.getElementById("skeleton-animation")){let o=t.createElement("style");o.id="skeleton-animation",o.textContent="@keyframes skeleton-loading{0%{background-position:200% 0}100%{background-position:-200% 0}}",document.head.appendChild(o)}for(let o=0;o<3;o++){let a=t.createElement("div");a.style.cssText="width:230px;height:40px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:4px;margin:8px 8px 16px 8px;display:block;box-sizing:border-box;",t.appendChild(i,a)}t.appendChild(r,i)}removeSkeletonLoader(t,r){r.querySelectorAll("#skeleton-loader").forEach(i=>{i.parentNode&&t.removeChild(r,i)}),this.forceRemoveAllSkeletonLoaders(t,r)}forceRemoveAllSkeletonLoaders(t,r){r&&r.querySelectorAll("#skeleton-loader").forEach(i=>{t.removeChild(r,i)}),document.querySelectorAll("#skeleton-loader").forEach(i=>{i.parentNode&&i.parentNode.removeChild(i)})}addPasswordVisibilityToggle(t,r,i,o){let a=!1,s=o===xt.Dark?"#e5e7eb":"#5d6164",l=t.createElement("button");l.type="button",l.style.cssText="position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;cursor:pointer;padding:0;margin:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1;";let c=``,d=``,u=()=>{l.innerHTML=a?d:c};u(),l.addEventListener("click",()=>{a=!a,r.type=a?"text":"password",u()}),t.appendChild(i,l)}inputStyle(t,r,i=!1){let o=t===xt.Dark;return`width:100%;height:44px;padding:0 ${i?"44px":"16px"} 0 16px;border:1px solid ${o?"#ffffff":"#cbd5e1"};border-radius:${r};background:${o?"transparent":"#ffffff"};color:${o?"#ffffff":"#1f2937"};font-size:14px;outline:none;box-sizing:border-box;`}setInlineError(t,r){t.textContent=r,t.style.display=r?"block":"none"}createErrorElement(t){let r=t.createElement("div");return r.style.cssText="color:#d14343;font-size:14px;min-height:16px;display:none;margin-top:-4px;",r}createBackButton(t){let r=t.createElement("button");return r.type="button",r.innerHTML='',r.style.cssText="background:transparent;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;margin-bottom:8px;",r}createOrDivider(t,r){let i=t.createElement("div");i.setAttribute("data-or-divider","true"),i.style.cssText="display:flex;align-items:center;margin:8px 8px 12px 8px;width:316px;";let o="flex:1;height:1px;background-color:#e0e0e0;",a=t.createElement("div");a.style.cssText=o;let s=t.createElement("div");s.style.cssText=o;let l=t.createElement("span");return l.textContent="Or continue with",l.style.cssText=`padding:0 12px;font-size:12px;color:${r};font-weight:500;letter-spacing:0.5px;`,t.appendChild(i,a),t.appendChild(i,l),t.appendChild(i,s),i}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var K4=(()=>{class e extends Kn{ngOnInit(){}static{this.\u0275fac=(()=>{let t;return function(i){return(t||(t=xn(e)))(i||e)}})()}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-subscription-center"]],features:[Dt],decls:0,vars:0,template:function(r,i){},encapsulation:2,changeDetection:0})}}return e})();var HY=["dialogPortal"];function GY(e,n){if(e&1&&Q(0,"user-management",3),e&2){let t=k(2);te("userToken",t.authToken)("pass",t.isRolePermission)("theme",t.theme)("isHidden",t.isHidden)("exclude_role_ids",t.exclude_role_ids)("include_role_ids",t.include_role_ids)}}function qY(e,n){if(e&1){let t=be();g(0,"div")(1,"proxy-subscription-center",7),J("togglePopUp",function(i){W(t);let o=k(2);return Z(o.handleSubscriptionToggle(i))}),m()()}if(e&2){let t=k(2);We("subscription-dialog",t.isPreview),x(),te("referenceId",t.referenceId)("isPreview",t.isPreview)("isLogin",t.isLogin)("loginRedirectUrl",t.loginRedirectUrl)}}function WY(e,n){if(e&1&&Q(0,"organization-details",5),e&2){let t=k(2);te("authToken",t.authToken)("theme",t.theme)}}function ZY(e,n){if(e&1&&Q(0,"user-profile",5),e&2){let t=k(2);te("authToken",t.authToken)("theme",t.theme)}}function KY(e,n){e&1&&Q(0,"proxy-progress-bar")}function YY(e,n){if(e&1){let t=be();g(0,"div"),U(1,KY,1,0,"proxy-progress-bar"),g(2,"authorization",8),J("togglePopUp",function(){W(t);let i=k(2);return Z(i.toggleSendOtp())})("openPopUp",function(i){W(t);let o=k(2);return Z(o.setShowRegistrationFromSendOtpCenter(i))})("successReturn",function(i){W(t);let o=k(2);return Z(o.returnSuccessObj(i))})("failureReturn",function(i){W(t);let o=k(2);return Z(o.returnFailureObj(i))}),m()()}if(e&2){let t=k(2);st("border-radius",t.dialogBorderRadius||null)("display",(t.showRegistration()||t.showLogin())&&t.referenceElement?"none":null),We("dark-theme",t.isDarkTheme),x(),B(t.isOtpLoading()?1:-1),x(),te("referenceId",t.referenceId)("serviceData",t.otpWidgetData)("target",t.target)("version",t.version)("isCreateAccountLink",t.isCreateAccountTextAppended)("theme",t.theme)("input_fields",t.input_fields)("show_social_login_icons",t.show_social_login_icons)("isUserProxyContainer",t.isUserProxyContainer)}}function QY(e,n){if(e&1&&(g(0,"div"),U(1,GY,1,6,"user-management",3)(2,qY,2,6,"div",4)(3,WY,1,2,"organization-details",5)(4,ZY,1,2,"user-profile",5)(5,YY,3,16,"div",6),m()),e&2){let t,r=k();We("h-full",r.viewMode()!==r.PublicScriptType.Authorization)("authorization-container",r.referenceId&&!r.authToken)("dark",r.isDarkTheme),x(),B((t=r.viewMode())===r.PublicScriptType.UserManagement?1:t===r.PublicScriptType.Subscription?2:t===r.PublicScriptType.OrganizationDetails?3:t===r.PublicScriptType.UserProfile?4:t===r.PublicScriptType.Authorization?5:-1)}}function XY(e,n){e&1&&Q(0,"proxy-progress-bar")}function JY(e,n){if(e&1){let t=be();g(0,"div",11)(1,"span",15),E(2,"Reset Password"),m(),g(3,"button",16),J("click",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())}),ue(),g(4,"svg",17),Q(5,"path",18),m()()()}}function eQ(e,n){if(e&1){let t=be();g(0,"proxy-register",19),J("togglePopUp",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())})("successReturn",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())})("failureReturn",function(i){W(t);let o=k(2);return Z(o.returnFailureObj(i))}),m()}if(e&2){let t=k(2);te("referenceId",t.referenceId)("serviceData",t.otpWidgetData)("loginServiceData",t.loginWidgetData)("registrationViaLogin",t.registrationViaLogin)("showCompanyDetails",t.showCompanyDetails)("version",t.version)("theme",t.theme)("prefillDetails",t.prefillDetails)("firstName",t.otherData==null?null:t.otherData.firstName)("lastName",t.otherData==null?null:t.otherData.lastName)("email",t.otherData==null?null:t.otherData.email)("signupServiceId",t.otherData==null?null:t.otherData.signupServiceId)("isRegisterFormOnly",t.isRegisterFormOnly)}}function tQ(e,n){if(e&1){let t=be();g(0,"proxy-login",20),J("togglePopUp",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())})("closePopUp",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())})("openPopUp",function(i){W(t);let o=k(2);return Z(o.setShowRegistrationFromLogin(i))})("failureReturn",function(i){W(t);let o=k(2);return Z(o.returnFailureObj(i))}),m()}if(e&2){let t=k(2);te("loginServiceData",t.loginWidgetData)("theme",t.theme)}}function nQ(e,n){if(e&1){let t=be();g(0,"div",14)(1,"authorization",21),J("togglePopUp",function(){W(t);let i=k(2);return Z(i.closeOverlayDialog())})("successReturn",function(i){W(t);let o=k(2);return Z(o.returnSuccessObj(i))})("failureReturn",function(i){W(t);let o=k(2);return Z(o.returnFailureObj(i))}),m()()}if(e&2){let t=k(2);x(),te("referenceId",t.referenceId)("version",t.version)("theme",t.theme)("isUserProxyContainer",!1)("hideInlineHeader",!0)}}function rQ(e,n){if(e&1){let t=be();g(0,"div",null,0)(2,"div",9),J("click",function(){W(t);let i=k();return Z(i.closeOverlayDialog())}),m(),g(3,"div",10),U(4,XY,1,0,"proxy-progress-bar"),U(5,JY,6,0,"div",11),g(6,"div"),U(7,eQ,1,13,"proxy-register",12),U(8,tQ,1,2,"proxy-login",13),U(9,nQ,2,5,"div",14),m()()()}if(e&2){let t=k();We("dark",t.isDarkTheme),x(3),st("max-width",t.showRegistration()?"40rem":t.showForgotPassword()?"30rem":"26rem")("min-width",t.showForgotPassword()?"400px":null)("width",t.showForgotPassword()?"30rem":null),x(),B(t.isOtpLoading()?4:-1),x(),B(t.showForgotPassword()?5:-1),x(),Ea(t.showForgotPassword()?"px-6 pb-6 pt-0 w-full":"w-dialog-body"),x(),B(t.showRegistration()?7:-1),x(),B(t.showLogin()?8:-1),x(),B(t.showForgotPassword()?9:-1)}}var Y4=(()=>{class e extends Kn{get isDarkTheme(){return this.themeService.isDark(this.theme)}constructor(){super(),this.isPreview=!1,this.isLogin=!1,this._authToken$=et(void 0),this._type$=et(void 0),this.themeService=A(Sn),this.WidgetTheme=xt,this.PublicScriptType=Wn,this.viewMode=Wt(()=>{let t=this._authToken$(),r=this._type$();return t&&r===Wn.UserManagement?Wn.UserManagement:t&&r===Wn.OrganizationDetails?Wn.OrganizationDetails:t&&r===Wn.UserProfile?Wn.UserProfile:Wn.Authorization}),this.version=zn.V1,this.exclude_role_ids=[],this.include_role_ids=[],this.isHidden=!1,this.input_fields=Pl.TOP,this.show_social_login_icons=!1,this.isRegisterFormOnly=!1,this.otherData={},this.dialogPortalRef=null,this.widgetPortal=A(vi),this.show=et(!1),this.showRegistration=et(!1),this.showForgotPassword=et(!1),this.animate=et(!1),this.isCreateAccountTextAppended=!1,this.registrationViaLogin=!0,this.cameFromLogin=!1,this.cameFromSendOtpCenter=!1,this.referenceElement=null,this.subscriptionPlans=[],this.cdr=A(cn),this.otpWidgetService=A(ml),this.store=A(dn),this.ngZone=A(pt),this.renderer=A(Ir),this.otpUtilityService=A(Nr),this.subscriptionRenderer=A(W4),this.domBuilder=A(Z4),this.otpService=A(Or),this.isOtpInProcess=Rr(this.store.pipe(ke(Ml),Ie(Le)),{initialValue:!1}),this.isResendOtpInProcess=Rr(this.store.pipe(ke(pg),Ie(Le)),{initialValue:!1}),this.isVerifyOtpInProcess=Rr(this.store.pipe(ke(fg),Ie(Le)),{initialValue:!1}),this.isOtpLoading=Wt(()=>this.isOtpInProcess()||this.isResendOtpInProcess()||this.isVerifyOtpInProcess()),this.showLogin=Rr(this.otpWidgetService.showlogin,{initialValue:!1}),this.widgetTheme=Rr(this.store.pipe(ke(Wa),Ie(Le)),{initialValue:null}),this.showSkeleton=!1,this.dialogBorderRadius=null,this.createAccountTextAppended=!1,this.hcaptchaLoading=!1,this.hcaptchaRenderQueue=[],this.isUserProxyContainer=!0,sn(()=>{let t=this.themeService.isDark$();this.reapplyInjectedButtonTheme(t)})}ngOnChanges(t){t.authToken&&this._authToken$.set(this.authToken),t.type&&this._type$.set(this.type),t.theme&&this.themeService.setInputTheme(this.theme)}ngOnInit(){this._authToken$.set(this.authToken),this._type$.set(this.type),this.themeService.setInputTheme(this.theme),this.store.pipe(ke(Wa),Je(Boolean),ce(this.destroy$)).subscribe(t=>{t?.ui_preferences?.theme!==xt.System&&this.themeService.setThemeOverride(t?.ui_preferences?.theme||t),this.loginWidgetData=t?.registerState,this.version=t?.ui_preferences?.version||"v1",this.input_fields=t?.ui_preferences?.input_fields||"top",this.show_social_login_icons=t?.ui_preferences?.icons||!1,this.isCreateAccountTextAppended=t?.ui_preferences?.create_account_link||!1,this.dialogBorderRadius=this.getBorderRadiusCssValue(t?.ui_preferences?.border_radius)}),this.type===Wn.Subscription?(this.store.dispatch(jd({referenceId:this.referenceId,authToken:this.authToken})),this.store.pipe(ke(_4),ce(this.destroy$)).subscribe(t=>{t&&(this.subscriptionPlans=t.data),this.isPreview?this.show.set(!0):this.toggleSendOtp(!0)}),setTimeout(()=>{this.isPreview?this.show.set(!0):(!this.subscriptionPlans||this.subscriptionPlans.length===0)&&this.toggleSendOtp(!0)},3e3)):(this.toggleSendOtp(!0),this.isRegisterFormOnly&&(this.registrationViaLogin=!1,this.setShowRegistration(!0))),this.loadExternalFonts(),this.authToken||(this.referenceId?this.store.dispatch(Rd({referenceId:this.referenceId,payload:this.otherData})):console.error("Reference Id is undefined ! Please provide referenceId in the widget configuration.")),this.store.pipe(ke(qa),Je(Boolean),ce(this.destroy$)).subscribe(t=>{this.otpWidgetData=t?.find(r=>r?.service_id===zt.Msg91OtpService),this.otpWidgetData&&(this.otpWidgetService.setWidgetConfig(this.otpWidgetData?.widget_id,this.otpWidgetData?.token_auth,this.otpWidgetData?.state),this.otpWidgetService.loadScript()),this.loginWidgetData||(this.loginWidgetData=t?.find(r=>r?.service_id===zt.PasswordAuthentication))}),this.otpWidgetService.otpWidgetToken.pipe(Je(Boolean),ce(this.destroy$)).subscribe(t=>{this.hitCallbackUrl(this.otpWidgetData.callbackUrl,{state:this.otpWidgetData?.state,code:t})})}ngOnDestroy(){this.dialogPortalRef?.detach(),this.dialogPortalRef=null,this.referenceElement&&this.clearSubscriptionPlans(this.referenceElement),super.ngOnDestroy()}closeOverlayDialog(){this.dialogPortalRef?.detach(),this.dialogPortalRef=null,this.ngZone.run(()=>{this.showRegistration.set(!1),this.showForgotPassword.set(!1),this.otpWidgetService.openLogin(!1),this.otpWidgetService.closeForgotPassword(),this.referenceElement&&this.show.set(!1),this.cameFromLogin=!1,this.cameFromSendOtpCenter=!1})}loadExternalFonts(){let t=document.querySelector("proxy-auth")?.shadowRoot,r=document.createElement("link");r.rel="stylesheet",r.href="https://fonts.googleapis.com/css2?family=Inter:wght@100;300;400;500;600&display=swap",t?.appendChild(r);let i=document.createElement("meta");i.name="viewport",i.content="width=device-width, initial-scale=1",i.id=_l,document.getElementsByTagName("head")[0].appendChild(i)}toggleSendOtp(t=!1){this.referenceElement=document.getElementById(this.referenceId),this.referenceElement?(this.setShowLogin(!1),this.isUserProxyContainer=!1,this.show.set(!1),this.animate.set(!1),this.createAccountTextAppended=!1,t&&(this.type===Wn.Subscription?!this.isPreview&&this.referenceElement&&this.appendSubscriptionButton(this.referenceElement):(this.showSkeleton=!0,this.domBuilder.appendSkeletonLoader(this.renderer,this.referenceElement),this.addButtonsToReferenceElement(this.referenceElement),setTimeout(()=>{this.showSkeleton&&(this.showSkeleton=!1,this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer,this.referenceElement))},1e4)))):this.ngZone.run(()=>{this.show()?(this.animate.set(!0),this.setShowLogin(!1),setTimeout(()=>{this.show.set(!1),this.animate.set(!1)},300)):this.show.set(!0)})}appendSubscriptionButton(t){try{if(!t)return;t.querySelectorAll(".subscription-plans-container").forEach(s=>{this.renderer.removeChild(t,s)}),t.querySelectorAll("proxy-subscription-center").forEach(s=>{this.renderer.removeChild(t,s)}),this.addSubscriptionStyles();let o=this.createSubscriptionCenterHTML(),a=this.renderer.createElement("div");a.innerHTML=o,this.addButtonEventListeners(a),this.renderer.appendChild(t,a)}catch(r){console.error("Error appending subscription button:",r)}}addButtonEventListeners(t){t.querySelectorAll(".plan-button").forEach(i=>{i.addEventListener("click",o=>{if(o.preventDefault(),!(i.disabled||i.classList.contains("plan-button-disabled")))if(i.classList.contains("upgrade-btn")){let a=i.getAttribute("data-plan-id"),s=i.getAttribute("data-plan-data");if(a&&s)try{let l=JSON.parse(s);this.upgradeSubscription(l)}catch(l){console.error("Error parsing plan data:",l)}}else{let a=i.getAttribute("data-link");a&&window.open(a,"_blank")}})})}createSubscriptionCenterHTML(){return this.subscriptionRenderer.buildContainerHTML(this.subscriptionPlans||[],this.themeService.isDark(),this.isLogin)}addSubscriptionStyles(){this.subscriptionRenderer.injectSubscriptionStyles(this.themeService.isDark())}addButtonsToReferenceElement(t){this.store.pipe(ke(qa),Je(r=>!!r),Tt(1)).subscribe(r=>{let i=0,o=r.length;if(o>0&&this.showSkeleton?(this.domBuilder.removeSkeletonLoader(this.renderer,t),this.domBuilder.appendSkeletonLoader(this.renderer,t)):o>0&&!this.showSkeleton&&this.domBuilder.removeSkeletonLoader(this.renderer,t),o===0){this.showSkeleton&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t)),this.createAccountTextAppended||this.appendCreateAccountText(t);return}let a=!1,s=null,l=setTimeout(()=>{this.showSkeleton&&!this.createAccountTextAppended&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t),t.querySelectorAll("button").forEach(u=>{u.style.visibility="visible"}),(a||!this.hasOtpButton(r))&&this.appendCreateAccountText(t))},8e3),c=setTimeout(()=>{this.showSkeleton&&!this.createAccountTextAppended&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t),this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer,this.referenceElement),t.querySelectorAll("button").forEach(u=>{u.style.visibility="visible"}),(a||!this.hasOtpButton(r))&&this.appendCreateAccountText(t))},3e3);for(let d of r)d?.service_id===zt.Msg91OtpService?(s=setTimeout(()=>{a||(this.appendButton(t,d),t.querySelectorAll('button[data-service-id="'+zt.Msg91OtpService+'"]').forEach(p=>{p.style.visibility="visible"}),i++,a=!0,this.checkAndAppendCreateAccountText(t,i,o,l,c,s))},4e3),setTimeout(()=>{t.querySelectorAll('button[data-service-id="'+zt.Msg91OtpService+'"]').forEach(p=>{p.style.visibility==="hidden"&&(p.style.visibility="visible")})},3e3),this.otpWidgetService.scriptLoading.pipe(ia(1),Je(u=>!u),Tt(1)).subscribe(()=>{a||(s&&clearTimeout(s),this.appendButton(t,d),t.querySelectorAll('button[data-service-id="'+zt.Msg91OtpService+'"]').forEach(p=>{p.style.visibility="visible"}),i++,a=!0,this.checkAndAppendCreateAccountText(t,i,o,l,c,s))})):d?.service_id!==zt.PasswordAuthentication||d?.service_id===zt.PasswordAuthentication&&this.version==="v1"?(this.appendButton(t,d),i++,this.checkAndAppendCreateAccountText(t,i,o,l,c,s)):(this.appendPasswordAuthenticationButtonV2(t,d,o),i++,this.checkAndAppendCreateAccountText(t,i,o,l,c,s))})}getBorderRadiusCssValue(t){if(this.version!==zn.V2)return"8px";switch(t){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";default:return"8px"}}getPrimaryColorForCurrentTheme(t){let r=this.themeService.isDark();return this.version!==zn.V2?r?"#FFFFFF":"#000000":r?t?.dark_theme_primary_color??"#FFFFFF":t?.light_theme_primary_color??"#000000"}appendPasswordAuthenticationButtonV2(t,r,i){this.showSkeleton&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t));let o=this.widgetTheme(),a=this.getBorderRadiusCssValue(o?.ui_preferences?.border_radius),s=this.getPrimaryColorForCurrentTheme(o?.ui_preferences),l=this.version===zn.V2,c=l&&o?.ui_preferences?.button_color||"#3f51b5",d=l&&o?.ui_preferences?.button_hover_color||"#303f9f",u=l&&o?.ui_preferences?.button_text_color||"#ffffff",p=this.renderer.createElement("div");p.style.cssText=`width:316px;padding:0;margin:0 8px 16px 8px;display:flex;flex-direction:column;gap:8px;box-sizing:border-box;font-family:'Inter',sans-serif;border-radius:${a};`;let f=this.renderer.createElement("div");f.textContent=o?.ui_preferences?.title,f.style.cssText=`font-size:16px;line-height:20px;font-weight:600;color:${s};margin:0 8px 20px 8px;text-align:center;width:316px;`;let h=this.renderer.createElement("button");h.textContent="Sign in",h.style.cssText=`height:36px;padding:0 12px;background-color:${c};color:${u};border:none;border-radius:${a};font-size:14px;font-weight:600;cursor:pointer;width:100%;box-shadow:0 1px 2px rgba(0,0,0,0.08);margin-top:4px;`,h.addEventListener("mouseenter",()=>{h.style.backgroundColor=d}),h.addEventListener("mouseleave",()=>{h.style.backgroundColor=c});let v=w=>this.openForgotPasswordDialog(w);this.buildLoginFields(p,r,h,a,s,v);let b=this.input_fields==="top",_=o?.ui_preferences?.logo_url,y=this.domBuilder.createLogoElement(this.renderer,_);y&&(t.firstChild?this.renderer.insertBefore(t,y,t.firstChild):this.renderer.appendChild(t,y));let S=y?y.nextSibling:t.firstChild;if(S?this.renderer.insertBefore(t,f,S):this.renderer.appendChild(t,f),b){let w=f.nextSibling;w?this.renderer.insertBefore(t,p,w):this.renderer.appendChild(t,p)}else this.renderer.appendChild(t,p);if(i>1){let w=this.domBuilder.createOrDivider(this.renderer,s);if(b){let P=p.nextSibling;P?this.renderer.insertBefore(t,w,P):this.renderer.appendChild(t,w)}else this.renderer.insertBefore(t,w,p)}}handlePasswordAuthenticationLogin(t,r,i,o,a,s,l){let c=r.value?.trim(),d=i.value,u=s();if(!c||!d){this.domBuilder.setInlineError(o,"Email/Mobile and password are required.");return}if(!u){this.domBuilder.setInlineError(o,"Please complete the hCaptcha verification.");return}this.domBuilder.setInlineError(o,"");let p=a.textContent||"Login";a.disabled=!0,a.textContent="Please wait...";let f={state:t?.state||this.loginWidgetData?.state,user:c.replace(/^\+/,""),password:this.encryptPassword(d),hCaptchaToken:u};this.otpService.login(f).subscribe(h=>{if(a.disabled=!1,a.textContent=p,h?.hasError){this.domBuilder.setInlineError(o,h?.errors?.[0]||"Unable to login. Please try again."),l();return}if(h?.data?.redirect_url){window.location.href=h.data.redirect_url;return}this.returnSuccessObj(h)},h=>{if(a.disabled=!1,a.textContent=p,h?.status===403){this.setShowRegistration(!0,c),l();return}this.domBuilder.setInlineError(o,h?.error?.errors?.[0]||"Login failed. Please check your details and try again."),l(),this.returnFailureObj(h)})}openForgotPasswordDialog(t=""){this.ngZone.run(()=>{this.showForgotPassword.set(!0),this.otpWidgetService.openForgotPassword(t),this.cdr.detectChanges(),setTimeout(()=>{this.dialogPortalEl?.nativeElement&&!this.dialogPortalRef&&(this.dialogPortalRef=this.widgetPortal.attach(this.dialogPortalEl.nativeElement))})})}showForgotPasswordForm(t,r,i=""){t.innerHTML="";let o=this.widgetTheme(),a=this.getBorderRadiusCssValue(o?.ui_preferences?.border_radius),s=this.themeService.isDark(),l=this.renderer.createElement("button");l.type="button",l.innerHTML=` + + + + `,l.style.cssText=` + background: transparent; + border: none; + cursor: pointer; + padding: 4px; + display: flex; + align-items: center; + margin-bottom: 8px; + `,l.addEventListener("click",()=>{this.restoreLoginForm(t,r)});let c=this.renderer.createElement("div");c.textContent="Reset Password",c.style.cssText=` + font-size: 16px; + line-height: 20px; + font-weight: 600; + color: ${s?"#ffffff":"#1f2937"}; + margin-bottom: 16px; + `;let d=this.renderer.createElement("div");d.style.cssText=` + display: flex; + flex-direction: column; + gap: 6px; + margin-bottom: 16px; + `;let u=this.renderer.createElement("input");u.type="text",u.placeholder="Email or Mobile",u.autocomplete="off",u.value=i,u.style.cssText=` + width: 100%; + height: 44px; + padding: 0 16px; + border: ${s?"1px solid #ffffff":"1px solid #cbd5e1"}; + border-radius: ${a}; + background: ${s?"transparent":"#ffffff"}; + color: ${s?"#ffffff":"#1f2937"}; + font-size: 14px; + outline: none; + box-sizing: border-box; + `;let p=this.renderer.createElement("div");p.style.cssText=` + color: #d14343; + font-size: 14px; + min-height: 16px; + display: none; + margin-top: 4px; + `;let f=this.renderer.createElement("button");f.textContent="Send OTP",f.style.cssText=` + height: 44px; + padding: 0 12px; + background-color: #3f51b5; + color: #ffffff; + border: none; + border-radius: ${a}; + font-size: 14px; + font-weight: 600; + cursor: pointer; + width: 100%; + box-shadow: 0 1px 2px rgba(0,0,0,0.08); + margin-top: 8px; + `;let h=()=>{let v=u.value?.trim();if(!v){this.domBuilder.setInlineError(p,"Email or Mobile is required.");return}this.domBuilder.setInlineError(p,"");let b=f.textContent||"Send OTP";f.disabled=!0,f.textContent="Please wait...";let _={state:r?.state||this.loginWidgetData?.state,user:v};this.otpService.resetPassword(_).subscribe(y=>{if(f.disabled=!1,f.textContent=b,y?.hasError){this.domBuilder.setInlineError(p,y?.errors?.[0]||"Unable to send OTP. Please try again.");return}this.showChangePasswordForm(t,r,v)},y=>{f.disabled=!1,f.textContent=b,this.domBuilder.setInlineError(p,y?.error?.errors?.[0]||"Failed to send OTP. Please try again.")})};f.addEventListener("click",h),u.addEventListener("keydown",v=>{v.key==="Enter"&&(v.preventDefault(),h())}),this.renderer.appendChild(d,u),this.renderer.appendChild(t,l),this.renderer.appendChild(t,c),this.renderer.appendChild(t,d),this.renderer.appendChild(t,p),this.renderer.appendChild(t,f)}showChangePasswordForm(t,r,i){t.innerHTML="";let o=this.widgetTheme(),a=this.getBorderRadiusCssValue(o?.ui_preferences?.border_radius),s=this.themeService.isDark(),l=15,c=null,d=this.renderer.createElement("button");d.type="button",d.innerHTML=` + + + + `,d.style.cssText=` + background: transparent; + border: none; + cursor: pointer; + padding: 4px; + display: flex; + align-items: center; + margin-bottom: 8px; + `,d.addEventListener("click",()=>{c&&clearInterval(c),this.showForgotPasswordForm(t,r,i)});let u=this.renderer.createElement("div");u.textContent="Change Password",u.style.cssText=` + font-size: 16px; + line-height: 20px; + font-weight: 600; + color: ${s?"#ffffff":"#1f2937"}; + margin-bottom: 8px; + `;let p=this.renderer.createElement("p");p.style.cssText=` + font-size: 14px; + color: ${s?"#e5e7eb":"#5d6164"}; + margin: 0 0 8px 0; + `,p.innerHTML=`${i} Change`,p.querySelector("a")?.addEventListener("click",()=>{c&&clearInterval(c),this.showForgotPasswordForm(t,r,i)});let f=this.renderer.createElement("button");f.type="button",f.style.cssText=` + background: transparent; + border: none; + color: #1976d2; + font-size: 14px; + cursor: pointer; + padding: 4px 0; + margin-bottom: 12px; + `;let h=()=>{l>0?(f.textContent=`Resend OTP ${l}`,f.disabled=!0,f.style.opacity="0.6"):(f.textContent="Resend OTP",f.disabled=!1,f.style.opacity="1")};h(),c=setInterval(()=>{l>0?(l--,h()):clearInterval(c)},1e3),f.addEventListener("click",()=>{if(l>0)return;f.disabled=!0;let V={state:r?.state||this.loginWidgetData?.state,user:i};this.otpService.resetPassword(V).subscribe(M=>{M?.hasError||(l=15,h(),c=setInterval(()=>{l>0?(l--,h()):clearInterval(c)},1e3)),f.disabled=l>0},()=>{f.disabled=!1})});let v=this.renderer.createElement("input");v.type="number",v.placeholder="Enter OTP",v.autocomplete="off",v.style.cssText=` + width: 100%; + height: 44px; + padding: 0 16px; + border: ${s?"1px solid #ffffff":"1px solid #cbd5e1"}; + border-radius: ${a}; + background: ${s?"transparent":"#ffffff"}; + color: ${s?"#ffffff":"#1f2937"}; + font-size: 14px; + outline: none; + box-sizing: border-box; + margin-bottom: 12px; + `;let b=this.renderer.createElement("input");b.type="password",b.placeholder="New Password",b.autocomplete="off",b.style.cssText=v.style.cssText;let _=this.renderer.createElement("input");_.type="password",_.placeholder="Confirm Password",_.autocomplete="off",_.style.cssText=v.style.cssText;let y=this.renderer.createElement("p");y.textContent="Password should contain at least one Capital Letter, one Small Letter, one Digit and one Symbol (min 8 characters)",y.style.cssText=` + font-size: 12px; + color: ${s?"#9ca3af":"#6b7280"}; + margin: -8px 0 12px 0; + `;let S=this.renderer.createElement("div");S.style.cssText=` + color: #d14343; + font-size: 14px; + min-height: 16px; + display: none; + margin-bottom: 8px; + `;let w=this.renderer.createElement("button");w.textContent="Submit",w.style.cssText=` + height: 44px; + padding: 0 12px; + background-color: #3f51b5; + color: #ffffff; + border: none; + border-radius: ${a}; + font-size: 14px; + font-weight: 600; + cursor: pointer; + width: 100%; + box-shadow: 0 1px 2px rgba(0,0,0,0.08); + `;let P=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{8,}$/,N=()=>{let V=v.value?.trim(),M=b.value,K=_.value;if(!V){this.domBuilder.setInlineError(S,"OTP is required.");return}if(!M){this.domBuilder.setInlineError(S,"Password is required.");return}if(M.length<8){this.domBuilder.setInlineError(S,"Password must be at least 8 characters.");return}if(!P.test(M)){this.domBuilder.setInlineError(S,"Password should contain at least one Capital Letter, one Small Letter, one Digit and one Symbol.");return}if(M!==K){this.domBuilder.setInlineError(S,"Passwords do not match.");return}this.domBuilder.setInlineError(S,"");let Y=w.textContent||"Submit";w.disabled=!0,w.textContent="Please wait...";let T=this.encryptPassword(M),I={state:r?.state||this.loginWidgetData?.state,user:i,password:T,otp:parseInt(V,10)};this.otpService.verfyResetPasswordOtp(I).subscribe(O=>{if(w.disabled=!1,w.textContent=Y,O?.hasError){this.domBuilder.setInlineError(S,O?.errors?.[0]||"Unable to reset password. Please try again.");return}c&&clearInterval(c),this.restoreLoginForm(t,r)},O=>{w.disabled=!1,w.textContent=Y,this.domBuilder.setInlineError(S,O?.error?.errors?.[0]||"Failed to reset password. Please try again.")})};w.addEventListener("click",N),this.renderer.appendChild(t,d),this.renderer.appendChild(t,u),this.renderer.appendChild(t,p),this.renderer.appendChild(t,f),this.renderer.appendChild(t,v),this.renderer.appendChild(t,b),this.renderer.appendChild(t,_),this.renderer.appendChild(t,y),this.renderer.appendChild(t,S),this.renderer.appendChild(t,w)}restoreLoginForm(t,r){t.innerHTML="",this.buildLoginFormContent(t,r)}buildLoginFormContent(t,r){let i=this.widgetTheme(),o=this.getBorderRadiusCssValue(i?.ui_preferences?.border_radius),a=this.getPrimaryColorForCurrentTheme(i?.ui_preferences),s=this.renderer.createElement("div");s.textContent="Login",s.style.cssText=`font-size:16px;line-height:20px;font-weight:600;color:${this.themeService.isDark()?"#ffffff":"#1f2937"};margin-bottom:0;text-align:center;`;let l=this.renderer.createElement("button");l.textContent="Login",l.style.cssText=`height:44px;padding:0 12px;background-color:#3f51b5;color:#ffffff;border:none;border-radius:${o};font-size:14px;font-weight:600;cursor:pointer;width:100%;box-shadow:0 1px 2px rgba(0,0,0,0.08);margin-top:4px;`;let c=p=>this.showForgotPasswordForm(t,r,p),d=i?.ui_preferences?.logo_url,u=this.domBuilder.createLogoElement(this.renderer,d);u&&this.renderer.appendChild(t,u),this.renderer.appendChild(t,s),this.buildLoginFields(t,r,l,o,a,c)}buildLoginFields(t,r,i,o,a,s){let l=this.themeService.isDark(),c=this.version==="v2"?a:l?"#e5e7eb":"#5d6164",d=this.renderer.createElement("div");d.style.cssText="display:flex;flex-direction:column;gap:6px;";let u=this.renderer.createElement("input");u.type="text",u.placeholder="Email or Mobile",u.autocomplete="off",u.style.cssText=`width:100%;height:44px;padding:0 16px;border:1px solid ${l?"#ffffff":"#cbd5e1"};border-radius:${o};background:${l?"transparent":"#ffffff"};color:${l?"#ffffff":"#1f2937"};font-size:14px;outline:none;box-sizing:border-box;`;let p=this.renderer.createElement("p");p.textContent="Note: Please enter your Mobile number with the country code (e.g. 91)",p.style.cssText=`font-size:12px;line-height:18px;color:${c};margin:0;`;let f=this.renderer.createElement("div");f.style.cssText="display:flex;flex-direction:column;gap:6px;position:relative;";let h=this.renderer.createElement("div");h.style.cssText="position:relative;display:flex;align-items:center;";let v=this.renderer.createElement("input");v.type="password",v.placeholder="Password",v.autocomplete="off",v.style.cssText=`width:100%;height:44px;padding:0 44px 0 16px;border:1px solid ${l?"#ffffff":"#cbd5e1"};border-radius:${o};background:${l?"transparent":"#ffffff"};color:${l?"#ffffff":"#1f2937"};font-size:14px;outline:none;box-sizing:border-box;`,this.domBuilder.addPasswordVisibilityToggle(this.renderer,v,h,this.themeService.resolvedTheme()),this.renderer.appendChild(h,v);let b=this.renderer.createElement("div");b.style.cssText="width:100%;display:flex;justify-content:center;padding:8px 0;box-sizing:border-box;";let _=this.renderer.createElement("div");_.style.cssText=`display:inline-block;border-radius:${o};`,this.renderer.appendChild(b,_);let y="",S=null,w=this.domBuilder.createErrorElement(this.renderer),P=this.renderer.createElement("div");P.style.cssText="width:100%;display:flex;justify-content:flex-end;margin-top:4px;";let N=this.renderer.createElement("a");N.href="javascript:void(0)",N.textContent="Forgot Password?",N.style.cssText="font-size:13px;font-weight:400;color:#1976d2;text-decoration:none;",N.addEventListener("click",()=>s(u.value?.trim()||"")),this.renderer.appendChild(P,N);let V=()=>{let Y=this.getHCaptchaInstance();Y&&S!==null&&S!==void 0&&Y.reset(S),y=""},M=()=>{let Y=this.getHCaptchaInstance();if(!Y||!ft.hCaptchaSiteKey){this.domBuilder.setInlineError(w,"Unable to load hCaptcha. Please refresh and try again.");return}_.innerHTML="",S=Y.render(_,{sitekey:ft.hCaptchaSiteKey,theme:l?xt.Dark:xt.Light,callback:T=>{y=T,this.domBuilder.setInlineError(w,"")},"expired-callback":()=>{y=""},"error-callback":()=>{y="",this.domBuilder.setInlineError(w,"hCaptcha verification failed. Please retry.")}})};this.ensureHCaptchaScriptLoaded(M);let K=()=>this.handlePasswordAuthenticationLogin(r,u,v,w,i,()=>y,V);i.addEventListener("click",K),[u,v].forEach(Y=>Y.addEventListener("keydown",T=>{T.key==="Enter"&&(T.preventDefault(),K())})),this.renderer.appendChild(d,u),this.renderer.appendChild(d,p),this.renderer.appendChild(f,h),this.renderer.appendChild(t,d),this.renderer.appendChild(t,f),this.renderer.appendChild(t,P),this.renderer.appendChild(t,b),this.renderer.appendChild(t,w),this.renderer.appendChild(t,i)}ensureHCaptchaScriptLoaded(t){if(this.getHCaptchaInstance()){t();return}if(this.hcaptchaRenderQueue.push(t),this.hcaptchaLoading)return;this.hcaptchaLoading=!0;let r=this.renderer.createElement("script");r.src="https://js.hcaptcha.com/1/api.js?render=explicit",r.async=!0,r.defer=!0,r.onload=()=>{this.hcaptchaLoading=!1;let i=[...this.hcaptchaRenderQueue];this.hcaptchaRenderQueue=[],i.forEach(o=>o())},r.onerror=()=>{this.hcaptchaLoading=!1,this.hcaptchaRenderQueue=[]},this.renderer.appendChild(document.head,r)}getHCaptchaInstance(){return window?.hcaptcha}encryptPassword(t){return this.otpUtilityService.aesEncrypt(JSON.stringify(t),ft.uiEncodeKey,ft.uiIvKey,!0)}checkAndAppendCreateAccountText(t,r,i,o,a,s){r===i&&(o&&clearTimeout(o),a&&clearTimeout(a),s&&clearTimeout(s),this.showSkeleton&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t),this.domBuilder.forceRemoveAllSkeletonLoaders(this.renderer,this.referenceElement),t.querySelectorAll("button").forEach(c=>{c.style.visibility="visible"})),setTimeout(()=>{this.appendCreateAccountText(t)},100))}appendButton(t,r){this.showSkeleton&&(this.showSkeleton=!1,this.domBuilder.removeSkeletonLoader(this.renderer,t));let i=this.widgetTheme(),o=this.getBorderRadiusCssValue(i?.ui_preferences?.border_radius),a=this.renderer.createElement("button"),s=this.renderer.createElement("img"),l=r?.service_id===zt.Msg91OtpService,c=this.version!=="v1",d=this.show_social_login_icons,u=this.input_fields==="top";if(d){let p=t.querySelector("[data-icons-container]");if(!p)if(p=this.renderer.createElement("div"),p.setAttribute("data-icons-container","true"),p.style.cssText=` + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 35px; + margin: 8px 8px 16px 8px; + width: 316px; + `,u)this.renderer.appendChild(t,p);else{let h=t.querySelector("[data-or-divider]");h?this.renderer.insertBefore(t,p,h):t.firstChild?this.renderer.insertBefore(t,p,t.firstChild):this.renderer.appendChild(t,p)}a.setAttribute("data-paw-button","true"),a.setAttribute("data-paw-icon-only","true"),a.style.cssText=` + outline: none; + padding: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 14px; + background-color: transparent; + border: ${this.themeService.isDark()?"1px solid #ffffff":"1px solid #d1d5db"}; + border-radius: ${o}; + cursor: pointer; + visibility: ${l?"hidden":"visible"}; + `;let f=this.shouldInvertIcon(r);s.style.cssText=` + height: 24px; + width: 24px; + ${f?"filter: invert(1);":""} + `,s.src=r.icon,s.alt=r.text,s.loading="lazy",l&&a.setAttribute("data-service-id",r.service_id),a.addEventListener("click",()=>{r?.urlLink?window.open(r.urlLink,this.target):r?.service_id===zt.Msg91OtpService?this.otpWidgetService.openWidget():r?.service_id===zt.PasswordAuthentication&&this.setShowLogin(!0)}),this.renderer.appendChild(a,s),this.renderer.appendChild(p,a)}else{let p=this.renderer.createElement("span");a.setAttribute("data-paw-button","true"),a.style.cssText=` + outline: none; + padding: 0 16px; + display: flex; + align-items: center; + justify-content: center; + ${c?"":"gap: 12px;"} + font-size: 14px; + background-color: transparent; + border: ${this.themeService.isDark()?"1px solid #ffffff":"1px solid #000000"}; + border-radius: ${o}; + height: 44px; + color: ${this.themeService.isDark()?"#ffffff":"#111827"}; + margin: 8px 8px 16px 8px; + cursor: pointer; + width: ${c?"316px":"260px"}; + visibility: ${l?"hidden":"visible"}; // Hide only OTP buttons until ready + `;let f=this.shouldInvertIcon(r);if(s.style.cssText=` + height: 20px; + width: 20px; + ${f?"filter: invert(1);":""} + `,p.style.cssText=` + color: ${this.themeService.isDark()?"#ffffff":"#111827"}; + font-weight: 600; + `,s.src=r.icon,s.alt=r.text,s.loading="lazy",p.innerText=r.text,l&&a.setAttribute("data-service-id",r.service_id),a.addEventListener("click",()=>{r?.urlLink?window.open(r.urlLink,this.target):r?.service_id===zt.Msg91OtpService?this.otpWidgetService.openWidget():r?.service_id===zt.PasswordAuthentication&&this.setShowLogin(!0)}),c){let h=this.renderer.createElement("div");h.style.cssText=` + display: flex; + align-items: center; + justify-content: flex-start; + gap: 12px; + `,this.renderer.appendChild(h,s),this.renderer.appendChild(h,p),this.renderer.appendChild(a,h)}else this.renderer.appendChild(a,s),this.renderer.appendChild(a,p);if(u)this.renderer.appendChild(t,a);else{let h=t.querySelector("[data-or-divider]");h?this.renderer.insertBefore(t,a,h):t.firstChild?this.renderer.insertBefore(t,a,t.firstChild):this.renderer.appendChild(t,a)}}}hasOtpButton(t){return t.some(r=>r?.service_id===zt.Msg91OtpService)}appendCreateAccountText(t){if(!this.isCreateAccountTextAppended||t.querySelector('p[data-create-account="true"]')||this.createAccountTextAppended)return;this.createAccountTextAppended=!0;let i=this.widgetTheme(),o=this.getPrimaryColorForCurrentTheme(i?.ui_preferences),a=this.renderer.createElement("p"),s=this.renderer.createElement("a");a.setAttribute("data-create-account","true"),a.style.cssText=` + margin: 20px 8px 8px 8px !important; + font-size: 14px !important; + outline: none !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + gap: 8px !important; + color: ${o} !important; + cursor: pointer !important; + width: ${this.version==="v1"?"260px":"316px"} !important; +`,s.style.cssText=` + color: #007bff !important; + text-decoration: none !important; + cursor: pointer !important; + font-weight: 500 !important; +`,a.innerHTML="Are you a new user? ",s.textContent=i?.ui_preferences?.sign_up_button_text||"Create an account",s.addEventListener("click",l=>{l.preventDefault(),this.cameFromLogin=!1,this.cameFromSendOtpCenter=!1,this.setShowRegistration(!0)}),this.renderer.appendChild(a,s),this.renderer.appendChild(t,a)}hitCallbackUrl(t,r){this.otpService.callBackUrl(t,r).subscribe(i=>{this.successReturn(i),i?.data?.redirect_to?setTimeout(()=>{location.href=i?.data?.redirect_to},100):this.toggleSendOtp()},i=>{i?.status===403&&(this.setShowRegistration(!0),this.show.set(!0),this.registrationViaLogin=!1)})}setShowRegistration(t,r){this.ngZone.run(()=>{this.registrationViaLogin?t?(this.setShowLogin(!1),this.show.set(!0)):(this.dialogPortalRef?.detach(),this.dialogPortalRef=null,this.cameFromLogin?(this.setShowLogin(!0),this.show.set(!0)):this.cameFromSendOtpCenter?(this.otpWidgetService.openLogin(!1),this.show.set(!0)):(this.setShowLogin(!1),this.show.set(!1)),this.cameFromLogin=!1,this.cameFromSendOtpCenter=!1):(this.setShowLogin(!1),this.referenceElement&&this.show.set(t)),this.showRegistration.set(t),r&&(this.prefillDetails=r),t&&(this.cdr.detectChanges(),this.dialogPortalEl?.nativeElement&&!this.dialogPortalRef&&(this.dialogPortalRef=this.widgetPortal.attach(this.dialogPortalEl.nativeElement)))})}setShowLogin(t){this.ngZone.run(()=>{this.referenceElement&&this.show.set(t),this.otpWidgetService.openLogin(t),t?(this.cdr.detectChanges(),this.dialogPortalEl?.nativeElement&&!this.dialogPortalRef&&(this.dialogPortalRef=this.widgetPortal.attach(this.dialogPortalEl.nativeElement))):(this.dialogPortalRef?.detach(),this.dialogPortalRef=null)})}setShowRegistrationFromLogin(t){this.cameFromLogin=!0,this.cameFromSendOtpCenter=!1,this.setShowRegistration(!0,t)}setShowRegistrationFromSendOtpCenter(t){this.cameFromSendOtpCenter=!0,this.cameFromLogin=!1,this.setShowRegistration(!0,t)}returnSuccessObj(t){typeof this.successReturn=="function"&&this.successReturn(t)}returnFailureObj(t){typeof this.failureReturn=="function"&&this.failureReturn(t)}handleSubscriptionToggle(t){if(this.isPreview){this.toggleSendOtp(),this.isPreview=!1;return}}clearSubscriptionPlans(t){if(t){let r=t.querySelector(".subscription-plans-container");r&&this.renderer.removeChild(t,r)}}upgradeSubscription(t){this.isLogin&&this.store.dispatch(Vd({referenceId:this.referenceId,payload:{plan_code:t.plan_code},authToken:this.authToken})),this.store.pipe(ke(k4),Je(r=>r&&r.data&&r.data.redirect_url),Tt(1),ce(this.destroy$)).subscribe(r=>{let i=this.isLogin?r?.data?.redirect_url:this.loginRedirectUrl;i&&(window.location.href=i)}),this.isLogin||(window.location.href=this.loginRedirectUrl)}reapplyInjectedButtonTheme(t){let r=this.referenceElement;if(!r)return;let i=this.widgetTheme(),o=this.getPrimaryColorForCurrentTheme(i?.ui_preferences),a=t?"#ffffff":"#111827",s=t?"1px solid #ffffff":"1px solid #000000",l=t?"1px solid #ffffff":"1px solid #d1d5db";r.querySelectorAll("button[data-paw-button]").forEach(d=>{if(d.hasAttribute("data-paw-icon-only"))d.style.border=l;else{d.style.border=s,d.style.color=a;let p=d.querySelector("span");p&&(p.style.color=a);let f=d.querySelector("img");if(f){let h=f.alt?.toLowerCase().includes("apple"),v=d.dataset.serviceId===String(zt.PasswordAuthentication);f.style.filter=t&&(h||v)?"invert(1)":""}}});let c=r.querySelector('p[data-create-account="true"]');c&&c.style.setProperty("color",o,"important")}shouldInvertIcon(t){let r=t?.text?.toLowerCase()?.includes("apple"),i=t?.service_id===zt.PasswordAuthentication;return this.themeService.isDark()&&(r||i)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=yt({type:e,selectors:[["proxy-auth-widget"]],viewQuery:function(r,i){if(r&1&&bn(HY,5),r&2){let o;Ot(o=Nt())&&(i.dialogPortalEl=o.first)}},inputs:{referenceId:"referenceId",target:"target",showCompanyDetails:"showCompanyDetails",userToken:"userToken",isRolePermission:"isRolePermission",loginRedirectUrl:"loginRedirectUrl",authToken:"authToken",type:"type",isPreview:"isPreview",isLogin:"isLogin",theme:"theme",version:"version",exclude_role_ids:"exclude_role_ids",include_role_ids:"include_role_ids",isHidden:"isHidden",input_fields:"input_fields",show_social_login_icons:"show_social_login_icons",isRegisterFormOnly:"isRegisterFormOnly",successReturn:"successReturn",failureReturn:"failureReturn",otherData:"otherData"},features:[Dt,dr],decls:2,vars:2,consts:[["dialogPortal",""],[3,"h-full","authorization-container","dark"],[3,"dark"],[3,"userToken","pass","theme","isHidden","exclude_role_ids","include_role_ids"],[3,"subscription-dialog"],[3,"authToken","theme"],[3,"dark-theme","border-radius","display"],[3,"togglePopUp","referenceId","isPreview","isLogin","loginRedirectUrl"],[3,"togglePopUp","openPopUp","successReturn","failureReturn","referenceId","serviceData","target","version","isCreateAccountLink","theme","input_fields","show_social_login_icons","isUserProxyContainer"],["aria-hidden","true",1,"w-dialog-backdrop",3,"click"],["role","dialog","aria-modal","true",1,"w-dialog-panel"],[1,"w-dialog-header"],[3,"referenceId","serviceData","loginServiceData","registrationViaLogin","showCompanyDetails","version","theme","prefillDetails","firstName","lastName","email","signupServiceId","isRegisterFormOnly"],[3,"loginServiceData","theme"],[1,"fp-dialog-content"],[1,"w-dialog-title"],["type","button","aria-label","Close dialog",1,"w-btn-close",3,"click"],["viewBox","0 0 12 12","fill","none","aria-hidden","true",1,"size-4"],["d","M11.8334 1.34163L10.6584 0.166626L6.00008 4.82496L1.34175 0.166626L0.166748 1.34163L4.82508 5.99996L0.166748 10.6583L1.34175 11.8333L6.00008 7.17496L10.6584 11.8333L11.8334 10.6583L7.17508 5.99996L11.8334 1.34163Z","fill","currentColor"],[3,"togglePopUp","successReturn","failureReturn","referenceId","serviceData","loginServiceData","registrationViaLogin","showCompanyDetails","version","theme","prefillDetails","firstName","lastName","email","signupServiceId","isRegisterFormOnly"],[3,"togglePopUp","closePopUp","openPopUp","failureReturn","loginServiceData","theme"],[3,"togglePopUp","successReturn","failureReturn","referenceId","version","theme","isUserProxyContainer","hideInlineHeader"]],template:function(r,i){r&1&&(U(0,QY,6,7,"div",1),U(1,rQ,10,15,"div",2)),r&2&&(B(i.show()?0:-1),x(),B(i.showRegistration()||i.showLogin()||i.showForgotPassword()?1:-1))},dependencies:[wn,VA,K4,L4,vg,j4,U4,G4,q4],styles:[`@charset "UTF-8";@layer properties;.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}@media(max-width:768px){.mb-sm-20{margin-bottom:20px}.mt-sm-20{margin-top:20px}}.mb-20{margin-bottom:20px!important}.mt-20{margin-top:20px!important}.mb-30{margin-bottom:30px!important}.mt-30{margin-top:30px!important}.my-20{margin-top:20px!important;margin-bottom:20px!important}.pd-1{padding:1px!important}.ml-auto{margin-left:auto!important}.mr-auto{margin-right:auto!important}.d-none{display:none}.d-block{display:block!important}.d-inline-block{display:inline-block!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-grid{display:grid!important}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.justify-content-between{justify-content:space-between}.justify-content-start{justify-content:start}.justify-content-end{justify-content:flex-end}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-stretch{align-items:stretch}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:16px}.gap-4{gap:24px}.gap-5{gap:32px}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-900: oklch(39.6% .141 25.723);--color-orange-50: oklch(98% .016 73.684);--color-orange-300: oklch(83.7% .128 66.29);--color-orange-700: oklch(55.3% .195 38.402);--color-orange-900: oklch(40.8% .123 38.172);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-300: oklch(87.1% .15 154.449);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-500: oklch(69.6% .17 162.48);--color-teal-50: oklch(98.4% .014 180.72);--color-teal-100: oklch(95.3% .051 180.801);--color-teal-300: oklch(85.5% .138 181.071);--color-teal-400: oklch(77.7% .152 181.912);--color-teal-500: oklch(70.4% .14 182.503);--color-teal-600: oklch(60% .118 184.704);--color-teal-700: oklch(51.1% .096 186.391);--color-teal-900: oklch(38.6% .063 188.416);--color-sky-400: oklch(74.6% .16 232.661);--color-sky-500: oklch(68.5% .169 237.323);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-indigo-50: oklch(96.2% .018 272.314);--color-indigo-100: oklch(93% .034 272.788);--color-indigo-200: oklch(87% .065 274.039);--color-indigo-300: oklch(78.5% .115 274.713);--color-indigo-400: oklch(67.3% .182 276.935);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-indigo-800: oklch(39.8% .195 277.366);--color-indigo-900: oklch(35.9% .144 278.697);--color-indigo-950: oklch(25.7% .09 281.288);--color-violet-300: oklch(81.1% .111 293.571);--color-violet-400: oklch(70.2% .183 293.541);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-300: oklch(82.7% .119 306.383);--color-purple-400: oklch(71.4% .203 305.504);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-300: oklch(82.3% .12 346.018);--color-pink-400: oklch(71.8% .202 349.761);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-700: oklch(52.5% .223 3.958);--color-rose-50: oklch(96.9% .015 12.422);--color-rose-300: oklch(81% .117 11.638);--color-rose-400: oklch(71.2% .194 13.428);--color-rose-500: oklch(64.5% .246 16.439);--color-rose-700: oklch(51.4% .222 16.935);--color-rose-900: oklch(41% .159 10.272);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-gray-950: oklch(13% .028 261.692);--color-neutral-100: oklch(97% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--breakpoint-xl: 80rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 56rem;--container-5xl: 64rem;--container-7xl: 80rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--leading-relaxed: 1.625;--radius-xs: .125rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.\\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-0{inset:calc(var(--spacing) * -0)}.-inset-1{inset:calc(var(--spacing) * -1)}.-inset-2{inset:calc(var(--spacing) * -2)}.-inset-3{inset:calc(var(--spacing) * -3)}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-x-px{inset-inline:1px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-px{top:-1px}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-full{right:100%}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\\[9999\\]{z-index:9999}.order-last{order:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.\\!m-0{margin:calc(var(--spacing) * 0)!important}.-m-0{margin:calc(var(--spacing) * -0)}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-20{margin-block:calc(var(--spacing) * 20)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-32{margin-top:calc(var(--spacing) * -32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-30{margin-top:calc(var(--spacing) * 30)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.-mr-0{margin-right:calc(var(--spacing) * -0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-auto{margin-right:auto}.\\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-30{margin-bottom:calc(var(--spacing) * 30)}.-ml-0{margin-left:calc(var(--spacing) * -0)}.-ml-0\\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-0\\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-0{width:calc(var(--spacing) * 0);height:calc(var(--spacing) * 0)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.size-32{width:calc(var(--spacing) * 32);height:calc(var(--spacing) * 32)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.\\!h-3\\.5{height:calc(var(--spacing) * 3.5)!important}.\\!h-4{height:calc(var(--spacing) * 4)!important}.\\!h-9{height:calc(var(--spacing) * 9)!important}.\\!h-12{height:calc(var(--spacing) * 12)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-32{height:calc(var(--spacing) * 32)}.h-100{height:calc(var(--spacing) * 100)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-12{max-height:calc(var(--spacing) * 12)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\\[65vh\\]{max-height:65vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[650px\\]{max-height:650px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\\[400px\\]{min-height:400px}.min-h-\\[calc\\(100vh-64px\\)\\]{min-height:calc(100vh - 64px)}.min-h-full{min-height:100%}.\\!w-3\\.5{width:calc(var(--spacing) * 3.5)!important}.\\!w-4{width:calc(var(--spacing) * 4)!important}.\\!w-9{width:calc(var(--spacing) * 9)!important}.\\!w-12{width:calc(var(--spacing) * 12)!important}.\\!w-\\[56px\\]{width:56px!important}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\\/2{width:50%}.w-3{width:calc(var(--spacing) * 3)}.w-3\\/4{width:75%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-85{width:calc(var(--spacing) * 85)}.w-100{width:calc(var(--spacing) * 100)}.w-\\[85\\%\\]{width:85%}.w-\\[180px\\]{width:180px}.w-\\[200px\\]{width:200px}.w-\\[246px\\]{width:246px}.w-\\[250px\\]{width:250px}.w-\\[350px\\]{width:350px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[480px\\]{max-width:480px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.\\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[150px\\]{min-width:150px}.min-w-\\[720px\\]{min-width:720px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-auto{flex:auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x: calc(var(--spacing) * 0);--tw-border-spacing-y: calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-top{transform-origin:top}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\\[appearance\\:textfield\\]{appearance:textfield}.appearance-none{appearance:none}.\\[grid-template-columns\\:repeat\\(auto-fill\\,minmax\\(168px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[1fr_auto_auto\\]{grid-template-columns:1fr auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:calc(var(--spacing) * 0)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}.gap-y-10{row-gap:calc(var(--spacing) * 10)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\\[var\\(--color-common-border\\)\\]>:not(:last-child)){border-color:var(--color-common-border)}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-tl-lg{border-top-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr-lg{border-top-right-radius:var(--radius-lg)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-br-lg{border-bottom-right-radius:var(--radius-lg)}.rounded-bl-lg{border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-700{border-color:var(--color-gray-700)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-600{border-color:var(--color-indigo-600)}.border-indigo-800{border-color:var(--color-indigo-800)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-white{border-top-color:var(--color-white)}.border-b-white{border-bottom-color:var(--color-white)}.\\[background-color\\:var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.\\[background-color\\:var\\(--color-otp-primary-light\\)\\]{background-color:var(--color-otp-primary-light)}.\\[background-color\\:var\\(--color-whatsApp-primary-light\\)\\]{background-color:var(--color-whatsApp-primary-light)}.bg-\\[var\\(--color-common-bg-light\\)\\]{background-color:var(--color-common-bg-light)}.bg-\\[var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.bg-\\[var\\(--color-common-hover\\)\\]{background-color:var(--color-common-hover)}.bg-\\[var\\(--color-common-primary-light\\,\\#e8f5e9\\)\\]{background-color:var(--color-common-primary-light,#e8f5e9)}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-current{background-color:currentcolor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-900{background-color:var(--color-green-900)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-indigo-700{background-color:var(--color-indigo-700)}.bg-indigo-800{background-color:var(--color-indigo-800)}.bg-indigo-900{background-color:var(--color-indigo-900)}.bg-indigo-950{background-color:var(--color-indigo-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-700{background-color:var(--color-purple-700)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-900\\/20{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-red-900\\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-gray-300{fill:var(--color-gray-300)}.fill-gray-400{fill:var(--color-gray-400)}.fill-green-400{fill:var(--color-green-400)}.fill-indigo-400{fill:var(--color-indigo-400)}.fill-indigo-500{fill:var(--color-indigo-500)}.fill-pink-400{fill:var(--color-pink-400)}.fill-purple-400{fill:var(--color-purple-400)}.fill-red-400{fill:var(--color-red-400)}.fill-red-500{fill:var(--color-red-500)}.fill-white{fill:var(--color-white)}.fill-yellow-400{fill:var(--color-yellow-400)}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-gray-400{stroke:var(--color-gray-400)}.stroke-green-400{stroke:var(--color-green-400)}.stroke-indigo-400{stroke:var(--color-indigo-400)}.stroke-pink-400{stroke:var(--color-pink-400)}.stroke-red-400{stroke:var(--color-red-400)}.stroke-violet-400{stroke:var(--color-violet-400)}.stroke-white{stroke:var(--color-white)}.stroke-yellow-300{stroke:var(--color-yellow-300)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\\!p-0{padding:calc(var(--spacing) * 0)!important}.\\!p-2{padding:calc(var(--spacing) * 2)!important}.\\!p-3{padding:calc(var(--spacing) * 3)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-px{padding-bottom:1px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-12{padding-left:calc(var(--spacing) * 12)}.\\!text-right{text-align:right!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\\!text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading, var(--text-4xl--line-height))!important}.\\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading, var(--text-base--line-height))!important}.\\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading, var(--text-sm--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\\!text-\\[48px\\]{font-size:48px!important}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight: var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-nowrap{text-wrap:nowrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.\\[color\\:var\\(--color-common-icon\\)\\]{color:var(--color-common-icon)}.\\[color\\:var\\(--color-common-text-2\\)\\]{color:var(--color-common-text-2)}.\\[color\\:var\\(--color-link-color\\)\\]{color:var(--color-link-color)}.\\[color\\:var\\(--color-otp-primary\\)\\]{color:var(--color-otp-primary)}.\\[color\\:var\\(--color-whatsApp-primary\\)\\]{color:var(--color-whatsApp-primary)}.text-\\[var\\(--color-common-primary\\)\\]{color:var(--color-common-primary)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-200{color:var(--color-green-200)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-100{color:var(--color-indigo-100)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-pink-400{color:var(--color-pink-400)}.text-purple-400{color:var(--color-purple-400)}.text-purple-700{color:var(--color-purple-700)}.text-red-200{color:var(--color-red-200)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-sky-400{color:var(--color-sky-400)}.text-teal-400{color:var(--color-teal-400)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-white{color:var(--color-white)}.text-yellow-100{color:var(--color-yellow-100)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-30{opacity:30%}.opacity-40{opacity:40%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-1{--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-gray-200{--tw-ring-color: var(--color-gray-200)}.ring-gray-300{--tw-ring-color: var(--color-gray-300)}.ring-gray-700{--tw-ring-color: var(--color-gray-700)}.ring-gray-900{--tw-ring-color: var(--color-gray-900)}.ring-gray-900\\/5{--tw-ring-color: color-mix(in srgb, oklch(21% .034 264.665) 5%, transparent)}@supports (color: color-mix(in lab,red,red)){.ring-gray-900\\/5{--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent)}}.ring-green-500{--tw-ring-color: var(--color-green-500)}.ring-indigo-300{--tw-ring-color: var(--color-indigo-300)}.ring-indigo-500{--tw-ring-color: var(--color-indigo-500)}.ring-red-500{--tw-ring-color: var(--color-red-500)}.ring-white{--tw-ring-color: var(--color-white)}.inset-ring-blue-400{--tw-inset-ring-color: var(--color-blue-400)}.inset-ring-gray-400{--tw-inset-ring-color: var(--color-gray-400)}.inset-ring-gray-700{--tw-inset-ring-color: var(--color-gray-700)}.inset-ring-green-500{--tw-inset-ring-color: var(--color-green-500)}.inset-ring-indigo-400{--tw-inset-ring-color: var(--color-indigo-400)}.inset-ring-pink-400{--tw-inset-ring-color: var(--color-pink-400)}.inset-ring-purple-400{--tw-inset-ring-color: var(--color-purple-400)}.inset-ring-red-400{--tw-inset-ring-color: var(--color-red-400)}.inset-ring-white{--tw-inset-ring-color: var(--color-white)}.inset-ring-yellow-400{--tw-inset-ring-color: var(--color-yellow-400)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:-1px}.outline-offset-2{outline-offset:2px}.outline-black{outline-color:var(--color-black)}.outline-blue-500{outline-color:var(--color-blue-500)}.outline-gray-600{outline-color:var(--color-gray-600)}.outline-gray-700{outline-color:var(--color-gray-700)}.outline-gray-900{outline-color:var(--color-gray-900)}.outline-green-500{outline-color:var(--color-green-500)}.outline-indigo-400{outline-color:var(--color-indigo-400)}.outline-indigo-500{outline-color:var(--color-indigo-500)}.outline-red-500{outline-color:var(--color-red-500)}.outline-white{outline-color:var(--color-white)}.outline-yellow-500{outline-color:var(--color-yellow-500)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-discrete{transition-behavior:allow-discrete}.duration-100{--tw-duration: .1s;transition-duration:.1s}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.forced-color-adjust-none{forced-color-adjust:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset: inset}.placeholder\\:text-gray-400::placeholder{color:var(--color-gray-400)}.read-only\\:cursor-default:read-only{cursor:default}.read-only\\:opacity-60:read-only{opacity:60%}@media(hover:hover){.hover\\:border-gray-200:hover{border-color:var(--color-gray-200)}}@media(hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}}@media(hover:hover){.hover\\:bg-\\[var\\(--color-common-hover\\)\\]:hover{background-color:var(--color-common-hover)}}@media(hover:hover){.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}}@media(hover:hover){.hover\\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}}@media(hover:hover){.hover\\:bg-red-500:hover{background-color:var(--color-red-500)}}@media(hover:hover){.hover\\:text-gray-500:hover{color:var(--color-gray-500)}}@media(hover:hover){.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}@media(hover:hover){.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media(hover:hover){.hover\\:text-indigo-600:hover{color:var(--color-indigo-600)}}@media(hover:hover){.hover\\:text-white:hover{color:var(--color-white)}}@media(hover:hover){.hover\\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\\:shadow-sm:hover{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-indigo-500:focus{--tw-ring-color: var(--color-indigo-500)}.focus\\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\\:outline-offset-2:focus{outline-offset:2px}.focus\\:outline-indigo-500:focus{outline-color:var(--color-indigo-500)}.focus\\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-indigo-500:focus-visible{outline-color:var(--color-indigo-500)}.focus-visible\\:outline-indigo-600:focus-visible{outline-color:var(--color-indigo-600)}.focus-visible\\:outline-red-500:focus-visible{outline-color:var(--color-red-500)}.active\\:bg-indigo-700:active{background-color:var(--color-indigo-700)}.active\\:bg-red-700:active{background-color:var(--color-red-700)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:50%}@media(width<80rem){.max-xl\\:w-full{width:100%}}@media(width<80rem){.max-xl\\:flex-col{flex-direction:column}}@media(width<64rem){.max-lg\\:w-full{width:100%}}@media(width<64rem){.max-lg\\:max-w-full{max-width:100%}}@media(width<64rem){.max-lg\\:flex-col{flex-direction:column}}@media(width<48rem){.max-md\\:hidden{display:none}}@media(width<48rem){.max-md\\:w-full{width:100%}}@media(width<48rem){.max-md\\:flex-col{flex-direction:column}}@media(width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}}@media(width>=40rem){.sm\\:left-1\\/2{left:50%}}@media(width>=40rem){.sm\\:col-span-2{grid-column:span 2 / span 2}}@media(width>=40rem){.sm\\:inline-flex{display:inline-flex}}@media(width>=40rem){.sm\\:w-full{width:100%}}@media(width>=40rem){.sm\\:max-w-md{max-width:var(--container-md)}}@media(width>=40rem){.sm\\:max-w-sm{max-width:var(--container-sm)}}@media(width>=40rem){.sm\\:-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}}@media(width>=40rem){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=40rem){.sm\\:flex-row{flex-direction:row}}@media(width>=40rem){.sm\\:items-center{align-items:center}}@media(width>=40rem){.sm\\:justify-between{justify-content:space-between}}@media(width>=40rem){.sm\\:gap-3{gap:calc(var(--spacing) * 3)}}@media(width>=40rem){.sm\\:p-6{padding:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:block{display:block}}@media(width>=64rem){.lg\\:grid{display:grid}}@media(width>=64rem){.lg\\:hidden{display:none}}@media(width>=64rem){.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(width>=64rem){.lg\\:flex-row{flex-direction:row}}@media(width>=64rem){:where(.lg\\:divide-x>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}@media(width>=64rem){:where(.lg\\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}}@media(width>=64rem){.lg\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}}@media(width>=64rem){.lg\\:px-4{padding-inline:calc(var(--spacing) * 4)}}@media(width>=64rem){.lg\\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(width>=64rem){.lg\\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(width>=64rem){.lg\\:pt-0{padding-top:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:text-left{text-align:left}}@media(prefers-color-scheme:dark){:where(.dark\\:divide-gray-800>:not(:last-child)){border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-600{border-color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-700{border-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-800{border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-indigo-400{border-color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:bg-black\\/70{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-black\\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-700{background-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-800{background-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-900{background-color:var(--color-gray-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-green-900\\/40{background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-green-900\\/40{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900{background-color:var(--color-indigo-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in oklab,var(--color-indigo-900) 20%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in oklab,var(--color-indigo-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in oklab,var(--color-indigo-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in oklab,var(--color-indigo-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-orange-900\\/40{background-color:color-mix(in srgb,oklch(40.8% .123 38.172) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-orange-900\\/40{background-color:color-mix(in oklab,var(--color-orange-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-purple-900\\/40{background-color:color-mix(in srgb,oklch(38.1% .176 304.987) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-purple-900\\/40{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-red-900\\/30{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-red-900\\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-rose-900\\/40{background-color:color-mix(in srgb,oklch(41% .159 10.272) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-rose-900\\/40{background-color:color-mix(in oklab,var(--color-rose-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/40{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/40{background-color:color-mix(in oklab,var(--color-teal-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/50{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/50{background-color:color-mix(in oklab,var(--color-teal-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-transparent{background-color:transparent}}@media(prefers-color-scheme:dark){.dark\\:text-gray-100{color:var(--color-gray-100)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-300{color:var(--color-gray-300)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-400{color:var(--color-gray-400)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-500{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-600{color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:text-green-300{color:var(--color-green-300)}}@media(prefers-color-scheme:dark){.dark\\:text-green-400{color:var(--color-green-400)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-300{color:var(--color-indigo-300)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-400{color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:text-orange-300{color:var(--color-orange-300)}}@media(prefers-color-scheme:dark){.dark\\:text-purple-300{color:var(--color-purple-300)}}@media(prefers-color-scheme:dark){.dark\\:text-red-400{color:var(--color-red-400)}}@media(prefers-color-scheme:dark){.dark\\:text-rose-300{color:var(--color-rose-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-300{color:var(--color-teal-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-400{color:var(--color-teal-400)}}@media(prefers-color-scheme:dark){.dark\\:text-white{color:var(--color-white)}}@media(prefers-color-scheme:dark){.dark\\:ring-gray-600{--tw-ring-color: var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}}@media(prefers-color-scheme:dark){.dark\\:placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:border-gray-500:hover{border-color:var(--color-gray-500)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-700:hover{background-color:var(--color-gray-700)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in oklab,var(--color-gray-800) 50%,transparent)}}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-200:hover{color:var(--color-gray-200)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-300:hover{color:var(--color-gray-300)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-indigo-400:hover{color:var(--color-indigo-400)}}}.\\[\\&\\:\\:-webkit-inner-spin-button\\]\\:appearance-none::-webkit-inner-spin-button{appearance:none}.\\[\\&\\:\\:-webkit-outer-spin-button\\]\\:appearance-none::-webkit-outer-spin-button{appearance:none}}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)){--mat-form-field-container-height: var(--custom-mat-form-field-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined{height:var(--mat-form-field-container-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix:has(.mat-mdc-chip-set){padding-top:8px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix{--mat-form-field-container-vertical-padding: 10px;min-height:var(--mat-form-field-container-height);height:var(--mat-form-field-container-height);padding-top:14px!important;padding-bottom:14px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(-27.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75))}mat-form-field.mat-mdc-form-field.no-padding .mat-mdc-form-field-subscript-wrapper{display:none}mat-paginator mat-form-field.mat-mdc-form-field{width:84px!important}@font-face{font-family:Inter;font-style:normal;font-weight:300;src:url("./media/Inter-Light.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url("./media/Inter-Regular.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:url("./media/Inter-Medium.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:url("./media/Inter-Bold.ttf") format("truetype")}.table-scroll{overflow-x:auto;width:100%}.default-table{box-shadow:none;width:100%}.default-table:has(.mat-no-data-row){height:100%}.default-table .mat-mdc-header-row .mat-mdc-header-cell{font-weight:600;font-size:12px;color:var(--color-table-head)!important;border-bottom-color:var(--color-table-head-border)!important}.default-table .mat-mdc-row .mat-mdc-cell{border-bottom-color:var(--color-table-cell-border)!important}.default-table .mat-mdc-row.highlight{background-color:var(--color-common-bg-lighter)}.default-table .mat-mdc-row:hover:not(.mat-no-data-row){background:var(--color-common-silver)}.default-table .mat-mdc-row.last-child .mat-mdc-cell{border-bottom:0}.default-table .mat-mdc-row.hover-action .actions{opacity:0}@media(hover:hover){.default-table .mat-mdc-row.hover-action:hover .actions{opacity:1}}@media(hover:none){.default-table .mat-mdc-row.hover-action .actions{opacity:1}}@media screen and (max-width:768px){.default-table.responsive-table{display:block!important}.default-table.responsive-table tbody{display:block!important;width:100%}.default-table.responsive-table tr.mat-mdc-header-row{display:none!important}.default-table.responsive-table tr.mat-mdc-row{display:block!important;height:auto!important;border-radius:8px;margin-bottom:12px;border:1px solid var(--color-common-border);box-shadow:0 1px 4px #0000000f;padding:4px 0}.default-table.responsive-table tr.mat-mdc-no-data-row{display:block!important;background:transparent;border:none;box-shadow:none;margin-bottom:0;padding:0}.default-table.responsive-table td.mat-mdc-cell{display:flex!important;flex-direction:row;justify-content:space-between;align-items:center;min-height:40px;height:auto!important;width:100%;padding:8px 16px!important;border-bottom:1px solid var(--color-table-cell-border)!important;box-sizing:border-box;font-size:13px;word-break:break-word}.default-table.responsive-table td.mat-mdc-cell:before{content:attr(data-label);font-weight:600;font-size:11px;text-transform:uppercase;color:var(--color-table-head);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;margin-right:12px}.default-table.responsive-table td.mat-mdc-cell:last-child{border-bottom:0!important}}.service-list.mat-mdc-list-base .mat-mdc-list-item .mdc-list-item__primary-text{display:flex;align-items:center;gap:8px}.mat-divider{border-top-color:var(--color-common-border)!important}.text-success{color:var(--color-common-green)!important}.text-danger{color:var(--mat-sys-error)!important}.text-primary{color:var(--mat-sys-primary)!important}.text-dark{color:var(--color-common-text)!important}.text-secondary{color:var(--color-common-dark)!important}.text-pending{color:var(--color-short-url-primary)}.text-grey{color:var(--color-common-grey)!important}.bg-gray{background-color:var(--color-common-bg)}.bg-light-grey{background-color:var(--color-common-graph-bg)!important}.w-break{word-break:break-word}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre a:link,pre a:visited,pre a:hover,pre a:active{color:var(--color-link-color)!important}.font-10{font-size:10px!important}.font-11{font-size:11px!important}.font-12{font-size:12px!important}.font-14{font-size:var(--font-size-common-14)!important}.font-20{font-size:var(--font-size-common-20)!important}.w-b-hyphens{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.overflow-dotted{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis}.box-shadow-none{box-shadow:none!important}.dark-theme .custom-datepicker .date-input .float-label{background:transparent!important}markdown pre{overflow:auto}markdown pre::-webkit-scrollbar{width:8px;height:8px}markdown pre::-webkit-scrollbar-track{background:#fff6;border-radius:4px}markdown pre::-webkit-scrollbar-thumb{background:#fff3}markdown pre::-webkit-scrollbar-thumb:hover{background:#fff3}.w-input{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input::placeholder{color:var(--color-gray-400)}.w-input:focus{border-color:var(--color-indigo-500)}.w-input:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input:focus{--tw-ring-color: var(--color-indigo-500)}.w-input:focus{--tw-outline-style: none;outline-style:none}.dark .w-input{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input::placeholder{color:var(--color-gray-500)}.w-input-sm{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-sm::placeholder{color:var(--color-gray-400)}.w-input-sm:focus{border-color:var(--color-indigo-500)}.w-input-sm:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-sm:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-sm:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-sm{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-sm::placeholder{color:var(--color-gray-500)}.w-input-icon-right{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-icon-right::placeholder{color:var(--color-gray-400)}.w-input-icon-right:focus{border-color:var(--color-indigo-500)}.w-input-icon-right:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-icon-right:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-icon-right:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-icon-right{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-icon-right::placeholder{color:var(--color-gray-500)}.w-input-search{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 3);padding-left:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-search::placeholder{color:var(--color-gray-400)}.w-input-search:focus{border-color:var(--color-indigo-500)}.w-input-search:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-search:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-search:focus{--tw-outline-style: none;outline-style:none}.w-input-search::-webkit-search-cancel-button{cursor:pointer}.dark .w-input-search{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-search::placeholder{color:var(--color-gray-500)}.w-input-readonly{display:block;width:100%;cursor:not-allowed;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.w-input-readonly:read-only{cursor:default}.w-input-readonly:read-only{opacity:60%}.dark .w-input-readonly{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-gray-400)}.w-textarea{display:block;width:100%;resize:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-textarea::placeholder{color:var(--color-gray-400)}.w-textarea:focus{border-color:var(--color-indigo-500)}.w-textarea:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-textarea:focus{--tw-ring-color: var(--color-indigo-500)}.w-textarea:focus{--tw-outline-style: none;outline-style:none}.dark .w-textarea{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-textarea::placeholder{color:var(--color-gray-500)}.w-select{display:block;width:100%;appearance:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 9);padding-left:calc(var(--spacing) * 3.5);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-select:focus{border-color:var(--color-indigo-500)}.w-select:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-select:focus{--tw-ring-color: var(--color-indigo-500)}.w-select:focus{--tw-outline-style: none;outline-style:none}.dark .w-select{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-input-otp{height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.w-input-otp:focus{border-color:var(--color-indigo-500)}.w-input-otp:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-otp:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-otp:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-otp{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-label{margin-bottom:calc(var(--spacing) * 1.5);display:block;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.dark .w-label{color:var(--color-white)}.w-field-error{margin-top:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));color:var(--color-red-600)}.dark .w-field-error{color:var(--color-red-400)}.w-btn-primary{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary:hover{background-color:var(--color-indigo-500)}}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary:active{background-color:var(--color-indigo-700)}.w-btn-primary:disabled{cursor:not-allowed}.w-btn-primary:disabled{opacity:50%}.w-btn-primary-sm{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary-sm:hover{background-color:var(--color-indigo-500)}}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary-sm:focus-visible{outline-offset:2px}.w-btn-primary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary-sm:active{background-color:var(--color-indigo-700)}.w-btn-secondary{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary:hover{background-color:var(--color-gray-50)}}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary:disabled{cursor:not-allowed}.w-btn-secondary:disabled{opacity:50%}.dark .w-btn-secondary{background-color:var(--color-gray-800);color:var(--color-gray-300);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary:hover{background-color:var(--color-gray-700)}}.w-btn-secondary-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary-sm:hover{background-color:var(--color-gray-50)}}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary-sm:disabled{cursor:not-allowed}.w-btn-secondary-sm:disabled{opacity:40%}.dark .w-btn-secondary-sm{background-color:var(--color-gray-800);color:var(--color-gray-200);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary-sm:hover{background-color:var(--color-gray-700)}}.w-btn-danger{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-red-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-danger:hover{background-color:var(--color-red-500)}}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger:focus-visible{outline-color:var(--color-red-500)}.w-btn-danger:active{background-color:var(--color-red-700)}.w-btn-danger-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-red-600);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-danger-sm:hover{background-color:var(--color-red-50)}}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger-sm:focus-visible{outline-color:var(--color-red-500)}.dark .w-btn-danger-sm{background-color:var(--color-gray-800);color:var(--color-red-400);--tw-ring-color: var(--color-gray-600)}.dark .w-btn-danger-sm:hover{background-color:#7f1d1d33}.w-btn-close{margin:calc(var(--spacing) * -1);cursor:pointer;border-radius:var(--radius-md);padding:calc(var(--spacing) * 1);color:var(--color-gray-400);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-close:hover{color:var(--color-gray-500)}}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-close:focus-visible{outline-color:var(--color-indigo-500)}.dark .w-btn-close{color:var(--color-gray-500)}@media(hover:hover){.dark .w-btn-close:hover{color:var(--color-gray-300)}}.w-spinner{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);animation:var(--animate-spin)}.w-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white)}.dark .w-card{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-card-section{overflow:hidden;border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark .w-card-section{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-dialog-backdrop{position:fixed;inset:calc(var(--spacing) * 0);background-color:color-mix(in srgb,#000 50%,transparent);--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);z-index:2147483646}@supports (color: color-mix(in lab,red,red)){.w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark .w-dialog-backdrop{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.w-dialog-panel{position:fixed;top:50%;left:50%;display:flex;max-height:85vh;--tw-translate-x: -50% ;--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);flex-direction:column;border-radius:var(--radius-xl);background-color:var(--color-white);--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);z-index:2147483647}.dark .w-dialog-panel{background-color:var(--color-gray-900);--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-panel{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}.w-dialog-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-header{border-color:var(--color-gray-700)}.w-dialog-title{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.dark .w-dialog-title{color:var(--color-white)}.w-dialog-body{min-height:calc(var(--spacing) * 0);width:100%;flex:1;overflow-y:auto;padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 5)}.fp-dialog-content>authorization button[aria-label=Close],.fp-dialog-content>authorization>send-otp-center button[aria-label=Close]{display:none!important}.fp-dialog-content>authorization h2,.fp-dialog-content>authorization>send-otp-center h2{display:none!important}.w-dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:calc(var(--spacing) * 3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-footer{border-color:var(--color-gray-700)}.w-section-title{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height));--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--color-gray-900)}.dark .w-section-title{color:var(--color-white)}.w-section-subtitle{margin-top:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.dark .w-section-subtitle{color:var(--color-gray-400)}.w-badge{display:inline-flex;align-items:center;border-radius:var(--radius-md);background-color:var(--color-gray-100);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-600)}.dark .w-badge{background-color:var(--color-gray-700);color:var(--color-gray-300)}.w-badge-green{display:none;align-items:center;border-radius:var(--radius-md);background-color:var(--color-green-50);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-green-700)}@media(width>=40rem){.w-badge-green{display:inline-flex}}.dark .w-badge-green{color:var(--color-green-400);background-color:#14532d4d}.w-divider{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-100)}.dark .w-divider{border-color:var(--color-gray-800)}.w-avatar{display:flex;width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10);flex:none;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:var(--color-indigo-100);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-indigo-700);-webkit-user-select:none;user-select:none}.dark .w-avatar{color:var(--color-indigo-300);background-color:#312e8199}.w-icon-box{display:flex;width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8);align-items:center;justify-content:center;border-radius:var(--radius-lg);background-color:var(--color-indigo-100)}.dark .w-icon-box{background-color:#312e8180}.w-icon-box svg{color:var(--color-indigo-600)}.dark .w-icon-box svg{color:var(--color-indigo-400)}.w-link{cursor:pointer;font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-indigo-600);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-link:hover{text-decoration-line:underline}}.w-link:disabled{cursor:not-allowed}.w-link:disabled{opacity:50%}.dark .w-link{color:var(--color-indigo-400)}.w-nav-tab{display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:2px;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-nav-item{display:flex;width:100%;cursor:pointer;align-items:center;column-gap:calc(var(--spacing) * 3);border-radius:var(--radius-md);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:left;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-leading: calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-checkbox-group{max-height:calc(var(--spacing) * 44);overflow-y:auto;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-gray-50)}:where(.w-checkbox-group>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-200)}.dark .w-checkbox-group{border-color:var(--color-gray-700);background-color:var(--color-gray-800)}:where(.dark .w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-700)}.w-checkbox-row{display:flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2.5)}@media(hover:hover){.w-checkbox-row:hover{background-color:var(--color-white)}}@media(hover:hover){.dark .w-checkbox-row:hover{background-color:var(--color-gray-700)}}.w-checkbox{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);border-radius:.25rem;border-color:var(--color-gray-300);color:var(--color-indigo-600)}.w-checkbox:focus{--tw-ring-color: var(--color-indigo-500)}.dark .w-checkbox{border-color:var(--color-gray-500)}.w-search-icon{pointer-events:none;position:absolute;inset-block:calc(var(--spacing) * 0);left:calc(var(--spacing) * 3);height:100%;width:calc(var(--spacing) * 4);color:var(--color-gray-400)}.dark .w-search-icon{color:var(--color-gray-500)}.w-micro-label{margin-bottom:calc(var(--spacing) * .5);font-size:10px;--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-gray-400);text-transform:uppercase}.dark .w-micro-label{color:var(--color-gray-500)}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box;-moz-box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti input,.iti input[type=text],.iti input[type=tel]{position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;padding-right:36px;margin-right:0}.iti__flag-container{position:absolute;top:0;bottom:0;right:0;padding:1px}.iti__selected-flag{z-index:1;position:relative;display:flex;align-items:center;height:100%;padding:0 6px 0 8px}.iti__arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.iti__arrow--up{border-top:none;border-bottom:4px solid #555}.iti__country-list{z-index:2;list-style:none;text-align:left;padding:0;margin:0 0 0 -1px;box-shadow:1px 1px 4px #0003;background-color:#fff;border:1px solid #ccc;white-space:nowrap;max-height:200px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti__country-list--dropup{bottom:100%;margin-bottom:-1px;min-height:250px!important}@media(max-width:500px){.iti__country-list{white-space:normal}}.iti__flag-box{display:inline-block;width:20px}.iti__divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.iti__country{padding:5px 10px;outline:none}.iti__dial-code{color:#999}.iti__country.iti__highlight{background-color:#0000000d}.iti__flag-box,.iti__country-name,.iti__dial-code{vertical-align:middle}.iti__flag-box,.iti__country-name{margin-right:6px}.iti--allow-dropdown input,.iti--allow-dropdown input[type=text],.iti--allow-dropdown input[type=tel],.iti--separate-dial-code input,.iti--separate-dial-code input[type=text],.iti--separate-dial-code input[type=tel]{padding-right:6px;padding-left:52px;margin-left:0}.iti--allow-dropdown .iti__flag-container,.iti--separate-dial-code .iti__flag-container{right:auto;left:0}.iti--allow-dropdown .iti__flag-container:hover{cursor:pointer}.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#0000000d}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover{cursor:default}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover .iti__selected-flag,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover .iti__selected-flag{background-color:transparent}.iti--separate-dial-code .iti__selected-flag{background-color:#0000000d}.iti--separate-dial-code .iti__selected-dial-code{margin-left:6px}.iti--container{position:absolute;top:-1000px;left:-1000px;z-index:1060;padding:1px}.iti--container:hover{cursor:pointer}.iti-mobile .iti--container{inset:30px;position:fixed}.iti-mobile .iti__country-list{max-height:100%;width:calc(100vw - 60px)}.iti-mobile .iti__country{padding:10px;line-height:1.5em}.iti__flag{width:20px}.iti__flag.iti__be{width:18px}.iti__flag.iti__ch{width:15px}.iti__flag.iti__mc{width:19px}.iti__flag.iti__ne{width:18px}.iti__flag.iti__np{width:13px}.iti__flag.iti__va{width:15px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-size:5652px 15px}}.iti__flag.iti__ac{height:10px;background-position:0px 0px}.iti__flag.iti__ad{height:14px;background-position:-22px 0px}.iti__flag.iti__ae{height:10px;background-position:-44px 0px}.iti__flag.iti__af{height:14px;background-position:-66px 0px}.iti__flag.iti__ag{height:14px;background-position:-88px 0px}.iti__flag.iti__ai{height:10px;background-position:-110px 0px}.iti__flag.iti__al{height:15px;background-position:-132px 0px}.iti__flag.iti__am{height:10px;background-position:-154px 0px}.iti__flag.iti__ao{height:14px;background-position:-176px 0px}.iti__flag.iti__aq{height:14px;background-position:-198px 0px}.iti__flag.iti__ar{height:13px;background-position:-220px 0px}.iti__flag.iti__as{height:10px;background-position:-242px 0px}.iti__flag.iti__at{height:14px;background-position:-264px 0px}.iti__flag.iti__au{height:10px;background-position:-286px 0px}.iti__flag.iti__aw{height:14px;background-position:-308px 0px}.iti__flag.iti__ax{height:13px;background-position:-330px 0px}.iti__flag.iti__az{height:10px;background-position:-352px 0px}.iti__flag.iti__ba{height:10px;background-position:-374px 0px}.iti__flag.iti__bb{height:14px;background-position:-396px 0px}.iti__flag.iti__bd{height:12px;background-position:-418px 0px}.iti__flag.iti__be{height:15px;background-position:-440px 0px}.iti__flag.iti__bf{height:14px;background-position:-460px 0px}.iti__flag.iti__bg{height:12px;background-position:-482px 0px}.iti__flag.iti__bh{height:12px;background-position:-504px 0px}.iti__flag.iti__bi{height:12px;background-position:-526px 0px}.iti__flag.iti__bj{height:14px;background-position:-548px 0px}.iti__flag.iti__bl{height:14px;background-position:-570px 0px}.iti__flag.iti__bm{height:10px;background-position:-592px 0px}.iti__flag.iti__bn{height:10px;background-position:-614px 0px}.iti__flag.iti__bo{height:14px;background-position:-636px 0px}.iti__flag.iti__bq{height:14px;background-position:-658px 0px}.iti__flag.iti__br{height:14px;background-position:-680px 0px}.iti__flag.iti__bs{height:10px;background-position:-702px 0px}.iti__flag.iti__bt{height:14px;background-position:-724px 0px}.iti__flag.iti__bv{height:15px;background-position:-746px 0px}.iti__flag.iti__bw{height:14px;background-position:-768px 0px}.iti__flag.iti__by{height:10px;background-position:-790px 0px}.iti__flag.iti__bz{height:14px;background-position:-812px 0px}.iti__flag.iti__ca{height:10px;background-position:-834px 0px}.iti__flag.iti__cc{height:10px;background-position:-856px 0px}.iti__flag.iti__cd{height:15px;background-position:-878px 0px}.iti__flag.iti__cf{height:14px;background-position:-900px 0px}.iti__flag.iti__cg{height:14px;background-position:-922px 0px}.iti__flag.iti__ch{height:15px;background-position:-944px 0px}.iti__flag.iti__ci{height:14px;background-position:-961px 0px}.iti__flag.iti__ck{height:10px;background-position:-983px 0px}.iti__flag.iti__cl{height:14px;background-position:-1005px 0px}.iti__flag.iti__cm{height:14px;background-position:-1027px 0px}.iti__flag.iti__cn{height:14px;background-position:-1049px 0px}.iti__flag.iti__co{height:14px;background-position:-1071px 0px}.iti__flag.iti__cp{height:14px;background-position:-1093px 0px}.iti__flag.iti__cr{height:12px;background-position:-1115px 0px}.iti__flag.iti__cu{height:10px;background-position:-1137px 0px}.iti__flag.iti__cv{height:12px;background-position:-1159px 0px}.iti__flag.iti__cw{height:14px;background-position:-1181px 0px}.iti__flag.iti__cx{height:10px;background-position:-1203px 0px}.iti__flag.iti__cy{height:14px;background-position:-1225px 0px}.iti__flag.iti__cz{height:14px;background-position:-1247px 0px}.iti__flag.iti__de{height:12px;background-position:-1269px 0px}.iti__flag.iti__dg{height:10px;background-position:-1291px 0px}.iti__flag.iti__dj{height:14px;background-position:-1313px 0px}.iti__flag.iti__dk{height:15px;background-position:-1335px 0px}.iti__flag.iti__dm{height:10px;background-position:-1357px 0px}.iti__flag.iti__do{height:14px;background-position:-1379px 0px}.iti__flag.iti__dz{height:14px;background-position:-1401px 0px}.iti__flag.iti__ea{height:14px;background-position:-1423px 0px}.iti__flag.iti__ec{height:14px;background-position:-1445px 0px}.iti__flag.iti__ee{height:13px;background-position:-1467px 0px}.iti__flag.iti__eg{height:14px;background-position:-1489px 0px}.iti__flag.iti__eh{height:10px;background-position:-1511px 0px}.iti__flag.iti__er{height:10px;background-position:-1533px 0px}.iti__flag.iti__es{height:14px;background-position:-1555px 0px}.iti__flag.iti__et{height:10px;background-position:-1577px 0px}.iti__flag.iti__eu{height:14px;background-position:-1599px 0px}.iti__flag.iti__fi{height:12px;background-position:-1621px 0px}.iti__flag.iti__fj{height:10px;background-position:-1643px 0px}.iti__flag.iti__fk{height:10px;background-position:-1665px 0px}.iti__flag.iti__fm{height:11px;background-position:-1687px 0px}.iti__flag.iti__fo{height:15px;background-position:-1709px 0px}.iti__flag.iti__fr{height:14px;background-position:-1731px 0px}.iti__flag.iti__ga{height:15px;background-position:-1753px 0px}.iti__flag.iti__gb{height:10px;background-position:-1775px 0px}.iti__flag.iti__gd{height:12px;background-position:-1797px 0px}.iti__flag.iti__ge{height:14px;background-position:-1819px 0px}.iti__flag.iti__gf{height:14px;background-position:-1841px 0px}.iti__flag.iti__gg{height:14px;background-position:-1863px 0px}.iti__flag.iti__gh{height:14px;background-position:-1885px 0px}.iti__flag.iti__gi{height:10px;background-position:-1907px 0px}.iti__flag.iti__gl{height:14px;background-position:-1929px 0px}.iti__flag.iti__gm{height:14px;background-position:-1951px 0px}.iti__flag.iti__gn{height:14px;background-position:-1973px 0px}.iti__flag.iti__gp{height:14px;background-position:-1995px 0px}.iti__flag.iti__gq{height:14px;background-position:-2017px 0px}.iti__flag.iti__gr{height:14px;background-position:-2039px 0px}.iti__flag.iti__gs{height:10px;background-position:-2061px 0px}.iti__flag.iti__gt{height:13px;background-position:-2083px 0px}.iti__flag.iti__gu{height:11px;background-position:-2105px 0px}.iti__flag.iti__gw{height:10px;background-position:-2127px 0px}.iti__flag.iti__gy{height:12px;background-position:-2149px 0px}.iti__flag.iti__hk{height:14px;background-position:-2171px 0px}.iti__flag.iti__hm{height:10px;background-position:-2193px 0px}.iti__flag.iti__hn{height:10px;background-position:-2215px 0px}.iti__flag.iti__hr{height:10px;background-position:-2237px 0px}.iti__flag.iti__ht{height:12px;background-position:-2259px 0px}.iti__flag.iti__hu{height:10px;background-position:-2281px 0px}.iti__flag.iti__ic{height:14px;background-position:-2303px 0px}.iti__flag.iti__id{height:14px;background-position:-2325px 0px}.iti__flag.iti__ie{height:10px;background-position:-2347px 0px}.iti__flag.iti__il{height:15px;background-position:-2369px 0px}.iti__flag.iti__im{height:10px;background-position:-2391px 0px}.iti__flag.iti__in{height:14px;background-position:-2413px 0px}.iti__flag.iti__io{height:10px;background-position:-2435px 0px}.iti__flag.iti__iq{height:14px;background-position:-2457px 0px}.iti__flag.iti__ir{height:12px;background-position:-2479px 0px}.iti__flag.iti__is{height:15px;background-position:-2501px 0px}.iti__flag.iti__it{height:14px;background-position:-2523px 0px}.iti__flag.iti__je{height:12px;background-position:-2545px 0px}.iti__flag.iti__jm{height:10px;background-position:-2567px 0px}.iti__flag.iti__jo{height:10px;background-position:-2589px 0px}.iti__flag.iti__jp{height:14px;background-position:-2611px 0px}.iti__flag.iti__ke{height:14px;background-position:-2633px 0px}.iti__flag.iti__kg{height:12px;background-position:-2655px 0px}.iti__flag.iti__kh{height:13px;background-position:-2677px 0px}.iti__flag.iti__ki{height:10px;background-position:-2699px 0px}.iti__flag.iti__km{height:12px;background-position:-2721px 0px}.iti__flag.iti__kn{height:14px;background-position:-2743px 0px}.iti__flag.iti__kp{height:10px;background-position:-2765px 0px}.iti__flag.iti__kr{height:14px;background-position:-2787px 0px}.iti__flag.iti__kw{height:10px;background-position:-2809px 0px}.iti__flag.iti__ky{height:10px;background-position:-2831px 0px}.iti__flag.iti__kz{height:10px;background-position:-2853px 0px}.iti__flag.iti__la{height:14px;background-position:-2875px 0px}.iti__flag.iti__lb{height:14px;background-position:-2897px 0px}.iti__flag.iti__lc{height:10px;background-position:-2919px 0px}.iti__flag.iti__li{height:12px;background-position:-2941px 0px}.iti__flag.iti__lk{height:10px;background-position:-2963px 0px}.iti__flag.iti__lr{height:11px;background-position:-2985px 0px}.iti__flag.iti__ls{height:14px;background-position:-3007px 0px}.iti__flag.iti__lt{height:12px;background-position:-3029px 0px}.iti__flag.iti__lu{height:12px;background-position:-3051px 0px}.iti__flag.iti__lv{height:10px;background-position:-3073px 0px}.iti__flag.iti__ly{height:10px;background-position:-3095px 0px}.iti__flag.iti__ma{height:14px;background-position:-3117px 0px}.iti__flag.iti__mc{height:15px;background-position:-3139px 0px}.iti__flag.iti__md{height:10px;background-position:-3160px 0px}.iti__flag.iti__me{height:10px;background-position:-3182px 0px}.iti__flag.iti__mf{height:14px;background-position:-3204px 0px}.iti__flag.iti__mg{height:14px;background-position:-3226px 0px}.iti__flag.iti__mh{height:11px;background-position:-3248px 0px}.iti__flag.iti__mk{height:10px;background-position:-3270px 0px}.iti__flag.iti__ml{height:14px;background-position:-3292px 0px}.iti__flag.iti__mm{height:14px;background-position:-3314px 0px}.iti__flag.iti__mn{height:10px;background-position:-3336px 0px}.iti__flag.iti__mo{height:14px;background-position:-3358px 0px}.iti__flag.iti__mp{height:10px;background-position:-3380px 0px}.iti__flag.iti__mq{height:14px;background-position:-3402px 0px}.iti__flag.iti__mr{height:14px;background-position:-3424px 0px}.iti__flag.iti__ms{height:10px;background-position:-3446px 0px}.iti__flag.iti__mt{height:14px;background-position:-3468px 0px}.iti__flag.iti__mu{height:14px;background-position:-3490px 0px}.iti__flag.iti__mv{height:14px;background-position:-3512px 0px}.iti__flag.iti__mw{height:14px;background-position:-3534px 0px}.iti__flag.iti__mx{height:12px;background-position:-3556px 0px}.iti__flag.iti__my{height:10px;background-position:-3578px 0px}.iti__flag.iti__mz{height:14px;background-position:-3600px 0px}.iti__flag.iti__na{height:14px;background-position:-3622px 0px}.iti__flag.iti__nc{height:10px;background-position:-3644px 0px}.iti__flag.iti__ne{height:15px;background-position:-3666px 0px}.iti__flag.iti__nf{height:10px;background-position:-3686px 0px}.iti__flag.iti__ng{height:10px;background-position:-3708px 0px}.iti__flag.iti__ni{height:12px;background-position:-3730px 0px}.iti__flag.iti__nl{height:14px;background-position:-3752px 0px}.iti__flag.iti__no{height:15px;background-position:-3774px 0px}.iti__flag.iti__np{height:15px;background-position:-3796px 0px}.iti__flag.iti__nr{height:10px;background-position:-3811px 0px}.iti__flag.iti__nu{height:10px;background-position:-3833px 0px}.iti__flag.iti__nz{height:10px;background-position:-3855px 0px}.iti__flag.iti__om{height:10px;background-position:-3877px 0px}.iti__flag.iti__pa{height:14px;background-position:-3899px 0px}.iti__flag.iti__pe{height:14px;background-position:-3921px 0px}.iti__flag.iti__pf{height:14px;background-position:-3943px 0px}.iti__flag.iti__pg{height:15px;background-position:-3965px 0px}.iti__flag.iti__ph{height:10px;background-position:-3987px 0px}.iti__flag.iti__pk{height:14px;background-position:-4009px 0px}.iti__flag.iti__pl{height:13px;background-position:-4031px 0px}.iti__flag.iti__pm{height:14px;background-position:-4053px 0px}.iti__flag.iti__pn{height:10px;background-position:-4075px 0px}.iti__flag.iti__pr{height:14px;background-position:-4097px 0px}.iti__flag.iti__ps{height:10px;background-position:-4119px 0px}.iti__flag.iti__pt{height:14px;background-position:-4141px 0px}.iti__flag.iti__pw{height:13px;background-position:-4163px 0px}.iti__flag.iti__py{height:11px;background-position:-4185px 0px}.iti__flag.iti__qa{height:8px;background-position:-4207px 0px}.iti__flag.iti__re{height:14px;background-position:-4229px 0px}.iti__flag.iti__ro{height:14px;background-position:-4251px 0px}.iti__flag.iti__rs{height:14px;background-position:-4273px 0px}.iti__flag.iti__ru{height:14px;background-position:-4295px 0px}.iti__flag.iti__rw{height:14px;background-position:-4317px 0px}.iti__flag.iti__sa{height:14px;background-position:-4339px 0px}.iti__flag.iti__sb{height:10px;background-position:-4361px 0px}.iti__flag.iti__sc{height:10px;background-position:-4383px 0px}.iti__flag.iti__sd{height:10px;background-position:-4405px 0px}.iti__flag.iti__se{height:13px;background-position:-4427px 0px}.iti__flag.iti__sg{height:14px;background-position:-4449px 0px}.iti__flag.iti__sh{height:10px;background-position:-4471px 0px}.iti__flag.iti__si{height:10px;background-position:-4493px 0px}.iti__flag.iti__sj{height:15px;background-position:-4515px 0px}.iti__flag.iti__sk{height:14px;background-position:-4537px 0px}.iti__flag.iti__sl{height:14px;background-position:-4559px 0px}.iti__flag.iti__sm{height:15px;background-position:-4581px 0px}.iti__flag.iti__sn{height:14px;background-position:-4603px 0px}.iti__flag.iti__so{height:14px;background-position:-4625px 0px}.iti__flag.iti__sr{height:14px;background-position:-4647px 0px}.iti__flag.iti__ss{height:10px;background-position:-4669px 0px}.iti__flag.iti__st{height:10px;background-position:-4691px 0px}.iti__flag.iti__sv{height:12px;background-position:-4713px 0px}.iti__flag.iti__sx{height:14px;background-position:-4735px 0px}.iti__flag.iti__sy{height:14px;background-position:-4757px 0px}.iti__flag.iti__sz{height:14px;background-position:-4779px 0px}.iti__flag.iti__ta{height:10px;background-position:-4801px 0px}.iti__flag.iti__tc{height:10px;background-position:-4823px 0px}.iti__flag.iti__td{height:14px;background-position:-4845px 0px}.iti__flag.iti__tf{height:14px;background-position:-4867px 0px}.iti__flag.iti__tg{height:13px;background-position:-4889px 0px}.iti__flag.iti__th{height:14px;background-position:-4911px 0px}.iti__flag.iti__tj{height:10px;background-position:-4933px 0px}.iti__flag.iti__tk{height:10px;background-position:-4955px 0px}.iti__flag.iti__tl{height:10px;background-position:-4977px 0px}.iti__flag.iti__tm{height:14px;background-position:-4999px 0px}.iti__flag.iti__tn{height:14px;background-position:-5021px 0px}.iti__flag.iti__to{height:10px;background-position:-5043px 0px}.iti__flag.iti__tr{height:14px;background-position:-5065px 0px}.iti__flag.iti__tt{height:12px;background-position:-5087px 0px}.iti__flag.iti__tv{height:10px;background-position:-5109px 0px}.iti__flag.iti__tw{height:14px;background-position:-5131px 0px}.iti__flag.iti__tz{height:14px;background-position:-5153px 0px}.iti__flag.iti__ua{height:14px;background-position:-5175px 0px}.iti__flag.iti__ug{height:14px;background-position:-5197px 0px}.iti__flag.iti__um{height:11px;background-position:-5219px 0px}.iti__flag.iti__un{height:14px;background-position:-5241px 0px}.iti__flag.iti__us{height:11px;background-position:-5263px 0px}.iti__flag.iti__uy{height:14px;background-position:-5285px 0px}.iti__flag.iti__uz{height:10px;background-position:-5307px 0px}.iti__flag.iti__va{height:15px;background-position:-5329px 0px}.iti__flag.iti__vc{height:14px;background-position:-5346px 0px}.iti__flag.iti__ve{height:14px;background-position:-5368px 0px}.iti__flag.iti__vg{height:10px;background-position:-5390px 0px}.iti__flag.iti__vi{height:14px;background-position:-5412px 0px}.iti__flag.iti__vn{height:14px;background-position:-5434px 0px}.iti__flag.iti__vu{height:12px;background-position:-5456px 0px}.iti__flag.iti__wf{height:14px;background-position:-5478px 0px}.iti__flag.iti__ws{height:10px;background-position:-5500px 0px}.iti__flag.iti__xk{height:15px;background-position:-5522px 0px}.iti__flag.iti__ye{height:14px;background-position:-5544px 0px}.iti__flag.iti__yt{height:14px;background-position:-5566px 0px}.iti__flag.iti__za{height:14px;background-position:-5588px 0px}.iti__flag.iti__zm{height:14px;background-position:-5610px 0px}.iti__flag.iti__zw{height:10px;background-position:-5632px 0px}.iti__flag{height:15px;box-shadow:0 0 1px #888;background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)!important;background-repeat:no-repeat;background-color:#dbdbdb;background-position:20px 0}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)}}.iti__flag.iti__np{background-color:transparent}.iti.iti--allow-dropdown{width:100%;margin-bottom:8px}#phone,[id^=init-contact]{height:38.73px}#phone:focus,[id^=init-contact]:focus{border-color:transparent;outline:2px solid #1e75ba!important}.iti{display:block!important}.iti .iti__country-list{position:absolute!important;bottom:0!important;top:auto!important;left:auto!important;transform:translateY(101%)!important;box-shadow:none;font-size:14px;margin-left:0;width:316px;max-height:250px}.iti__country{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis;padding:10px!important;color:#3f4346!important;font-weight:500!important}.iti__country.iti__flag-box{margin-right:12px}.iti__country:hover,.iti__country.iti__highlight{background-color:#d5e0f8!important}.selected-dial-code{font-weight:400;font-size:14px}.selected-dial-code{color:#8f9396}.dropdown-menu.country-dropdown{width:291px!important;border-radius:8px 8px 0 0!important;border-color:#d5d9dc!important}.dropdown-menu.country-dropdown ul{width:100%}.invalid-input{outline:2px solid #cc5229}.dark .iti .iti__country-list{background-color:#1f2937;border-color:#374151;color:#f9fafb}.dark .iti__country{color:#f9fafb!important}.dark .iti__country:hover,.dark .iti__country.iti__highlight{background-color:#312e81!important}.dark .iti__dial-code{color:#9ca3af}.dark .iti__divider{border-bottom-color:#374151}.dark .iti__selected-flag:hover,.dark .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#ffffff14}.dark #phone,.dark [id^=init-contact]{color:#f9fafb;background-color:transparent}:root{--color-common-dark: #000000;--color-common-slate: #333333;--color-common-rock: #5d6164;--color-common-grey: #333333;--color-common-cloud: #c1c5c8;--color-common-smoke: #d5d9dc;--color-common-white: #ffffff;--color-common-black: #000000;--border-common-radius-4: 4px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-24: 24px;--font-size-28: 28px;--font-size-30: 30px;--font-size-36: 36px;--custom-mat-form-field-height: 48px}html,body{margin:0;width:100vw;height:100vh;overflow-x:hidden}*,proxy-auth,.iti__country-list{font-family:Inter,sans-serif;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}@property --tw-border-spacing-x{syntax: ""; inherits: false; initial-value: 0;}@property --tw-border-spacing-y{syntax: ""; inherits: false; initial-value: 0;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-divide-x-reverse: 0}}} +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */ +`,`@charset "UTF-8";@layer properties;.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box;-moz-box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti input,.iti input[type=text],.iti input[type=tel]{position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;padding-right:36px;margin-right:0}.iti__flag-container{position:absolute;top:0;bottom:0;right:0;padding:1px}.iti__selected-flag{z-index:1;position:relative;display:flex;align-items:center;height:100%;padding:0 6px 0 8px}.iti__arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.iti__arrow--up{border-top:none;border-bottom:4px solid #555}.iti__country-list{position:absolute;z-index:2;list-style:none;text-align:left;padding:0;margin:0 0 0 -1px;box-shadow:1px 1px 4px #0003;background-color:#fff;border:1px solid #CCC;white-space:nowrap;max-height:200px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti__country-list--dropup{bottom:100%;margin-bottom:-1px}@media(max-width:500px){.iti__country-list{white-space:normal}}.iti__flag-box{display:inline-block;width:20px}.iti__divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #CCC}.iti__country{padding:5px 10px;outline:none}.iti__dial-code{color:#999}.iti__country.iti__highlight{background-color:#0000000d}.iti__flag-box,.iti__country-name,.iti__dial-code{vertical-align:middle}.iti__flag-box,.iti__country-name{margin-right:6px}.iti--allow-dropdown input,.iti--allow-dropdown input[type=text],.iti--allow-dropdown input[type=tel],.iti--separate-dial-code input,.iti--separate-dial-code input[type=text],.iti--separate-dial-code input[type=tel]{padding-right:6px;padding-left:52px;margin-left:0}.iti--allow-dropdown .iti__flag-container,.iti--separate-dial-code .iti__flag-container{right:auto;left:0}.iti--allow-dropdown .iti__flag-container:hover{cursor:pointer}.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#0000000d}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover{cursor:default}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover .iti__selected-flag,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover .iti__selected-flag{background-color:transparent}.iti--separate-dial-code .iti__selected-flag{background-color:#0000000d}.iti--separate-dial-code .iti__selected-dial-code{margin-left:6px}.iti--container{position:absolute;top:-1000px;left:-1000px;z-index:1060;padding:1px}.iti--container:hover{cursor:pointer}.iti-mobile .iti--container{inset:30px;position:fixed}.iti-mobile .iti__country-list{max-height:100%;width:100%}.iti-mobile .iti__country{padding:10px;line-height:1.5em}.iti__flag{width:20px}.iti__flag.iti__be{width:18px}.iti__flag.iti__ch{width:15px}.iti__flag.iti__mc{width:19px}.iti__flag.iti__ne{width:18px}.iti__flag.iti__np{width:13px}.iti__flag.iti__va{width:15px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-size:5652px 15px}}.iti__flag.iti__ac{height:10px;background-position:0px 0px}.iti__flag.iti__ad{height:14px;background-position:-22px 0px}.iti__flag.iti__ae{height:10px;background-position:-44px 0px}.iti__flag.iti__af{height:14px;background-position:-66px 0px}.iti__flag.iti__ag{height:14px;background-position:-88px 0px}.iti__flag.iti__ai{height:10px;background-position:-110px 0px}.iti__flag.iti__al{height:15px;background-position:-132px 0px}.iti__flag.iti__am{height:10px;background-position:-154px 0px}.iti__flag.iti__ao{height:14px;background-position:-176px 0px}.iti__flag.iti__aq{height:14px;background-position:-198px 0px}.iti__flag.iti__ar{height:13px;background-position:-220px 0px}.iti__flag.iti__as{height:10px;background-position:-242px 0px}.iti__flag.iti__at{height:14px;background-position:-264px 0px}.iti__flag.iti__au{height:10px;background-position:-286px 0px}.iti__flag.iti__aw{height:14px;background-position:-308px 0px}.iti__flag.iti__ax{height:13px;background-position:-330px 0px}.iti__flag.iti__az{height:10px;background-position:-352px 0px}.iti__flag.iti__ba{height:10px;background-position:-374px 0px}.iti__flag.iti__bb{height:14px;background-position:-396px 0px}.iti__flag.iti__bd{height:12px;background-position:-418px 0px}.iti__flag.iti__be{height:15px;background-position:-440px 0px}.iti__flag.iti__bf{height:14px;background-position:-460px 0px}.iti__flag.iti__bg{height:12px;background-position:-482px 0px}.iti__flag.iti__bh{height:12px;background-position:-504px 0px}.iti__flag.iti__bi{height:12px;background-position:-526px 0px}.iti__flag.iti__bj{height:14px;background-position:-548px 0px}.iti__flag.iti__bl{height:14px;background-position:-570px 0px}.iti__flag.iti__bm{height:10px;background-position:-592px 0px}.iti__flag.iti__bn{height:10px;background-position:-614px 0px}.iti__flag.iti__bo{height:14px;background-position:-636px 0px}.iti__flag.iti__bq{height:14px;background-position:-658px 0px}.iti__flag.iti__br{height:14px;background-position:-680px 0px}.iti__flag.iti__bs{height:10px;background-position:-702px 0px}.iti__flag.iti__bt{height:14px;background-position:-724px 0px}.iti__flag.iti__bv{height:15px;background-position:-746px 0px}.iti__flag.iti__bw{height:14px;background-position:-768px 0px}.iti__flag.iti__by{height:10px;background-position:-790px 0px}.iti__flag.iti__bz{height:14px;background-position:-812px 0px}.iti__flag.iti__ca{height:10px;background-position:-834px 0px}.iti__flag.iti__cc{height:10px;background-position:-856px 0px}.iti__flag.iti__cd{height:15px;background-position:-878px 0px}.iti__flag.iti__cf{height:14px;background-position:-900px 0px}.iti__flag.iti__cg{height:14px;background-position:-922px 0px}.iti__flag.iti__ch{height:15px;background-position:-944px 0px}.iti__flag.iti__ci{height:14px;background-position:-961px 0px}.iti__flag.iti__ck{height:10px;background-position:-983px 0px}.iti__flag.iti__cl{height:14px;background-position:-1005px 0px}.iti__flag.iti__cm{height:14px;background-position:-1027px 0px}.iti__flag.iti__cn{height:14px;background-position:-1049px 0px}.iti__flag.iti__co{height:14px;background-position:-1071px 0px}.iti__flag.iti__cp{height:14px;background-position:-1093px 0px}.iti__flag.iti__cr{height:12px;background-position:-1115px 0px}.iti__flag.iti__cu{height:10px;background-position:-1137px 0px}.iti__flag.iti__cv{height:12px;background-position:-1159px 0px}.iti__flag.iti__cw{height:14px;background-position:-1181px 0px}.iti__flag.iti__cx{height:10px;background-position:-1203px 0px}.iti__flag.iti__cy{height:14px;background-position:-1225px 0px}.iti__flag.iti__cz{height:14px;background-position:-1247px 0px}.iti__flag.iti__de{height:12px;background-position:-1269px 0px}.iti__flag.iti__dg{height:10px;background-position:-1291px 0px}.iti__flag.iti__dj{height:14px;background-position:-1313px 0px}.iti__flag.iti__dk{height:15px;background-position:-1335px 0px}.iti__flag.iti__dm{height:10px;background-position:-1357px 0px}.iti__flag.iti__do{height:14px;background-position:-1379px 0px}.iti__flag.iti__dz{height:14px;background-position:-1401px 0px}.iti__flag.iti__ea{height:14px;background-position:-1423px 0px}.iti__flag.iti__ec{height:14px;background-position:-1445px 0px}.iti__flag.iti__ee{height:13px;background-position:-1467px 0px}.iti__flag.iti__eg{height:14px;background-position:-1489px 0px}.iti__flag.iti__eh{height:10px;background-position:-1511px 0px}.iti__flag.iti__er{height:10px;background-position:-1533px 0px}.iti__flag.iti__es{height:14px;background-position:-1555px 0px}.iti__flag.iti__et{height:10px;background-position:-1577px 0px}.iti__flag.iti__eu{height:14px;background-position:-1599px 0px}.iti__flag.iti__fi{height:12px;background-position:-1621px 0px}.iti__flag.iti__fj{height:10px;background-position:-1643px 0px}.iti__flag.iti__fk{height:10px;background-position:-1665px 0px}.iti__flag.iti__fm{height:11px;background-position:-1687px 0px}.iti__flag.iti__fo{height:15px;background-position:-1709px 0px}.iti__flag.iti__fr{height:14px;background-position:-1731px 0px}.iti__flag.iti__ga{height:15px;background-position:-1753px 0px}.iti__flag.iti__gb{height:10px;background-position:-1775px 0px}.iti__flag.iti__gd{height:12px;background-position:-1797px 0px}.iti__flag.iti__ge{height:14px;background-position:-1819px 0px}.iti__flag.iti__gf{height:14px;background-position:-1841px 0px}.iti__flag.iti__gg{height:14px;background-position:-1863px 0px}.iti__flag.iti__gh{height:14px;background-position:-1885px 0px}.iti__flag.iti__gi{height:10px;background-position:-1907px 0px}.iti__flag.iti__gl{height:14px;background-position:-1929px 0px}.iti__flag.iti__gm{height:14px;background-position:-1951px 0px}.iti__flag.iti__gn{height:14px;background-position:-1973px 0px}.iti__flag.iti__gp{height:14px;background-position:-1995px 0px}.iti__flag.iti__gq{height:14px;background-position:-2017px 0px}.iti__flag.iti__gr{height:14px;background-position:-2039px 0px}.iti__flag.iti__gs{height:10px;background-position:-2061px 0px}.iti__flag.iti__gt{height:13px;background-position:-2083px 0px}.iti__flag.iti__gu{height:11px;background-position:-2105px 0px}.iti__flag.iti__gw{height:10px;background-position:-2127px 0px}.iti__flag.iti__gy{height:12px;background-position:-2149px 0px}.iti__flag.iti__hk{height:14px;background-position:-2171px 0px}.iti__flag.iti__hm{height:10px;background-position:-2193px 0px}.iti__flag.iti__hn{height:10px;background-position:-2215px 0px}.iti__flag.iti__hr{height:10px;background-position:-2237px 0px}.iti__flag.iti__ht{height:12px;background-position:-2259px 0px}.iti__flag.iti__hu{height:10px;background-position:-2281px 0px}.iti__flag.iti__ic{height:14px;background-position:-2303px 0px}.iti__flag.iti__id{height:14px;background-position:-2325px 0px}.iti__flag.iti__ie{height:10px;background-position:-2347px 0px}.iti__flag.iti__il{height:15px;background-position:-2369px 0px}.iti__flag.iti__im{height:10px;background-position:-2391px 0px}.iti__flag.iti__in{height:14px;background-position:-2413px 0px}.iti__flag.iti__io{height:10px;background-position:-2435px 0px}.iti__flag.iti__iq{height:14px;background-position:-2457px 0px}.iti__flag.iti__ir{height:12px;background-position:-2479px 0px}.iti__flag.iti__is{height:15px;background-position:-2501px 0px}.iti__flag.iti__it{height:14px;background-position:-2523px 0px}.iti__flag.iti__je{height:12px;background-position:-2545px 0px}.iti__flag.iti__jm{height:10px;background-position:-2567px 0px}.iti__flag.iti__jo{height:10px;background-position:-2589px 0px}.iti__flag.iti__jp{height:14px;background-position:-2611px 0px}.iti__flag.iti__ke{height:14px;background-position:-2633px 0px}.iti__flag.iti__kg{height:12px;background-position:-2655px 0px}.iti__flag.iti__kh{height:13px;background-position:-2677px 0px}.iti__flag.iti__ki{height:10px;background-position:-2699px 0px}.iti__flag.iti__km{height:12px;background-position:-2721px 0px}.iti__flag.iti__kn{height:14px;background-position:-2743px 0px}.iti__flag.iti__kp{height:10px;background-position:-2765px 0px}.iti__flag.iti__kr{height:14px;background-position:-2787px 0px}.iti__flag.iti__kw{height:10px;background-position:-2809px 0px}.iti__flag.iti__ky{height:10px;background-position:-2831px 0px}.iti__flag.iti__kz{height:10px;background-position:-2853px 0px}.iti__flag.iti__la{height:14px;background-position:-2875px 0px}.iti__flag.iti__lb{height:14px;background-position:-2897px 0px}.iti__flag.iti__lc{height:10px;background-position:-2919px 0px}.iti__flag.iti__li{height:12px;background-position:-2941px 0px}.iti__flag.iti__lk{height:10px;background-position:-2963px 0px}.iti__flag.iti__lr{height:11px;background-position:-2985px 0px}.iti__flag.iti__ls{height:14px;background-position:-3007px 0px}.iti__flag.iti__lt{height:12px;background-position:-3029px 0px}.iti__flag.iti__lu{height:12px;background-position:-3051px 0px}.iti__flag.iti__lv{height:10px;background-position:-3073px 0px}.iti__flag.iti__ly{height:10px;background-position:-3095px 0px}.iti__flag.iti__ma{height:14px;background-position:-3117px 0px}.iti__flag.iti__mc{height:15px;background-position:-3139px 0px}.iti__flag.iti__md{height:10px;background-position:-3160px 0px}.iti__flag.iti__me{height:10px;background-position:-3182px 0px}.iti__flag.iti__mf{height:14px;background-position:-3204px 0px}.iti__flag.iti__mg{height:14px;background-position:-3226px 0px}.iti__flag.iti__mh{height:11px;background-position:-3248px 0px}.iti__flag.iti__mk{height:10px;background-position:-3270px 0px}.iti__flag.iti__ml{height:14px;background-position:-3292px 0px}.iti__flag.iti__mm{height:14px;background-position:-3314px 0px}.iti__flag.iti__mn{height:10px;background-position:-3336px 0px}.iti__flag.iti__mo{height:14px;background-position:-3358px 0px}.iti__flag.iti__mp{height:10px;background-position:-3380px 0px}.iti__flag.iti__mq{height:14px;background-position:-3402px 0px}.iti__flag.iti__mr{height:14px;background-position:-3424px 0px}.iti__flag.iti__ms{height:10px;background-position:-3446px 0px}.iti__flag.iti__mt{height:14px;background-position:-3468px 0px}.iti__flag.iti__mu{height:14px;background-position:-3490px 0px}.iti__flag.iti__mv{height:14px;background-position:-3512px 0px}.iti__flag.iti__mw{height:14px;background-position:-3534px 0px}.iti__flag.iti__mx{height:12px;background-position:-3556px 0px}.iti__flag.iti__my{height:10px;background-position:-3578px 0px}.iti__flag.iti__mz{height:14px;background-position:-3600px 0px}.iti__flag.iti__na{height:14px;background-position:-3622px 0px}.iti__flag.iti__nc{height:10px;background-position:-3644px 0px}.iti__flag.iti__ne{height:15px;background-position:-3666px 0px}.iti__flag.iti__nf{height:10px;background-position:-3686px 0px}.iti__flag.iti__ng{height:10px;background-position:-3708px 0px}.iti__flag.iti__ni{height:12px;background-position:-3730px 0px}.iti__flag.iti__nl{height:14px;background-position:-3752px 0px}.iti__flag.iti__no{height:15px;background-position:-3774px 0px}.iti__flag.iti__np{height:15px;background-position:-3796px 0px}.iti__flag.iti__nr{height:10px;background-position:-3811px 0px}.iti__flag.iti__nu{height:10px;background-position:-3833px 0px}.iti__flag.iti__nz{height:10px;background-position:-3855px 0px}.iti__flag.iti__om{height:10px;background-position:-3877px 0px}.iti__flag.iti__pa{height:14px;background-position:-3899px 0px}.iti__flag.iti__pe{height:14px;background-position:-3921px 0px}.iti__flag.iti__pf{height:14px;background-position:-3943px 0px}.iti__flag.iti__pg{height:15px;background-position:-3965px 0px}.iti__flag.iti__ph{height:10px;background-position:-3987px 0px}.iti__flag.iti__pk{height:14px;background-position:-4009px 0px}.iti__flag.iti__pl{height:13px;background-position:-4031px 0px}.iti__flag.iti__pm{height:14px;background-position:-4053px 0px}.iti__flag.iti__pn{height:10px;background-position:-4075px 0px}.iti__flag.iti__pr{height:14px;background-position:-4097px 0px}.iti__flag.iti__ps{height:10px;background-position:-4119px 0px}.iti__flag.iti__pt{height:14px;background-position:-4141px 0px}.iti__flag.iti__pw{height:13px;background-position:-4163px 0px}.iti__flag.iti__py{height:11px;background-position:-4185px 0px}.iti__flag.iti__qa{height:8px;background-position:-4207px 0px}.iti__flag.iti__re{height:14px;background-position:-4229px 0px}.iti__flag.iti__ro{height:14px;background-position:-4251px 0px}.iti__flag.iti__rs{height:14px;background-position:-4273px 0px}.iti__flag.iti__ru{height:14px;background-position:-4295px 0px}.iti__flag.iti__rw{height:14px;background-position:-4317px 0px}.iti__flag.iti__sa{height:14px;background-position:-4339px 0px}.iti__flag.iti__sb{height:10px;background-position:-4361px 0px}.iti__flag.iti__sc{height:10px;background-position:-4383px 0px}.iti__flag.iti__sd{height:10px;background-position:-4405px 0px}.iti__flag.iti__se{height:13px;background-position:-4427px 0px}.iti__flag.iti__sg{height:14px;background-position:-4449px 0px}.iti__flag.iti__sh{height:10px;background-position:-4471px 0px}.iti__flag.iti__si{height:10px;background-position:-4493px 0px}.iti__flag.iti__sj{height:15px;background-position:-4515px 0px}.iti__flag.iti__sk{height:14px;background-position:-4537px 0px}.iti__flag.iti__sl{height:14px;background-position:-4559px 0px}.iti__flag.iti__sm{height:15px;background-position:-4581px 0px}.iti__flag.iti__sn{height:14px;background-position:-4603px 0px}.iti__flag.iti__so{height:14px;background-position:-4625px 0px}.iti__flag.iti__sr{height:14px;background-position:-4647px 0px}.iti__flag.iti__ss{height:10px;background-position:-4669px 0px}.iti__flag.iti__st{height:10px;background-position:-4691px 0px}.iti__flag.iti__sv{height:12px;background-position:-4713px 0px}.iti__flag.iti__sx{height:14px;background-position:-4735px 0px}.iti__flag.iti__sy{height:14px;background-position:-4757px 0px}.iti__flag.iti__sz{height:14px;background-position:-4779px 0px}.iti__flag.iti__ta{height:10px;background-position:-4801px 0px}.iti__flag.iti__tc{height:10px;background-position:-4823px 0px}.iti__flag.iti__td{height:14px;background-position:-4845px 0px}.iti__flag.iti__tf{height:14px;background-position:-4867px 0px}.iti__flag.iti__tg{height:13px;background-position:-4889px 0px}.iti__flag.iti__th{height:14px;background-position:-4911px 0px}.iti__flag.iti__tj{height:10px;background-position:-4933px 0px}.iti__flag.iti__tk{height:10px;background-position:-4955px 0px}.iti__flag.iti__tl{height:10px;background-position:-4977px 0px}.iti__flag.iti__tm{height:14px;background-position:-4999px 0px}.iti__flag.iti__tn{height:14px;background-position:-5021px 0px}.iti__flag.iti__to{height:10px;background-position:-5043px 0px}.iti__flag.iti__tr{height:14px;background-position:-5065px 0px}.iti__flag.iti__tt{height:12px;background-position:-5087px 0px}.iti__flag.iti__tv{height:10px;background-position:-5109px 0px}.iti__flag.iti__tw{height:14px;background-position:-5131px 0px}.iti__flag.iti__tz{height:14px;background-position:-5153px 0px}.iti__flag.iti__ua{height:14px;background-position:-5175px 0px}.iti__flag.iti__ug{height:14px;background-position:-5197px 0px}.iti__flag.iti__um{height:11px;background-position:-5219px 0px}.iti__flag.iti__un{height:14px;background-position:-5241px 0px}.iti__flag.iti__us{height:11px;background-position:-5263px 0px}.iti__flag.iti__uy{height:14px;background-position:-5285px 0px}.iti__flag.iti__uz{height:10px;background-position:-5307px 0px}.iti__flag.iti__va{height:15px;background-position:-5329px 0px}.iti__flag.iti__vc{height:14px;background-position:-5346px 0px}.iti__flag.iti__ve{height:14px;background-position:-5368px 0px}.iti__flag.iti__vg{height:10px;background-position:-5390px 0px}.iti__flag.iti__vi{height:14px;background-position:-5412px 0px}.iti__flag.iti__vn{height:14px;background-position:-5434px 0px}.iti__flag.iti__vu{height:12px;background-position:-5456px 0px}.iti__flag.iti__wf{height:14px;background-position:-5478px 0px}.iti__flag.iti__ws{height:10px;background-position:-5500px 0px}.iti__flag.iti__xk{height:15px;background-position:-5522px 0px}.iti__flag.iti__ye{height:14px;background-position:-5544px 0px}.iti__flag.iti__yt{height:14px;background-position:-5566px 0px}.iti__flag.iti__za{height:14px;background-position:-5588px 0px}.iti__flag.iti__zm{height:14px;background-position:-5610px 0px}.iti__flag.iti__zw{height:10px;background-position:-5632px 0px}.iti__flag{height:15px;box-shadow:0 0 1px #888;background-image:url("./media/flags.png");background-repeat:no-repeat;background-color:#dbdbdb;background-position:20px 0}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-image:url("./media/flags@2x.png")}}.iti__flag.iti__np{background-color:transparent}@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-900: oklch(39.6% .141 25.723);--color-orange-50: oklch(98% .016 73.684);--color-orange-300: oklch(83.7% .128 66.29);--color-orange-700: oklch(55.3% .195 38.402);--color-orange-900: oklch(40.8% .123 38.172);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-300: oklch(87.1% .15 154.449);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-500: oklch(69.6% .17 162.48);--color-teal-50: oklch(98.4% .014 180.72);--color-teal-100: oklch(95.3% .051 180.801);--color-teal-300: oklch(85.5% .138 181.071);--color-teal-400: oklch(77.7% .152 181.912);--color-teal-500: oklch(70.4% .14 182.503);--color-teal-600: oklch(60% .118 184.704);--color-teal-700: oklch(51.1% .096 186.391);--color-teal-900: oklch(38.6% .063 188.416);--color-sky-400: oklch(74.6% .16 232.661);--color-sky-500: oklch(68.5% .169 237.323);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-indigo-50: oklch(96.2% .018 272.314);--color-indigo-100: oklch(93% .034 272.788);--color-indigo-200: oklch(87% .065 274.039);--color-indigo-300: oklch(78.5% .115 274.713);--color-indigo-400: oklch(67.3% .182 276.935);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-indigo-800: oklch(39.8% .195 277.366);--color-indigo-900: oklch(35.9% .144 278.697);--color-indigo-950: oklch(25.7% .09 281.288);--color-violet-300: oklch(81.1% .111 293.571);--color-violet-400: oklch(70.2% .183 293.541);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-300: oklch(82.7% .119 306.383);--color-purple-400: oklch(71.4% .203 305.504);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-300: oklch(82.3% .12 346.018);--color-pink-400: oklch(71.8% .202 349.761);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-700: oklch(52.5% .223 3.958);--color-rose-50: oklch(96.9% .015 12.422);--color-rose-300: oklch(81% .117 11.638);--color-rose-400: oklch(71.2% .194 13.428);--color-rose-500: oklch(64.5% .246 16.439);--color-rose-700: oklch(51.4% .222 16.935);--color-rose-900: oklch(41% .159 10.272);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-gray-950: oklch(13% .028 261.692);--color-neutral-100: oklch(97% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--breakpoint-xl: 80rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 56rem;--container-5xl: 64rem;--container-7xl: 80rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--leading-relaxed: 1.625;--radius-xs: .125rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.\\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-0{inset:calc(var(--spacing) * -0)}.-inset-1{inset:calc(var(--spacing) * -1)}.-inset-2{inset:calc(var(--spacing) * -2)}.-inset-3{inset:calc(var(--spacing) * -3)}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-x-px{inset-inline:1px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-px{top:-1px}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-full{right:100%}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\\[9999\\]{z-index:9999}.order-last{order:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.\\!m-0{margin:calc(var(--spacing) * 0)!important}.-m-0{margin:calc(var(--spacing) * -0)}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-20{margin-block:calc(var(--spacing) * 20)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-32{margin-top:calc(var(--spacing) * -32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-30{margin-top:calc(var(--spacing) * 30)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.-mr-0{margin-right:calc(var(--spacing) * -0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-auto{margin-right:auto}.\\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-30{margin-bottom:calc(var(--spacing) * 30)}.-ml-0{margin-left:calc(var(--spacing) * -0)}.-ml-0\\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-0\\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-0{width:calc(var(--spacing) * 0);height:calc(var(--spacing) * 0)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.size-32{width:calc(var(--spacing) * 32);height:calc(var(--spacing) * 32)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.\\!h-3\\.5{height:calc(var(--spacing) * 3.5)!important}.\\!h-4{height:calc(var(--spacing) * 4)!important}.\\!h-9{height:calc(var(--spacing) * 9)!important}.\\!h-12{height:calc(var(--spacing) * 12)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-32{height:calc(var(--spacing) * 32)}.h-100{height:calc(var(--spacing) * 100)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-12{max-height:calc(var(--spacing) * 12)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\\[65vh\\]{max-height:65vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[650px\\]{max-height:650px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\\[400px\\]{min-height:400px}.min-h-\\[calc\\(100vh-64px\\)\\]{min-height:calc(100vh - 64px)}.min-h-full{min-height:100%}.\\!w-3\\.5{width:calc(var(--spacing) * 3.5)!important}.\\!w-4{width:calc(var(--spacing) * 4)!important}.\\!w-9{width:calc(var(--spacing) * 9)!important}.\\!w-12{width:calc(var(--spacing) * 12)!important}.\\!w-\\[56px\\]{width:56px!important}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\\/2{width:50%}.w-3{width:calc(var(--spacing) * 3)}.w-3\\/4{width:75%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-85{width:calc(var(--spacing) * 85)}.w-100{width:calc(var(--spacing) * 100)}.w-\\[85\\%\\]{width:85%}.w-\\[180px\\]{width:180px}.w-\\[200px\\]{width:200px}.w-\\[246px\\]{width:246px}.w-\\[250px\\]{width:250px}.w-\\[350px\\]{width:350px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[480px\\]{max-width:480px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.\\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[150px\\]{min-width:150px}.min-w-\\[720px\\]{min-width:720px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-auto{flex:auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x: calc(var(--spacing) * 0);--tw-border-spacing-y: calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-top{transform-origin:top}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\\[appearance\\:textfield\\]{appearance:textfield}.appearance-none{appearance:none}.\\[grid-template-columns\\:repeat\\(auto-fill\\,minmax\\(168px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[1fr_auto_auto\\]{grid-template-columns:1fr auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:calc(var(--spacing) * 0)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}.gap-y-10{row-gap:calc(var(--spacing) * 10)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\\[var\\(--color-common-border\\)\\]>:not(:last-child)){border-color:var(--color-common-border)}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-tl-lg{border-top-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr-lg{border-top-right-radius:var(--radius-lg)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-br-lg{border-bottom-right-radius:var(--radius-lg)}.rounded-bl-lg{border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-700{border-color:var(--color-gray-700)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-600{border-color:var(--color-indigo-600)}.border-indigo-800{border-color:var(--color-indigo-800)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-white{border-top-color:var(--color-white)}.border-b-white{border-bottom-color:var(--color-white)}.\\[background-color\\:var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.\\[background-color\\:var\\(--color-otp-primary-light\\)\\]{background-color:var(--color-otp-primary-light)}.\\[background-color\\:var\\(--color-whatsApp-primary-light\\)\\]{background-color:var(--color-whatsApp-primary-light)}.bg-\\[var\\(--color-common-bg-light\\)\\]{background-color:var(--color-common-bg-light)}.bg-\\[var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.bg-\\[var\\(--color-common-hover\\)\\]{background-color:var(--color-common-hover)}.bg-\\[var\\(--color-common-primary-light\\,\\#e8f5e9\\)\\]{background-color:var(--color-common-primary-light,#e8f5e9)}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-current{background-color:currentcolor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-900{background-color:var(--color-green-900)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-indigo-700{background-color:var(--color-indigo-700)}.bg-indigo-800{background-color:var(--color-indigo-800)}.bg-indigo-900{background-color:var(--color-indigo-900)}.bg-indigo-950{background-color:var(--color-indigo-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-700{background-color:var(--color-purple-700)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-900\\/20{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-red-900\\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-gray-300{fill:var(--color-gray-300)}.fill-gray-400{fill:var(--color-gray-400)}.fill-green-400{fill:var(--color-green-400)}.fill-indigo-400{fill:var(--color-indigo-400)}.fill-indigo-500{fill:var(--color-indigo-500)}.fill-pink-400{fill:var(--color-pink-400)}.fill-purple-400{fill:var(--color-purple-400)}.fill-red-400{fill:var(--color-red-400)}.fill-red-500{fill:var(--color-red-500)}.fill-white{fill:var(--color-white)}.fill-yellow-400{fill:var(--color-yellow-400)}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-gray-400{stroke:var(--color-gray-400)}.stroke-green-400{stroke:var(--color-green-400)}.stroke-indigo-400{stroke:var(--color-indigo-400)}.stroke-pink-400{stroke:var(--color-pink-400)}.stroke-red-400{stroke:var(--color-red-400)}.stroke-violet-400{stroke:var(--color-violet-400)}.stroke-white{stroke:var(--color-white)}.stroke-yellow-300{stroke:var(--color-yellow-300)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\\!p-0{padding:calc(var(--spacing) * 0)!important}.\\!p-2{padding:calc(var(--spacing) * 2)!important}.\\!p-3{padding:calc(var(--spacing) * 3)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-px{padding-bottom:1px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-12{padding-left:calc(var(--spacing) * 12)}.\\!text-right{text-align:right!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\\!text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading, var(--text-4xl--line-height))!important}.\\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading, var(--text-base--line-height))!important}.\\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading, var(--text-sm--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\\!text-\\[48px\\]{font-size:48px!important}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight: var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-nowrap{text-wrap:nowrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.\\[color\\:var\\(--color-common-icon\\)\\]{color:var(--color-common-icon)}.\\[color\\:var\\(--color-common-text-2\\)\\]{color:var(--color-common-text-2)}.\\[color\\:var\\(--color-link-color\\)\\]{color:var(--color-link-color)}.\\[color\\:var\\(--color-otp-primary\\)\\]{color:var(--color-otp-primary)}.\\[color\\:var\\(--color-whatsApp-primary\\)\\]{color:var(--color-whatsApp-primary)}.text-\\[var\\(--color-common-primary\\)\\]{color:var(--color-common-primary)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-200{color:var(--color-green-200)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-100{color:var(--color-indigo-100)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-pink-400{color:var(--color-pink-400)}.text-purple-400{color:var(--color-purple-400)}.text-purple-700{color:var(--color-purple-700)}.text-red-200{color:var(--color-red-200)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-sky-400{color:var(--color-sky-400)}.text-teal-400{color:var(--color-teal-400)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-white{color:var(--color-white)}.text-yellow-100{color:var(--color-yellow-100)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-30{opacity:30%}.opacity-40{opacity:40%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-1{--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-gray-200{--tw-ring-color: var(--color-gray-200)}.ring-gray-300{--tw-ring-color: var(--color-gray-300)}.ring-gray-700{--tw-ring-color: var(--color-gray-700)}.ring-gray-900{--tw-ring-color: var(--color-gray-900)}.ring-gray-900\\/5{--tw-ring-color: color-mix(in srgb, oklch(21% .034 264.665) 5%, transparent)}@supports (color: color-mix(in lab,red,red)){.ring-gray-900\\/5{--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent)}}.ring-green-500{--tw-ring-color: var(--color-green-500)}.ring-indigo-300{--tw-ring-color: var(--color-indigo-300)}.ring-indigo-500{--tw-ring-color: var(--color-indigo-500)}.ring-red-500{--tw-ring-color: var(--color-red-500)}.ring-white{--tw-ring-color: var(--color-white)}.inset-ring-blue-400{--tw-inset-ring-color: var(--color-blue-400)}.inset-ring-gray-400{--tw-inset-ring-color: var(--color-gray-400)}.inset-ring-gray-700{--tw-inset-ring-color: var(--color-gray-700)}.inset-ring-green-500{--tw-inset-ring-color: var(--color-green-500)}.inset-ring-indigo-400{--tw-inset-ring-color: var(--color-indigo-400)}.inset-ring-pink-400{--tw-inset-ring-color: var(--color-pink-400)}.inset-ring-purple-400{--tw-inset-ring-color: var(--color-purple-400)}.inset-ring-red-400{--tw-inset-ring-color: var(--color-red-400)}.inset-ring-white{--tw-inset-ring-color: var(--color-white)}.inset-ring-yellow-400{--tw-inset-ring-color: var(--color-yellow-400)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:-1px}.outline-offset-2{outline-offset:2px}.outline-black{outline-color:var(--color-black)}.outline-blue-500{outline-color:var(--color-blue-500)}.outline-gray-600{outline-color:var(--color-gray-600)}.outline-gray-700{outline-color:var(--color-gray-700)}.outline-gray-900{outline-color:var(--color-gray-900)}.outline-green-500{outline-color:var(--color-green-500)}.outline-indigo-400{outline-color:var(--color-indigo-400)}.outline-indigo-500{outline-color:var(--color-indigo-500)}.outline-red-500{outline-color:var(--color-red-500)}.outline-white{outline-color:var(--color-white)}.outline-yellow-500{outline-color:var(--color-yellow-500)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-discrete{transition-behavior:allow-discrete}.duration-100{--tw-duration: .1s;transition-duration:.1s}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.forced-color-adjust-none{forced-color-adjust:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset: inset}.placeholder\\:text-gray-400::placeholder{color:var(--color-gray-400)}.read-only\\:cursor-default:read-only{cursor:default}.read-only\\:opacity-60:read-only{opacity:60%}@media(hover:hover){.hover\\:border-gray-200:hover{border-color:var(--color-gray-200)}}@media(hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}}@media(hover:hover){.hover\\:bg-\\[var\\(--color-common-hover\\)\\]:hover{background-color:var(--color-common-hover)}}@media(hover:hover){.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}}@media(hover:hover){.hover\\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}}@media(hover:hover){.hover\\:bg-red-500:hover{background-color:var(--color-red-500)}}@media(hover:hover){.hover\\:text-gray-500:hover{color:var(--color-gray-500)}}@media(hover:hover){.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}@media(hover:hover){.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media(hover:hover){.hover\\:text-indigo-600:hover{color:var(--color-indigo-600)}}@media(hover:hover){.hover\\:text-white:hover{color:var(--color-white)}}@media(hover:hover){.hover\\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\\:shadow-sm:hover{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-indigo-500:focus{--tw-ring-color: var(--color-indigo-500)}.focus\\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\\:outline-offset-2:focus{outline-offset:2px}.focus\\:outline-indigo-500:focus{outline-color:var(--color-indigo-500)}.focus\\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-indigo-500:focus-visible{outline-color:var(--color-indigo-500)}.focus-visible\\:outline-indigo-600:focus-visible{outline-color:var(--color-indigo-600)}.focus-visible\\:outline-red-500:focus-visible{outline-color:var(--color-red-500)}.active\\:bg-indigo-700:active{background-color:var(--color-indigo-700)}.active\\:bg-red-700:active{background-color:var(--color-red-700)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:50%}@media(width<80rem){.max-xl\\:w-full{width:100%}}@media(width<80rem){.max-xl\\:flex-col{flex-direction:column}}@media(width<64rem){.max-lg\\:w-full{width:100%}}@media(width<64rem){.max-lg\\:max-w-full{max-width:100%}}@media(width<64rem){.max-lg\\:flex-col{flex-direction:column}}@media(width<48rem){.max-md\\:hidden{display:none}}@media(width<48rem){.max-md\\:w-full{width:100%}}@media(width<48rem){.max-md\\:flex-col{flex-direction:column}}@media(width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}}@media(width>=40rem){.sm\\:left-1\\/2{left:50%}}@media(width>=40rem){.sm\\:col-span-2{grid-column:span 2 / span 2}}@media(width>=40rem){.sm\\:inline-flex{display:inline-flex}}@media(width>=40rem){.sm\\:w-full{width:100%}}@media(width>=40rem){.sm\\:max-w-md{max-width:var(--container-md)}}@media(width>=40rem){.sm\\:max-w-sm{max-width:var(--container-sm)}}@media(width>=40rem){.sm\\:-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}}@media(width>=40rem){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=40rem){.sm\\:flex-row{flex-direction:row}}@media(width>=40rem){.sm\\:items-center{align-items:center}}@media(width>=40rem){.sm\\:justify-between{justify-content:space-between}}@media(width>=40rem){.sm\\:gap-3{gap:calc(var(--spacing) * 3)}}@media(width>=40rem){.sm\\:p-6{padding:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:block{display:block}}@media(width>=64rem){.lg\\:grid{display:grid}}@media(width>=64rem){.lg\\:hidden{display:none}}@media(width>=64rem){.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(width>=64rem){.lg\\:flex-row{flex-direction:row}}@media(width>=64rem){:where(.lg\\:divide-x>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}@media(width>=64rem){:where(.lg\\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}}@media(width>=64rem){.lg\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}}@media(width>=64rem){.lg\\:px-4{padding-inline:calc(var(--spacing) * 4)}}@media(width>=64rem){.lg\\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(width>=64rem){.lg\\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(width>=64rem){.lg\\:pt-0{padding-top:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:text-left{text-align:left}}:where(.dark\\:divide-gray-800:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-gray-800)}.dark\\:border-gray-600:where(.dark,.dark *){border-color:var(--color-gray-600)}.dark\\:border-gray-700:where(.dark,.dark *){border-color:var(--color-gray-700)}.dark\\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\\:border-indigo-400:where(.dark,.dark *){border-color:var(--color-indigo-400)}.dark\\:bg-black\\/70:where(.dark,.dark *){background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-black\\/70:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.dark\\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\\:bg-gray-800:where(.dark,.dark *){background-color:var(--color-gray-800)}.dark\\:bg-gray-900:where(.dark,.dark *){background-color:var(--color-gray-900)}.dark\\:bg-green-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-green-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}.dark\\:bg-indigo-900:where(.dark,.dark *){background-color:var(--color-indigo-900)}.dark\\:bg-indigo-900\\/20:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/20:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-indigo-900) 20%,transparent)}}.dark\\:bg-indigo-900\\/30:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-indigo-900) 30%,transparent)}}.dark\\:bg-indigo-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-indigo-900) 40%,transparent)}}.dark\\:bg-indigo-900\\/50:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-indigo-900) 50%,transparent)}}.dark\\:bg-orange-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(40.8% .123 38.172) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-orange-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-orange-900) 40%,transparent)}}.dark\\:bg-purple-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(38.1% .176 304.987) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-purple-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}.dark\\:bg-red-900\\/30:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-red-900\\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.dark\\:bg-rose-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(41% .159 10.272) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-rose-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-rose-900) 40%,transparent)}}.dark\\:bg-teal-900\\/40:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/40:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-teal-900) 40%,transparent)}}.dark\\:bg-teal-900\\/50:where(.dark,.dark *){background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/50:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-teal-900) 50%,transparent)}}.dark\\:bg-transparent:where(.dark,.dark *){background-color:transparent}.dark\\:text-gray-100:where(.dark,.dark *){color:var(--color-gray-100)}.dark\\:text-gray-300:where(.dark,.dark *){color:var(--color-gray-300)}.dark\\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\\:text-gray-500:where(.dark,.dark *){color:var(--color-gray-500)}.dark\\:text-gray-600:where(.dark,.dark *){color:var(--color-gray-600)}.dark\\:text-green-300:where(.dark,.dark *){color:var(--color-green-300)}.dark\\:text-green-400:where(.dark,.dark *){color:var(--color-green-400)}.dark\\:text-indigo-300:where(.dark,.dark *){color:var(--color-indigo-300)}.dark\\:text-indigo-400:where(.dark,.dark *){color:var(--color-indigo-400)}.dark\\:text-orange-300:where(.dark,.dark *){color:var(--color-orange-300)}.dark\\:text-purple-300:where(.dark,.dark *){color:var(--color-purple-300)}.dark\\:text-red-400:where(.dark,.dark *){color:var(--color-red-400)}.dark\\:text-rose-300:where(.dark,.dark *){color:var(--color-rose-300)}.dark\\:text-teal-300:where(.dark,.dark *){color:var(--color-teal-300)}.dark\\:text-teal-400:where(.dark,.dark *){color:var(--color-teal-400)}.dark\\:text-white:where(.dark,.dark *){color:var(--color-white)}.dark\\:ring-gray-600:where(.dark,.dark *){--tw-ring-color: var(--color-gray-600)}.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:ring-white\\/10:where(.dark,.dark *){--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:placeholder\\:text-gray-500:where(.dark,.dark *)::placeholder{color:var(--color-gray-500)}@media(hover:hover){.dark\\:hover\\:border-gray-500:where(.dark,.dark *):hover{border-color:var(--color-gray-500)}}@media(hover:hover){.dark\\:hover\\:bg-gray-700:where(.dark,.dark *):hover{background-color:var(--color-gray-700)}}@media(hover:hover){.dark\\:hover\\:bg-gray-800:where(.dark,.dark *):hover{background-color:var(--color-gray-800)}}@media(hover:hover){.dark\\:hover\\:bg-gray-800\\/50:where(.dark,.dark *):hover{background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:hover\\:bg-gray-800\\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-gray-800) 50%,transparent)}}}@media(hover:hover){.dark\\:hover\\:text-gray-200:where(.dark,.dark *):hover{color:var(--color-gray-200)}}@media(hover:hover){.dark\\:hover\\:text-gray-300:where(.dark,.dark *):hover{color:var(--color-gray-300)}}@media(hover:hover){.dark\\:hover\\:text-indigo-400:where(.dark,.dark *):hover{color:var(--color-indigo-400)}}.\\[\\&\\:\\:-webkit-inner-spin-button\\]\\:appearance-none::-webkit-inner-spin-button{appearance:none}.\\[\\&\\:\\:-webkit-outer-spin-button\\]\\:appearance-none::-webkit-outer-spin-button{appearance:none}}:host{all:initial;display:block!important;height:inherit!important;min-height:inherit!important;max-height:inherit!important;background:transparent!important;isolation:isolate;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.5;color:inherit;box-sizing:border-box}.authorization-container{display:flex;height:100%;align-items:center;justify-content:center}@property --tw-border-spacing-x{syntax: ""; inherits: false; initial-value: 0;}@property --tw-border-spacing-y{syntax: ""; inherits: false; initial-value: 0;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-divide-x-reverse: 0}}} +/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */ +`],encapsulation:3,changeDetection:0})}}return e})();var Q4={errors:null,otpGenerateData:null,getOtpInProcess:!1,getOtpSuccess:!1,verifyOtpV2Data:null,verifyOtpV2InProcess:!1,verifyOtpV2Success:!1,resendOtpInProcess:!1,resendOtpSuccess:!1,verifyOtpData:null,verifyOtpInProcess:!1,verifyOtpSuccess:!1,resendCount:0,apiErrorResponse:null,closeWidgetApiFailed:!1,widgetData:null,theme:null,userProfileData:null,userProfileDataInProcess:!1,userDetailsSuccess:!1,leaveCompanyData:null,leaveCompanyDataInProcess:!1,leaveCompanySuccess:!1,subscriptionPlansData:null,subscriptionPlansDataInProcess:!1,subscriptionPlansDataSuccess:!1,updateUser:"",loading:!1,updateSuccess:!1,addUserData:null,addUserInProcess:!1,addUserSuccess:!1,rolesData:null,rolesDataInProcess:!1,rolesSuccess:!1,roleCreateData:null,roleCreateDataInProcess:!1,roleCreateSuccess:!1,companyUsersData:null,companyUsersDataInProcess:!1,companyUsersSuccess:!1,permissionCreateData:null,permissionCreateDataInProcess:!1,permissionCreateSuccess:!1,permissionData:null,permissionDataInProcess:!1,permissionSuccess:!1,updateCompanyUserData:null,updateCompanyUserDataInProcess:!1,updateCompanyUserDataSuccess:!1,updatePermissionData:null,updatePermissionDataInProcess:!1,updatePermissionDataSuccess:!1,updateRoleData:null,updateRoleDataInProcess:!1,updateRoleDataSuccess:!1,upgradeSubscriptionData:null,upgradeSubscriptionDataInProcess:!1,upgradeSubscriptionDataSuccess:!1,deleteUserData:null,deleteUserDataInProcess:!1,deleteUserDataSuccess:!1,updateUserRoleData:null,updateUserRoleDataInProcess:!1,updateUserRoleDataSuccess:!1,updateUserPermissionData:null,updateUserPermissionDataInProcess:!1,updateUserPermissionDataSuccess:!1,error:null};function X4(e,n){return iQ(e,n)}var iQ=uT(Q4,_e(so,(e,{request:n})=>R(R({},e),n)),_e(Md,e=>R(R({},e),Q4)),_e(Ho,(e,{request:n})=>X(R({},e),{getOtpInProcess:!0,getOtpSuccess:!1,errors:null})),_e(vb,(e,{response:n})=>X(R({},e),{otpGenerateData:{reqId:n.message},getOtpInProcess:!1,getOtpSuccess:!0})),_e(yb,(e,{errors:n,errorResponse:t})=>X(R({},e),{getOtpInProcess:!1,getOtpSuccess:!1,errors:n,apiErrorResponse:t})),_e(Pd,(e,{request:n})=>X(R({},e),{verifyOtpV2InProcess:!0,verifyOtpV2Success:!1,errors:null})),_e(xb,(e,{response:n})=>X(R({},e),{verifyOtpV2Data:n,verifyOtpV2InProcess:!1,verifyOtpV2Success:!0})),_e(bb,(e,{errors:n,errorResponse:t})=>X(R({},e),{verifyOtpV2Data:null,verifyOtpV2InProcess:!1,verifyOtpV2Success:!1,errors:n,apiErrorResponse:t})),_e(Od,(e,{request:n})=>X(R({},e),{resendOtpInProcess:!0,resendOtpSuccess:!1,errors:null})),_e(wb,(e,{response:n})=>{let t=Pr(e.resendCount);return t+=1,X(R({},e),{resendOtpInProcess:!1,resendOtpSuccess:!0,resendCount:t})}),_e(Cb,(e,{errors:n,errorResponse:t})=>X(R({},e),{resendOtpInProcess:!1,resendOtpSuccess:!1,errors:n,apiErrorResponse:t})),_e(Nd,(e,{request:n})=>X(R({},e),{verifyOtpData:null,verifyOtpInProcess:!0,verifyOtpSuccess:!1,errors:null,apiErrorResponse:null})),_e(Eb,(e,{response:n})=>X(R({},e),{verifyOtpData:n,verifyOtpInProcess:!1,verifyOtpSuccess:!0})),_e(Db,(e,{errors:n,errorResponse:t})=>X(R({},e),{verifyOtpData:null,verifyOtpInProcess:!1,verifyOtpSuccess:!1,errors:n,apiErrorResponse:t})),_e(Rd,e=>X(R({},e),{widgetDataInProcess:!0,widgetDataSuccess:!1,errors:null,closeWidgetApiFailed:!1})),_e(mb,(e,{response:n,theme:t})=>X(R({},e),{widgetData:n,theme:t,widgetDataInProcess:!1,widgetDataSuccess:!0,closeWidgetApiFailed:!1})),_e(_b,(e,{errors:n,errorResponse:t})=>X(R({},e),{widgetDataInProcess:!1,widgetDataSuccess:!1,errors:n,apiErrorResponse:t,closeWidgetApiFailed:!0})),_e(Al,(e,{request:n})=>X(R({},e),{userProfileDataInProcess:!0,userDetailsSuccess:!1,errors:null})),_e(Sb,(e,{response:n})=>X(R({},e),{userProfileDataInProcess:!1,userDetailsSuccess:!0,userProfileData:n})),_e(kb,(e,{errors:n,errorResponse:t})=>X(R({},e),{userProfileDataInProcess:!1,userDetailsSuccess:!1,errors:n,apiErrorResponse:t})),_e(Fd,(e,{companyId:n})=>X(R({},e),{leaveCompanyDataInProcess:!0,leaveCompanySuccess:!1,errors:null})),_e(Tb,(e,{response:n})=>X(R({},e),{leaveCompanyDataInProcess:!1,leaveCompanySuccess:!0,leaveCompanyData:n})),_e(Ib,(e,{errors:n,errorResponse:t})=>X(R({},e),{leaveCompanyDataInProcess:!1,leaveCompanySuccess:!1,errors:n,apiErrorResponse:t})),_e(Ld,e=>X(R({},e),{loading:!1,error:null,updateSuccess:!1})),_e(Ab,(e,{response:n})=>X(R({},e),{name:n.name,loading:!0,error:null,updateSuccess:!0})),_e(Mb,(e,{errors:n,errorResponse:t})=>X(R({},e),{loading:!1,error:n,apiErrorResponse:t,updateSuccess:!1})),_e(Rb,e=>X(R({},e),{addUserInProcess:!1,error:null,addUserSuccess:!1})),_e(Pb,(e,{response:n})=>X(R({},e),{addUserData:n,addUserInProcess:!0,error:null,addUserSuccess:!0})),_e(Ob,(e,{errors:n,errorResponse:t})=>X(R({},e),{addUserInProcess:!1,error:n,apiErrorResponse:t,addUserSuccess:!1})),_e(Nb,e=>X(R({},e),{rolesDataInProcess:!1,error:null,rolesSuccess:!1})),_e(Fb,(e,{response:n})=>X(R({},e),{rolesData:n,rolesDataInProcess:!0,error:null,rolesSuccess:!0})),_e(Lb,(e,{errors:n,errorResponse:t})=>X(R({},e),{rolesDataInProcess:!1,error:n,apiErrorResponse:t,rolesSuccess:!1})),_e(Wb,e=>X(R({},e),{companyUsersDataInProcess:!1,error:null,companyUsersSuccess:!1})),_e(Zb,(e,{response:n})=>X(R({},e),{companyUsersData:n,companyUsersDataInProcess:!0,error:null,companyUsersSuccess:!0})),_e(Kb,(e,{errors:n,errorResponse:t})=>X(R({},e),{companyUsersDataInProcess:!1,error:n,apiErrorResponse:t,companyUsersSuccess:!1})),_e(jb,e=>X(R({},e),{roleCreateDataInProcess:!1,error:null,roleCreateSuccess:!1})),_e(Vb,(e,{response:n})=>X(R({},e),{roleCreateData:n,roleCreateDataInProcess:!0,error:null,roleCreateSuccess:!0})),_e(Ub,(e,{errors:n,errorResponse:t})=>X(R({},e),{roleCreateDataInProcess:!1,error:n,apiErrorResponse:t,roleCreateSuccess:!1})),_e(Bb,e=>X(R({},e),{permissionCreateDataInProcess:!1,error:null,permissionCreateSuccess:!1})),_e($b,(e,{response:n})=>X(R({},e),{permissionCreateData:n,permissionCreateDataInProcess:!0,error:null,permissionCreateSuccess:!0})),_e(zb,(e,{errors:n,errorResponse:t})=>X(R({},e),{permissionCreateDataInProcess:!1,error:n,apiErrorResponse:t,permissionCreateSuccess:!1})),_e(Hb,e=>X(R({},e),{permissionDataInProcess:!1,error:null,permissionSuccess:!1})),_e(Gb,(e,{response:n})=>X(R({},e),{permissionData:n,permissionDataInProcess:!0,error:null,permissionSuccess:!0})),_e(qb,(e,{errors:n,errorResponse:t})=>X(R({},e),{permissionDataInProcess:!1,error:n,apiErrorResponse:t,permissionSuccess:!1})),_e(Yb,e=>X(R({},e),{updateCompanyUserDataInProcess:!1,error:null,updateCompanyUserDataSuccess:!1})),_e(Qb,(e,{response:n})=>X(R({},e),{updateCompanyUserData:n,updateCompanyUserDataInProcess:!0,error:null,updateCompanyUserDataSuccess:!0})),_e(Xb,(e,{errors:n,errorResponse:t})=>X(R({},e),{updateCompanyUserDataInProcess:!1,error:n,apiErrorResponse:t,updateCompanyUserDataSuccess:!1})),_e(Jb,e=>X(R({},e),{updatePermissionDataInProcess:!1,error:null,updatePermissionDataSuccess:!1})),_e(e1,(e,{response:n})=>X(R({},e),{updatePermissionData:n,updatePermissionDataInProcess:!0,error:null,updatePermissionDataSuccess:!0})),_e(t1,(e,{errors:n,errorResponse:t})=>X(R({},e),{updatePermissionDataInProcess:!1,error:n,apiErrorResponse:t,updatePermissionDataSuccess:!1})),_e(n1,e=>X(R({},e),{updateRoleDataInProcess:!1,error:null,updateRoleDataSuccess:!1})),_e(r1,(e,{response:n})=>X(R({},e),{updateRoleData:n,updateRoleDataInProcess:!0,error:null,updateRoleDataSuccess:!0})),_e(i1,(e,{errors:n,errorResponse:t})=>X(R({},e),{updateRoleDataInProcess:!1,error:n,apiErrorResponse:t,updateRoleDataSuccess:!1})),_e(jd,(e,{referenceId:n})=>X(R({},e),{subscriptionPlansDataInProcess:!0,subscriptionPlansDataSuccess:!1,errors:null})),_e(o1,(e,{response:n})=>X(R({},e),{subscriptionPlansDataInProcess:!1,subscriptionPlansDataSuccess:!0,subscriptionPlansData:n})),_e(Vd,(e,{referenceId:n,payload:t,authToken:r})=>X(R({},e),{upgradeSubscriptionDataInProcess:!0,upgradeSubscriptionDataSuccess:!1,errors:null})),_e(s1,(e,{response:n})=>X(R({},e),{upgradeSubscriptionData:n,upgradeSubscriptionDataInProcess:!1,upgradeSubscriptionDataSuccess:!0})),_e(l1,(e,{errors:n,errorResponse:t})=>X(R({},e),{upgradeSubscriptionDataInProcess:!1,upgradeSubscriptionDataSuccess:!1,errors:n,apiErrorResponse:t})),_e(a1,(e,{errors:n,errorResponse:t})=>X(R({},e),{subscriptionPlansDataInProcess:!1,subscriptionPlansDataSuccess:!1,errors:n,apiErrorResponse:t})),_e(c1,(e,{companyId:n})=>X(R({},e),{deleteUserDataInProcess:!0,deleteUserDataSuccess:!1,errors:null})),_e(d1,(e,{response:n})=>X(R({},e),{deleteUserData:n,deleteUserDataInProcess:!1,deleteUserDataSuccess:!0})),_e(u1,(e,{errors:n,errorResponse:t})=>X(R({},e),{deleteUserDataInProcess:!1,deleteUserDataSuccess:!1,errors:n,apiErrorResponse:t})),_e(p1,e=>X(R({},e),{updateUserRoleDataInProcess:!1,updateUserRoleDataSuccess:!1,errors:null})),_e(f1,(e,{response:n})=>X(R({},e),{updateUserRoleData:n,updateUserRoleDataInProcess:!0,updateUserRoleDataSuccess:!0})),_e(h1,(e,{errors:n,errorResponse:t})=>X(R({},e),{updateUserRoleDataInProcess:!1,updateUserRoleDataSuccess:!1,errors:n,apiErrorResponse:t})),_e(g1,e=>X(R({},e),{updateUserPermissionDataInProcess:!1,updateUserPermissionDataSuccess:!1,errors:null})),_e(m1,(e,{response:n})=>X(R({},e),{updateUserPermissionData:n,updateUserPermissionDataInProcess:!0,updateUserPermissionDataSuccess:!0})),_e(_1,(e,{errors:n,errorResponse:t})=>X(R({},e),{updateUserPermissionDataInProcess:!1,updateUserPermissionDataSuccess:!1,errors:n,apiErrorResponse:t})));var J4={otp:X4};var eP=(()=>{class e{constructor(){this.actions$=A(mT),this.otpService=A(Or),this.otpUtilityService=A(Nr),this.getWidgetData$=Jt(()=>this.actions$.pipe(en(ne.getWidgetData),$e(t=>this.otpService.getWidgetData(t.referenceId,t.payload).pipe(de(r=>{if(r){console.log("[ProxyAuth] API response received, ciphered length:",r?.data?.ciphered?.length);let i=this.otpUtilityService.aesDecrypt(r?.data?.ciphered??"",ft.apiEncodeKey,ft.apiIvKey,!0);console.log("[ProxyAuth] Decrypted result:",i?"OK ("+i.length+" chars)":"EMPTY");let o=JSON.parse(i);return console.log("[ProxyAuth] Parsed widget data:",o),ne.getWidgetDataComplete({response:o,theme:r?.data})}}),at(r=>(console.error("[ProxyAuth] getWidgetData failed:",r),console.error("[ProxyAuth] apiEncodeKey defined:",!!ft.apiEncodeKey),console.error("[ProxyAuth] apiIvKey defined:",!!ft.apiIvKey),fe(ne.getWidgetDataError({errors:Me(r.errors),errorResponse:r})))))))),this.getOtp$=Jt(()=>this.actions$.pipe(en(ne.sendOtpAction),$e(t=>this.otpService.sendOtp(t.request).pipe(de(r=>r.type!=="error"?ne.sendOtpActionComplete({response:r}):ne.sendOtpActionError({errors:Me(r.message),errorResponse:r})),at(r=>fe(ne.sendOtpActionError({errors:Me(r.errors),errorResponse:r}))))))),this.verifyOtpV2$=Jt(()=>this.actions$.pipe(en(ne.verifyOtpAction),$e(t=>this.otpService.verifyOtpV2(t.request).pipe(de(r=>r.status==="success"?ne.verifyOtpActionComplete({response:r}):ne.verifyOtpActionError({errors:Me(r.message),errorResponse:r})),at(r=>fe(ne.verifyOtpActionError({errors:Me(r.errors),errorResponse:r}))))))),this.resendOtp$=Jt(()=>this.actions$.pipe(en(ne.getOtpResendAction),$e(t=>this.otpService.resendOtpService(t.request).pipe(de(r=>r.type==="success"?ne.getOtpResendActionComplete({response:r}):ne.getOtpResendActionError({errors:Me(r.message),errorResponse:r})),at(r=>fe(ne.getOtpResendActionError({errors:Me(r.errors),errorResponse:r}))))))),this.verifyOtp$=Jt(()=>this.actions$.pipe(en(ne.getOtpVerifyAction),$e(t=>this.otpService.verifyOtpService(t.request).pipe(de(r=>r.type==="success"?ne.getOtpVerifyActionComplete({response:r}):ne.getOtpVerifyActionError({errors:Me(r.message),errorResponse:r})),at(r=>fe(ne.getOtpVerifyActionError({errors:Me(r.errors),errorResponse:r}))))))),this.getUserDetails$=Jt(()=>this.actions$.pipe(en(ne.getUserDetails),$e(t=>this.otpService.getUserDetailsData(t.request).pipe(de(r=>r.type!=="error"?ne.getUserDetailsComplete({response:r?.data[0]}):ne.getUserDetailsError({errors:Me(r.message),errorResponse:r})),at(r=>fe(ne.getUserDetailsError({errors:Me(r.errors),errorResponse:r}))))))),this.leaveCompany$=Jt(()=>this.actions$.pipe(en(ne.leaveCompany),$e(({companyId:t,authToken:r})=>this.otpService.leaveCompanyUser(t,r).pipe(de(i=>i.type!=="error"?ne.leaveCompanyComplete({response:i?.data[0]}):ne.leaveCompanyError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.leaveCompanyError({errors:Me(i.errors),errorResponse:i}))))))),this.UpdateUser$=Jt(()=>this.actions$.pipe(en(ne.updateUser),$e(({name:t,authToken:r})=>this.otpService.updateUser(t,r).pipe(de(i=>i.type!=="error"?ne.updateUserComplete({response:i}):ne.updateUserError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updateUserError({errors:Me(i.error.message),errorResponse:i}))))))),this.addUser$=Jt(()=>this.actions$.pipe(en(ne.addUser),$e(({payload:t,authToken:r})=>this.otpService.addUser(t,r).pipe(de(i=>i.status==="success"?ne.addUserComplete({response:i}):ne.addUserError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.addUserError({errors:Me(i.errors),errorResponse:i}))))))),this.getRoles$=Jt(()=>this.actions$.pipe(en(ne.getRoles),$e(({authToken:t,itemsPerPage:r})=>this.otpService.getRoles(t,r).pipe(de(i=>i.status==="success"?ne.getRolesComplete({response:i}):ne.getRolesError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.getRolesError({errors:Me(i.errors),errorResponse:i}))))))),this.createRole$=Jt(()=>this.actions$.pipe(en(ne.createRole),$e(({name:t,permissions:r,authToken:i})=>this.otpService.createRole(t,r,i).pipe(de(o=>o.status==="success"?ne.createRoleComplete({response:o}):ne.createRoleError({errors:Me(o.message),errorResponse:o})),at(o=>fe(ne.createRoleError({errors:Me(o.errors),errorResponse:o}))))))),this.getCompanyUsers$=Jt(()=>this.actions$.pipe(en(ne.getCompanyUsers),$e(({authToken:t,itemsPerPage:r,pageNo:i,search:o,exclude_role_ids:a,include_role_ids:s})=>this.otpService.getCompanyUsers(t,r,i,o,a,s).pipe(de(l=>l.status==="success"?ne.getCompanyUsersComplete({response:l}):ne.getCompanyUsersError({errors:Me(l.message),errorResponse:l})),at(l=>fe(ne.getCompanyUsersError({errors:Me(l.errors),errorResponse:l}))))))),this.createPermission$=Jt(()=>this.actions$.pipe(en(ne.createPermission),$e(({name:t,authToken:r})=>this.otpService.createPermission(t,r).pipe(de(i=>i.status==="success"?ne.createPermissionComplete({response:i}):ne.createPermissionError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.createPermissionError({errors:Me(i.errors),errorResponse:i}))))))),this.getPermissions$=Jt(()=>this.actions$.pipe(en(ne.getPermissions),$e(({authToken:t,itemsPerPage:r})=>this.otpService.getPermissions(t,r).pipe(de(i=>i.status==="success"?ne.getPermissionsComplete({response:i}):ne.getPermissionsError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.getPermissionsError({errors:Me(i.errors),errorResponse:i}))))))),this.updateCompanyUser$=Jt(()=>this.actions$.pipe(en(ne.updateCompanyUser),$e(({payload:t,authToken:r})=>this.otpService.updateCompanyUser(t,r).pipe(de(i=>i.status==="success"?ne.updateCompanyUserComplete({response:i}):ne.updateCompanyUserError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updateCompanyUserError({errors:Me(i.errors),errorResponse:i}))))))),this.updatePermission$=Jt(()=>this.actions$.pipe(en(ne.updatePermission),$e(({payload:t,authToken:r})=>this.otpService.updatePermission(t,r).pipe(de(i=>i.status==="success"?ne.updatePermissionComplete({response:i}):ne.updatePermissionError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updatePermissionError({errors:Me(i.errors),errorResponse:i}))))))),this.updateRole$=Jt(()=>this.actions$.pipe(en(ne.updateRole),$e(({payload:t,authToken:r})=>this.otpService.updateRole(t,r).pipe(de(i=>i.status==="success"?ne.updateRoleComplete({response:i}):ne.updateRoleError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updateRoleError({errors:Me(i.errors),errorResponse:i}))))))),this.getSubscriptionPlans$=Jt(()=>this.actions$.pipe(en(ne.getSubscriptionPlans),$e(({referenceId:t,authToken:r})=>this.otpService.getSubscriptionPlans(t,r).pipe(de(i=>i.status==="success"?ne.getSubscriptionPlansComplete({response:i}):ne.getSubscriptionPlansError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.getSubscriptionPlansError({errors:Me(i.errors),errorResponse:i}))))))),this.upgradeSubscription$=Jt(()=>this.actions$.pipe(en(ne.upgradeSubscription),$e(({referenceId:t,payload:r,authToken:i})=>this.otpService.upgradeSubscription(t,r,i).pipe(de(o=>o.status==="success"?ne.upgradeSubscriptionComplete({response:o}):ne.upgradeSubscriptionError({errors:Me(o.message),errorResponse:o})),at(o=>fe(ne.upgradeSubscriptionError({errors:Me(o.errors),errorResponse:o}))))))),this.deleteUser$=Jt(()=>this.actions$.pipe(en(ne.deleteUser),$e(({companyId:t,authToken:r})=>this.otpService.deleteUser(t,r).pipe(de(i=>i.status==="success"?ne.deleteUserComplete({response:i}):ne.deleteUserError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.deleteUserError({errors:Me(i.errors),errorResponse:i}))))))),this.updateUserRole$=Jt(()=>this.actions$.pipe(en(ne.updateUserRole),$e(({payload:t,authToken:r})=>this.otpService.updateUserRole(t,r).pipe(de(i=>i.status==="success"?ne.updateUserRoleComplete({response:i}):ne.updateUserRoleError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updateUserRoleError({errors:Me(i.errors),errorResponse:i}))))))),this.updateUserPermission$=Jt(()=>this.actions$.pipe(en(ne.updateUserPermission),$e(({payload:t,authToken:r})=>this.otpService.updateUserPermission(t,r).pipe(de(i=>i.status==="success"?ne.updateUserPermissionComplete({response:i}):ne.updateUserPermissionError({errors:Me(i.message),errorResponse:i})),at(i=>fe(ne.updateUserPermissionError({errors:Me(i.errors),errorResponse:i})))))))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=ee({token:e,factory:e.\u0275fac})}}return e})();var aQ=["referenceId","target","style","success","failure"];window.__proxyAuth=window.__proxyAuth||{};window.__proxyAuth.version="0.0.3";window.__proxyAuth.buildTime=new Date().toISOString();window.showUserManagement||(window.showUserManagement=()=>{window.dispatchEvent(new CustomEvent("showUserManagement"))});window.hideUserManagement||(window.hideUserManagement=()=>{window.dispatchEvent(new CustomEvent("hideUserManagement"))});function sQ(e){document.readyState==="complete"||document.readyState==="interactive"?setTimeout(e,1):document.addEventListener("DOMContentLoaded",e)}window.initVerification||(window.initVerification=e=>{sQ(()=>{let n=new URLSearchParams(window.location.search),t=n.get("isRegisterFormOnly")==="true",r=R(R(R(R({},n.get("first_name")&&{firstName:n.get("first_name")}),n.get("last_name")&&{lastName:n.get("last_name")}),n.get("email")&&{email:n.get("email")}),n.get("signup_service_id")&&{signupServiceId:n.get("signup_service_id")});if(e?.referenceId||e?.authToken||e?.showCompanyDetails){let i=document.querySelector("proxy-auth");if(i){let u=i.parentElement;u&&u.querySelectorAll("#skeleton-loader").forEach(p=>p.remove()),i.remove()}let o=document.createElement("proxy-auth");if(o.referenceId=e?.referenceId,o.type=e?.type,o.authToken=e?.authToken,o.showCompanyDetails=e?.showCompanyDetails,o.userToken=e?.userToken,o.isRolePermission=e?.isRolePermission,o.isPreview=e?.isPreview,o.isLogin=e?.isLogin,o.loginRedirectUrl=e?.loginRedirectUrl,o.theme=e?.theme,o.version=e?.version,o.input_fields=e?.input_fields,o.show_social_login_icons=e?.show_social_login_icons,o.exclude_role_ids=e?.exclude_role_ids,o.include_role_ids=e?.include_role_ids,o.isHidden=e?.isHidden,o.isRegisterFormOnly=e?.isRegisterFormOnly||t,o.target=e?.target??"_self",!e.success||typeof e.success!="function")throw Error("success callback function missing !");o.successReturn=e.success,o.failureReturn=e.failure,o.otherData=R(R({},r),gl(e,aQ));let a=XA,s=e?.authToken||e?.type===Wn.Authorization?a:e?.referenceId,l=()=>document.getElementById(s),c=u=>{u.append(o),window.libLoaded=!0},d=l();if(d)c(d);else{let f=!1,h=Date.now(),v=(S,w)=>{S.disconnect(),clearInterval(w)},b=(S,w)=>{if(f)return!0;let P=l();return P?(f=!0,v(S,w),c(P),!0):Date.now()-h>=3e4?(f=!0,v(S,w),console.error(`[proxy-auth] Container element with id="${s}" was not found in the document after ${3e4/1e3} s. Ensure the element exists in the DOM before calling window.initVerification().`),!0):!1},_,y=new MutationObserver(()=>{b(y,_)});y.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["id"]}),_=setInterval(()=>{b(y,_)},150)}}else throw e?.referenceId?Error("Something went wrong!"):Error("Reference Id is missing!")})});window.__proxyAuthLoaded?console.warn("[proxy-auth] Script already loaded \u2014 skipping bootstrap."):(window.__proxyAuthLoaded=!0,ey({providers:[fS({eventCoalescing:!0}),oy(),$k(),dT(J4,{runtimeChecks:{strictStateImmutability:!0,strictActionImmutability:!0}}),vT([eP]),...ft.production?[]:[BT({maxAge:25,serialize:!0})],rp(yh.forRoot({siteKey:ft.hCaptchaSiteKey})),Or,Nr,ml,Sn,{provide:gi.Env,useValue:ft.env},{provide:gi.BaseURL,useValue:ft.apiUrl+ft.msgMidProxy},{provide:gi.ClientURL,useValue:ft.apiUrl+ft.msgMidProxy}]}).then(e=>{let n=e.injector;try{if(!customElements.get("proxy-auth")){let t=HS(Y4,{injector:n});customElements.define("proxy-auth",t)}}catch(t){console.warn("[proxy-auth] Custom element registration failed:",t)}})); +/*! Bundled license information: + +crypto-js/ripemd160.js: + (** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *) + +crypto-js/mode-ctr-gladman.js: + (** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + *) + +zone.js/fesm2015/zone.js: + (** + * @license Angular v + * (c) 2010-2025 Google LLC. https://angular.io/ + * License: MIT + *) + +@angular/core/fesm2022/_effect-chunk.mjs: +@angular/core/fesm2022/_not_found-chunk.mjs: +@angular/core/fesm2022/_untracked-chunk.mjs: +@angular/core/fesm2022/primitives-signals.mjs: +@angular/core/fesm2022/primitives-di.mjs: +@angular/core/fesm2022/_effect-chunk2.mjs: +@angular/core/fesm2022/_debug_node-chunk.mjs: +@angular/core/fesm2022/_resource-chunk.mjs: +@angular/core/fesm2022/core.mjs: +@angular/common/fesm2022/_platform_location-chunk.mjs: +@angular/common/fesm2022/_location-chunk.mjs: +@angular/common/fesm2022/_common_module-chunk.mjs: +@angular/common/fesm2022/_xhr-chunk.mjs: +@angular/common/fesm2022/common.mjs: +@angular/platform-browser/fesm2022/_dom_renderer-chunk.mjs: +@angular/platform-browser/fesm2022/_browser-chunk.mjs: +@angular/common/fesm2022/_module-chunk.mjs: +@angular/common/fesm2022/http.mjs: +@angular/platform-browser/fesm2022/platform-browser.mjs: +@angular/elements/fesm2022/elements.mjs: +@angular/animations/fesm2022/_private_export-chunk.mjs: +@angular/animations/fesm2022/_util-chunk.mjs: +@angular/animations/fesm2022/browser.mjs: +@angular/platform-browser/fesm2022/animations.mjs: +@angular/core/fesm2022/rxjs-interop.mjs: +@angular/forms/fesm2022/forms.mjs: +@angular/router/fesm2022/_router-chunk.mjs: +@angular/router/fesm2022/router.mjs: + (** + * @license Angular v21.2.4 + * (c) 2010-2026 Google LLC. https://angular.dev/ + * License: MIT + *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +@ngrx/component-store/fesm2022/ngrx-component-store.mjs: + (** + * @license MIT License + * + * Copyright (c) 2017-2020 Nicholas Jamieson and contributors + * + * 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. + *) +*/ + + +(function() { + if (typeof window === 'undefined' || !window.document) return; + if (document.getElementById('proxy-auth-widget-styles')) return; + + var style = document.createElement('style'); + style.id = 'proxy-auth-widget-styles'; + style.textContent = `@charset "UTF-8";@layer properties;.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}@media(max-width:768px){.mb-sm-20{margin-bottom:20px}.mt-sm-20{margin-top:20px}}.mb-20{margin-bottom:20px!important}.mt-20{margin-top:20px!important}.mb-30{margin-bottom:30px!important}.mt-30{margin-top:30px!important}.my-20{margin-top:20px!important;margin-bottom:20px!important}.pd-1{padding:1px!important}.ml-auto{margin-left:auto!important}.mr-auto{margin-right:auto!important}.d-none{display:none}.d-block{display:block!important}.d-inline-block{display:inline-block!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-grid{display:grid!important}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.justify-content-between{justify-content:space-between}.justify-content-start{justify-content:start}.justify-content-end{justify-content:flex-end}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-stretch{align-items:stretch}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:16px}.gap-4{gap:24px}.gap-5{gap:32px}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-900: oklch(39.6% .141 25.723);--color-orange-50: oklch(98% .016 73.684);--color-orange-300: oklch(83.7% .128 66.29);--color-orange-700: oklch(55.3% .195 38.402);--color-orange-900: oklch(40.8% .123 38.172);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-300: oklch(87.1% .15 154.449);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-500: oklch(69.6% .17 162.48);--color-teal-50: oklch(98.4% .014 180.72);--color-teal-100: oklch(95.3% .051 180.801);--color-teal-300: oklch(85.5% .138 181.071);--color-teal-400: oklch(77.7% .152 181.912);--color-teal-500: oklch(70.4% .14 182.503);--color-teal-600: oklch(60% .118 184.704);--color-teal-700: oklch(51.1% .096 186.391);--color-teal-900: oklch(38.6% .063 188.416);--color-sky-400: oklch(74.6% .16 232.661);--color-sky-500: oklch(68.5% .169 237.323);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-indigo-50: oklch(96.2% .018 272.314);--color-indigo-100: oklch(93% .034 272.788);--color-indigo-200: oklch(87% .065 274.039);--color-indigo-300: oklch(78.5% .115 274.713);--color-indigo-400: oklch(67.3% .182 276.935);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-indigo-800: oklch(39.8% .195 277.366);--color-indigo-900: oklch(35.9% .144 278.697);--color-indigo-950: oklch(25.7% .09 281.288);--color-violet-300: oklch(81.1% .111 293.571);--color-violet-400: oklch(70.2% .183 293.541);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-300: oklch(82.7% .119 306.383);--color-purple-400: oklch(71.4% .203 305.504);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-300: oklch(82.3% .12 346.018);--color-pink-400: oklch(71.8% .202 349.761);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-700: oklch(52.5% .223 3.958);--color-rose-50: oklch(96.9% .015 12.422);--color-rose-300: oklch(81% .117 11.638);--color-rose-400: oklch(71.2% .194 13.428);--color-rose-500: oklch(64.5% .246 16.439);--color-rose-700: oklch(51.4% .222 16.935);--color-rose-900: oklch(41% .159 10.272);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-gray-950: oklch(13% .028 261.692);--color-neutral-100: oklch(97% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--breakpoint-xl: 80rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 56rem;--container-5xl: 64rem;--container-7xl: 80rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--leading-relaxed: 1.625;--radius-xs: .125rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.\\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-0{inset:calc(var(--spacing) * -0)}.-inset-1{inset:calc(var(--spacing) * -1)}.-inset-2{inset:calc(var(--spacing) * -2)}.-inset-3{inset:calc(var(--spacing) * -3)}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-x-px{inset-inline:1px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-px{top:-1px}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-full{right:100%}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\\[9999\\]{z-index:9999}.order-last{order:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.\\!m-0{margin:calc(var(--spacing) * 0)!important}.-m-0{margin:calc(var(--spacing) * -0)}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-20{margin-block:calc(var(--spacing) * 20)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-32{margin-top:calc(var(--spacing) * -32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-30{margin-top:calc(var(--spacing) * 30)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.-mr-0{margin-right:calc(var(--spacing) * -0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-auto{margin-right:auto}.\\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-30{margin-bottom:calc(var(--spacing) * 30)}.-ml-0{margin-left:calc(var(--spacing) * -0)}.-ml-0\\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-0\\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-0{width:calc(var(--spacing) * 0);height:calc(var(--spacing) * 0)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.size-32{width:calc(var(--spacing) * 32);height:calc(var(--spacing) * 32)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.\\!h-3\\.5{height:calc(var(--spacing) * 3.5)!important}.\\!h-4{height:calc(var(--spacing) * 4)!important}.\\!h-9{height:calc(var(--spacing) * 9)!important}.\\!h-12{height:calc(var(--spacing) * 12)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-32{height:calc(var(--spacing) * 32)}.h-100{height:calc(var(--spacing) * 100)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-12{max-height:calc(var(--spacing) * 12)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\\[65vh\\]{max-height:65vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[650px\\]{max-height:650px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\\[400px\\]{min-height:400px}.min-h-\\[calc\\(100vh-64px\\)\\]{min-height:calc(100vh - 64px)}.min-h-full{min-height:100%}.\\!w-3\\.5{width:calc(var(--spacing) * 3.5)!important}.\\!w-4{width:calc(var(--spacing) * 4)!important}.\\!w-9{width:calc(var(--spacing) * 9)!important}.\\!w-12{width:calc(var(--spacing) * 12)!important}.\\!w-\\[56px\\]{width:56px!important}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\\/2{width:50%}.w-3{width:calc(var(--spacing) * 3)}.w-3\\/4{width:75%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-85{width:calc(var(--spacing) * 85)}.w-100{width:calc(var(--spacing) * 100)}.w-\\[85\\%\\]{width:85%}.w-\\[180px\\]{width:180px}.w-\\[200px\\]{width:200px}.w-\\[246px\\]{width:246px}.w-\\[250px\\]{width:250px}.w-\\[350px\\]{width:350px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[480px\\]{max-width:480px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.\\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[150px\\]{min-width:150px}.min-w-\\[720px\\]{min-width:720px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-auto{flex:auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x: calc(var(--spacing) * 0);--tw-border-spacing-y: calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-top{transform-origin:top}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\\[appearance\\:textfield\\]{appearance:textfield}.appearance-none{appearance:none}.\\[grid-template-columns\\:repeat\\(auto-fill\\,minmax\\(168px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[1fr_auto_auto\\]{grid-template-columns:1fr auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:calc(var(--spacing) * 0)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}.gap-y-10{row-gap:calc(var(--spacing) * 10)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\\[var\\(--color-common-border\\)\\]>:not(:last-child)){border-color:var(--color-common-border)}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-tl-lg{border-top-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr-lg{border-top-right-radius:var(--radius-lg)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-br-lg{border-bottom-right-radius:var(--radius-lg)}.rounded-bl-lg{border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-700{border-color:var(--color-gray-700)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-600{border-color:var(--color-indigo-600)}.border-indigo-800{border-color:var(--color-indigo-800)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-white{border-top-color:var(--color-white)}.border-b-white{border-bottom-color:var(--color-white)}.\\[background-color\\:var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.\\[background-color\\:var\\(--color-otp-primary-light\\)\\]{background-color:var(--color-otp-primary-light)}.\\[background-color\\:var\\(--color-whatsApp-primary-light\\)\\]{background-color:var(--color-whatsApp-primary-light)}.bg-\\[var\\(--color-common-bg-light\\)\\]{background-color:var(--color-common-bg-light)}.bg-\\[var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.bg-\\[var\\(--color-common-hover\\)\\]{background-color:var(--color-common-hover)}.bg-\\[var\\(--color-common-primary-light\\,\\#e8f5e9\\)\\]{background-color:var(--color-common-primary-light,#e8f5e9)}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-current{background-color:currentcolor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-900{background-color:var(--color-green-900)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-indigo-700{background-color:var(--color-indigo-700)}.bg-indigo-800{background-color:var(--color-indigo-800)}.bg-indigo-900{background-color:var(--color-indigo-900)}.bg-indigo-950{background-color:var(--color-indigo-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-700{background-color:var(--color-purple-700)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-900\\/20{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-red-900\\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-gray-300{fill:var(--color-gray-300)}.fill-gray-400{fill:var(--color-gray-400)}.fill-green-400{fill:var(--color-green-400)}.fill-indigo-400{fill:var(--color-indigo-400)}.fill-indigo-500{fill:var(--color-indigo-500)}.fill-pink-400{fill:var(--color-pink-400)}.fill-purple-400{fill:var(--color-purple-400)}.fill-red-400{fill:var(--color-red-400)}.fill-red-500{fill:var(--color-red-500)}.fill-white{fill:var(--color-white)}.fill-yellow-400{fill:var(--color-yellow-400)}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-gray-400{stroke:var(--color-gray-400)}.stroke-green-400{stroke:var(--color-green-400)}.stroke-indigo-400{stroke:var(--color-indigo-400)}.stroke-pink-400{stroke:var(--color-pink-400)}.stroke-red-400{stroke:var(--color-red-400)}.stroke-violet-400{stroke:var(--color-violet-400)}.stroke-white{stroke:var(--color-white)}.stroke-yellow-300{stroke:var(--color-yellow-300)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\\!p-0{padding:calc(var(--spacing) * 0)!important}.\\!p-2{padding:calc(var(--spacing) * 2)!important}.\\!p-3{padding:calc(var(--spacing) * 3)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-px{padding-bottom:1px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-12{padding-left:calc(var(--spacing) * 12)}.\\!text-right{text-align:right!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\\!text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading, var(--text-4xl--line-height))!important}.\\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading, var(--text-base--line-height))!important}.\\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading, var(--text-sm--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\\!text-\\[48px\\]{font-size:48px!important}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight: var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-nowrap{text-wrap:nowrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.\\[color\\:var\\(--color-common-icon\\)\\]{color:var(--color-common-icon)}.\\[color\\:var\\(--color-common-text-2\\)\\]{color:var(--color-common-text-2)}.\\[color\\:var\\(--color-link-color\\)\\]{color:var(--color-link-color)}.\\[color\\:var\\(--color-otp-primary\\)\\]{color:var(--color-otp-primary)}.\\[color\\:var\\(--color-whatsApp-primary\\)\\]{color:var(--color-whatsApp-primary)}.text-\\[var\\(--color-common-primary\\)\\]{color:var(--color-common-primary)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-200{color:var(--color-green-200)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-100{color:var(--color-indigo-100)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-pink-400{color:var(--color-pink-400)}.text-purple-400{color:var(--color-purple-400)}.text-purple-700{color:var(--color-purple-700)}.text-red-200{color:var(--color-red-200)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-sky-400{color:var(--color-sky-400)}.text-teal-400{color:var(--color-teal-400)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-white{color:var(--color-white)}.text-yellow-100{color:var(--color-yellow-100)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-30{opacity:30%}.opacity-40{opacity:40%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-1{--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-gray-200{--tw-ring-color: var(--color-gray-200)}.ring-gray-300{--tw-ring-color: var(--color-gray-300)}.ring-gray-700{--tw-ring-color: var(--color-gray-700)}.ring-gray-900{--tw-ring-color: var(--color-gray-900)}.ring-gray-900\\/5{--tw-ring-color: color-mix(in srgb, oklch(21% .034 264.665) 5%, transparent)}@supports (color: color-mix(in lab,red,red)){.ring-gray-900\\/5{--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent)}}.ring-green-500{--tw-ring-color: var(--color-green-500)}.ring-indigo-300{--tw-ring-color: var(--color-indigo-300)}.ring-indigo-500{--tw-ring-color: var(--color-indigo-500)}.ring-red-500{--tw-ring-color: var(--color-red-500)}.ring-white{--tw-ring-color: var(--color-white)}.inset-ring-blue-400{--tw-inset-ring-color: var(--color-blue-400)}.inset-ring-gray-400{--tw-inset-ring-color: var(--color-gray-400)}.inset-ring-gray-700{--tw-inset-ring-color: var(--color-gray-700)}.inset-ring-green-500{--tw-inset-ring-color: var(--color-green-500)}.inset-ring-indigo-400{--tw-inset-ring-color: var(--color-indigo-400)}.inset-ring-pink-400{--tw-inset-ring-color: var(--color-pink-400)}.inset-ring-purple-400{--tw-inset-ring-color: var(--color-purple-400)}.inset-ring-red-400{--tw-inset-ring-color: var(--color-red-400)}.inset-ring-white{--tw-inset-ring-color: var(--color-white)}.inset-ring-yellow-400{--tw-inset-ring-color: var(--color-yellow-400)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:-1px}.outline-offset-2{outline-offset:2px}.outline-black{outline-color:var(--color-black)}.outline-blue-500{outline-color:var(--color-blue-500)}.outline-gray-600{outline-color:var(--color-gray-600)}.outline-gray-700{outline-color:var(--color-gray-700)}.outline-gray-900{outline-color:var(--color-gray-900)}.outline-green-500{outline-color:var(--color-green-500)}.outline-indigo-400{outline-color:var(--color-indigo-400)}.outline-indigo-500{outline-color:var(--color-indigo-500)}.outline-red-500{outline-color:var(--color-red-500)}.outline-white{outline-color:var(--color-white)}.outline-yellow-500{outline-color:var(--color-yellow-500)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-discrete{transition-behavior:allow-discrete}.duration-100{--tw-duration: .1s;transition-duration:.1s}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.forced-color-adjust-none{forced-color-adjust:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset: inset}.placeholder\\:text-gray-400::placeholder{color:var(--color-gray-400)}.read-only\\:cursor-default:read-only{cursor:default}.read-only\\:opacity-60:read-only{opacity:60%}@media(hover:hover){.hover\\:border-gray-200:hover{border-color:var(--color-gray-200)}}@media(hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}}@media(hover:hover){.hover\\:bg-\\[var\\(--color-common-hover\\)\\]:hover{background-color:var(--color-common-hover)}}@media(hover:hover){.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}}@media(hover:hover){.hover\\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}}@media(hover:hover){.hover\\:bg-red-500:hover{background-color:var(--color-red-500)}}@media(hover:hover){.hover\\:text-gray-500:hover{color:var(--color-gray-500)}}@media(hover:hover){.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}@media(hover:hover){.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media(hover:hover){.hover\\:text-indigo-600:hover{color:var(--color-indigo-600)}}@media(hover:hover){.hover\\:text-white:hover{color:var(--color-white)}}@media(hover:hover){.hover\\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\\:shadow-sm:hover{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-indigo-500:focus{--tw-ring-color: var(--color-indigo-500)}.focus\\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\\:outline-offset-2:focus{outline-offset:2px}.focus\\:outline-indigo-500:focus{outline-color:var(--color-indigo-500)}.focus\\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-indigo-500:focus-visible{outline-color:var(--color-indigo-500)}.focus-visible\\:outline-indigo-600:focus-visible{outline-color:var(--color-indigo-600)}.focus-visible\\:outline-red-500:focus-visible{outline-color:var(--color-red-500)}.active\\:bg-indigo-700:active{background-color:var(--color-indigo-700)}.active\\:bg-red-700:active{background-color:var(--color-red-700)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:50%}@media(width<80rem){.max-xl\\:w-full{width:100%}}@media(width<80rem){.max-xl\\:flex-col{flex-direction:column}}@media(width<64rem){.max-lg\\:w-full{width:100%}}@media(width<64rem){.max-lg\\:max-w-full{max-width:100%}}@media(width<64rem){.max-lg\\:flex-col{flex-direction:column}}@media(width<48rem){.max-md\\:hidden{display:none}}@media(width<48rem){.max-md\\:w-full{width:100%}}@media(width<48rem){.max-md\\:flex-col{flex-direction:column}}@media(width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}}@media(width>=40rem){.sm\\:left-1\\/2{left:50%}}@media(width>=40rem){.sm\\:col-span-2{grid-column:span 2 / span 2}}@media(width>=40rem){.sm\\:inline-flex{display:inline-flex}}@media(width>=40rem){.sm\\:w-full{width:100%}}@media(width>=40rem){.sm\\:max-w-md{max-width:var(--container-md)}}@media(width>=40rem){.sm\\:max-w-sm{max-width:var(--container-sm)}}@media(width>=40rem){.sm\\:-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}}@media(width>=40rem){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=40rem){.sm\\:flex-row{flex-direction:row}}@media(width>=40rem){.sm\\:items-center{align-items:center}}@media(width>=40rem){.sm\\:justify-between{justify-content:space-between}}@media(width>=40rem){.sm\\:gap-3{gap:calc(var(--spacing) * 3)}}@media(width>=40rem){.sm\\:p-6{padding:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:block{display:block}}@media(width>=64rem){.lg\\:grid{display:grid}}@media(width>=64rem){.lg\\:hidden{display:none}}@media(width>=64rem){.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(width>=64rem){.lg\\:flex-row{flex-direction:row}}@media(width>=64rem){:where(.lg\\:divide-x>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}@media(width>=64rem){:where(.lg\\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}}@media(width>=64rem){.lg\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}}@media(width>=64rem){.lg\\:px-4{padding-inline:calc(var(--spacing) * 4)}}@media(width>=64rem){.lg\\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(width>=64rem){.lg\\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(width>=64rem){.lg\\:pt-0{padding-top:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:text-left{text-align:left}}@media(prefers-color-scheme:dark){:where(.dark\\:divide-gray-800>:not(:last-child)){border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-600{border-color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-700{border-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-800{border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-indigo-400{border-color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:bg-black\\/70{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-black\\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-700{background-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-800{background-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-900{background-color:var(--color-gray-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-green-900\\/40{background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-green-900\\/40{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900{background-color:var(--color-indigo-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in oklab,var(--color-indigo-900) 20%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in oklab,var(--color-indigo-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in oklab,var(--color-indigo-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in oklab,var(--color-indigo-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-orange-900\\/40{background-color:color-mix(in srgb,oklch(40.8% .123 38.172) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-orange-900\\/40{background-color:color-mix(in oklab,var(--color-orange-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-purple-900\\/40{background-color:color-mix(in srgb,oklch(38.1% .176 304.987) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-purple-900\\/40{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-red-900\\/30{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-red-900\\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-rose-900\\/40{background-color:color-mix(in srgb,oklch(41% .159 10.272) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-rose-900\\/40{background-color:color-mix(in oklab,var(--color-rose-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/40{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/40{background-color:color-mix(in oklab,var(--color-teal-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/50{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/50{background-color:color-mix(in oklab,var(--color-teal-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-transparent{background-color:transparent}}@media(prefers-color-scheme:dark){.dark\\:text-gray-100{color:var(--color-gray-100)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-300{color:var(--color-gray-300)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-400{color:var(--color-gray-400)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-500{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-600{color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:text-green-300{color:var(--color-green-300)}}@media(prefers-color-scheme:dark){.dark\\:text-green-400{color:var(--color-green-400)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-300{color:var(--color-indigo-300)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-400{color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:text-orange-300{color:var(--color-orange-300)}}@media(prefers-color-scheme:dark){.dark\\:text-purple-300{color:var(--color-purple-300)}}@media(prefers-color-scheme:dark){.dark\\:text-red-400{color:var(--color-red-400)}}@media(prefers-color-scheme:dark){.dark\\:text-rose-300{color:var(--color-rose-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-300{color:var(--color-teal-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-400{color:var(--color-teal-400)}}@media(prefers-color-scheme:dark){.dark\\:text-white{color:var(--color-white)}}@media(prefers-color-scheme:dark){.dark\\:ring-gray-600{--tw-ring-color: var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}}@media(prefers-color-scheme:dark){.dark\\:placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:border-gray-500:hover{border-color:var(--color-gray-500)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-700:hover{background-color:var(--color-gray-700)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in oklab,var(--color-gray-800) 50%,transparent)}}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-200:hover{color:var(--color-gray-200)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-300:hover{color:var(--color-gray-300)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-indigo-400:hover{color:var(--color-indigo-400)}}}.\\[\\&\\:\\:-webkit-inner-spin-button\\]\\:appearance-none::-webkit-inner-spin-button{appearance:none}.\\[\\&\\:\\:-webkit-outer-spin-button\\]\\:appearance-none::-webkit-outer-spin-button{appearance:none}}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)){--mat-form-field-container-height: var(--custom-mat-form-field-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined{height:var(--mat-form-field-container-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix:has(.mat-mdc-chip-set){padding-top:8px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix{--mat-form-field-container-vertical-padding: 10px;min-height:var(--mat-form-field-container-height);height:var(--mat-form-field-container-height);padding-top:14px!important;padding-bottom:14px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(-27.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75))}mat-form-field.mat-mdc-form-field.no-padding .mat-mdc-form-field-subscript-wrapper{display:none}mat-paginator mat-form-field.mat-mdc-form-field{width:84px!important}@font-face{font-family:Inter;font-style:normal;font-weight:300;src:url("./media/Inter-Light.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url("./media/Inter-Regular.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:url("./media/Inter-Medium.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:url("./media/Inter-Bold.ttf") format("truetype")}.table-scroll{overflow-x:auto;width:100%}.default-table{box-shadow:none;width:100%}.default-table:has(.mat-no-data-row){height:100%}.default-table .mat-mdc-header-row .mat-mdc-header-cell{font-weight:600;font-size:12px;color:var(--color-table-head)!important;border-bottom-color:var(--color-table-head-border)!important}.default-table .mat-mdc-row .mat-mdc-cell{border-bottom-color:var(--color-table-cell-border)!important}.default-table .mat-mdc-row.highlight{background-color:var(--color-common-bg-lighter)}.default-table .mat-mdc-row:hover:not(.mat-no-data-row){background:var(--color-common-silver)}.default-table .mat-mdc-row.last-child .mat-mdc-cell{border-bottom:0}.default-table .mat-mdc-row.hover-action .actions{opacity:0}@media(hover:hover){.default-table .mat-mdc-row.hover-action:hover .actions{opacity:1}}@media(hover:none){.default-table .mat-mdc-row.hover-action .actions{opacity:1}}@media screen and (max-width:768px){.default-table.responsive-table{display:block!important}.default-table.responsive-table tbody{display:block!important;width:100%}.default-table.responsive-table tr.mat-mdc-header-row{display:none!important}.default-table.responsive-table tr.mat-mdc-row{display:block!important;height:auto!important;border-radius:8px;margin-bottom:12px;border:1px solid var(--color-common-border);box-shadow:0 1px 4px #0000000f;padding:4px 0}.default-table.responsive-table tr.mat-mdc-no-data-row{display:block!important;background:transparent;border:none;box-shadow:none;margin-bottom:0;padding:0}.default-table.responsive-table td.mat-mdc-cell{display:flex!important;flex-direction:row;justify-content:space-between;align-items:center;min-height:40px;height:auto!important;width:100%;padding:8px 16px!important;border-bottom:1px solid var(--color-table-cell-border)!important;box-sizing:border-box;font-size:13px;word-break:break-word}.default-table.responsive-table td.mat-mdc-cell:before{content:attr(data-label);font-weight:600;font-size:11px;text-transform:uppercase;color:var(--color-table-head);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;margin-right:12px}.default-table.responsive-table td.mat-mdc-cell:last-child{border-bottom:0!important}}.service-list.mat-mdc-list-base .mat-mdc-list-item .mdc-list-item__primary-text{display:flex;align-items:center;gap:8px}.mat-divider{border-top-color:var(--color-common-border)!important}.text-success{color:var(--color-common-green)!important}.text-danger{color:var(--mat-sys-error)!important}.text-primary{color:var(--mat-sys-primary)!important}.text-dark{color:var(--color-common-text)!important}.text-secondary{color:var(--color-common-dark)!important}.text-pending{color:var(--color-short-url-primary)}.text-grey{color:var(--color-common-grey)!important}.bg-gray{background-color:var(--color-common-bg)}.bg-light-grey{background-color:var(--color-common-graph-bg)!important}.w-break{word-break:break-word}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre a:link,pre a:visited,pre a:hover,pre a:active{color:var(--color-link-color)!important}.font-10{font-size:10px!important}.font-11{font-size:11px!important}.font-12{font-size:12px!important}.font-14{font-size:var(--font-size-common-14)!important}.font-20{font-size:var(--font-size-common-20)!important}.w-b-hyphens{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.overflow-dotted{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis}.box-shadow-none{box-shadow:none!important}.dark-theme .custom-datepicker .date-input .float-label{background:transparent!important}markdown pre{overflow:auto}markdown pre::-webkit-scrollbar{width:8px;height:8px}markdown pre::-webkit-scrollbar-track{background:#fff6;border-radius:4px}markdown pre::-webkit-scrollbar-thumb{background:#fff3}markdown pre::-webkit-scrollbar-thumb:hover{background:#fff3}.w-input{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input::placeholder{color:var(--color-gray-400)}.w-input:focus{border-color:var(--color-indigo-500)}.w-input:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input:focus{--tw-ring-color: var(--color-indigo-500)}.w-input:focus{--tw-outline-style: none;outline-style:none}.dark .w-input{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input::placeholder{color:var(--color-gray-500)}.w-input-sm{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-sm::placeholder{color:var(--color-gray-400)}.w-input-sm:focus{border-color:var(--color-indigo-500)}.w-input-sm:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-sm:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-sm:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-sm{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-sm::placeholder{color:var(--color-gray-500)}.w-input-icon-right{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-icon-right::placeholder{color:var(--color-gray-400)}.w-input-icon-right:focus{border-color:var(--color-indigo-500)}.w-input-icon-right:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-icon-right:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-icon-right:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-icon-right{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-icon-right::placeholder{color:var(--color-gray-500)}.w-input-search{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 3);padding-left:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-search::placeholder{color:var(--color-gray-400)}.w-input-search:focus{border-color:var(--color-indigo-500)}.w-input-search:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-search:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-search:focus{--tw-outline-style: none;outline-style:none}.w-input-search::-webkit-search-cancel-button{cursor:pointer}.dark .w-input-search{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-search::placeholder{color:var(--color-gray-500)}.w-input-readonly{display:block;width:100%;cursor:not-allowed;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.w-input-readonly:read-only{cursor:default}.w-input-readonly:read-only{opacity:60%}.dark .w-input-readonly{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-gray-400)}.w-textarea{display:block;width:100%;resize:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-textarea::placeholder{color:var(--color-gray-400)}.w-textarea:focus{border-color:var(--color-indigo-500)}.w-textarea:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-textarea:focus{--tw-ring-color: var(--color-indigo-500)}.w-textarea:focus{--tw-outline-style: none;outline-style:none}.dark .w-textarea{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-textarea::placeholder{color:var(--color-gray-500)}.w-select{display:block;width:100%;appearance:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 9);padding-left:calc(var(--spacing) * 3.5);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-select:focus{border-color:var(--color-indigo-500)}.w-select:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-select:focus{--tw-ring-color: var(--color-indigo-500)}.w-select:focus{--tw-outline-style: none;outline-style:none}.dark .w-select{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-input-otp{height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.w-input-otp:focus{border-color:var(--color-indigo-500)}.w-input-otp:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-otp:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-otp:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-otp{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-label{margin-bottom:calc(var(--spacing) * 1.5);display:block;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.dark .w-label{color:var(--color-white)}.w-field-error{margin-top:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));color:var(--color-red-600)}.dark .w-field-error{color:var(--color-red-400)}.w-btn-primary{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary:hover{background-color:var(--color-indigo-500)}}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary:active{background-color:var(--color-indigo-700)}.w-btn-primary:disabled{cursor:not-allowed}.w-btn-primary:disabled{opacity:50%}.w-btn-primary-sm{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary-sm:hover{background-color:var(--color-indigo-500)}}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary-sm:focus-visible{outline-offset:2px}.w-btn-primary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary-sm:active{background-color:var(--color-indigo-700)}.w-btn-secondary{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary:hover{background-color:var(--color-gray-50)}}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary:disabled{cursor:not-allowed}.w-btn-secondary:disabled{opacity:50%}.dark .w-btn-secondary{background-color:var(--color-gray-800);color:var(--color-gray-300);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary:hover{background-color:var(--color-gray-700)}}.w-btn-secondary-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary-sm:hover{background-color:var(--color-gray-50)}}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary-sm:disabled{cursor:not-allowed}.w-btn-secondary-sm:disabled{opacity:40%}.dark .w-btn-secondary-sm{background-color:var(--color-gray-800);color:var(--color-gray-200);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary-sm:hover{background-color:var(--color-gray-700)}}.w-btn-danger{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-red-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-danger:hover{background-color:var(--color-red-500)}}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger:focus-visible{outline-color:var(--color-red-500)}.w-btn-danger:active{background-color:var(--color-red-700)}.w-btn-danger-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-red-600);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-danger-sm:hover{background-color:var(--color-red-50)}}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger-sm:focus-visible{outline-color:var(--color-red-500)}.dark .w-btn-danger-sm{background-color:var(--color-gray-800);color:var(--color-red-400);--tw-ring-color: var(--color-gray-600)}.dark .w-btn-danger-sm:hover{background-color:#7f1d1d33}.w-btn-close{margin:calc(var(--spacing) * -1);cursor:pointer;border-radius:var(--radius-md);padding:calc(var(--spacing) * 1);color:var(--color-gray-400);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-close:hover{color:var(--color-gray-500)}}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-close:focus-visible{outline-color:var(--color-indigo-500)}.dark .w-btn-close{color:var(--color-gray-500)}@media(hover:hover){.dark .w-btn-close:hover{color:var(--color-gray-300)}}.w-spinner{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);animation:var(--animate-spin)}.w-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white)}.dark .w-card{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-card-section{overflow:hidden;border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark .w-card-section{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-dialog-backdrop{position:fixed;inset:calc(var(--spacing) * 0);background-color:color-mix(in srgb,#000 50%,transparent);--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);z-index:2147483646}@supports (color: color-mix(in lab,red,red)){.w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark .w-dialog-backdrop{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.w-dialog-panel{position:fixed;top:50%;left:50%;display:flex;max-height:85vh;--tw-translate-x: -50% ;--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);flex-direction:column;border-radius:var(--radius-xl);background-color:var(--color-white);--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);z-index:2147483647}.dark .w-dialog-panel{background-color:var(--color-gray-900);--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-panel{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}.w-dialog-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-header{border-color:var(--color-gray-700)}.w-dialog-title{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.dark .w-dialog-title{color:var(--color-white)}.w-dialog-body{min-height:calc(var(--spacing) * 0);width:100%;flex:1;overflow-y:auto;padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 5)}.fp-dialog-content>authorization button[aria-label=Close],.fp-dialog-content>authorization>send-otp-center button[aria-label=Close]{display:none!important}.fp-dialog-content>authorization h2,.fp-dialog-content>authorization>send-otp-center h2{display:none!important}.w-dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:calc(var(--spacing) * 3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-footer{border-color:var(--color-gray-700)}.w-section-title{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height));--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--color-gray-900)}.dark .w-section-title{color:var(--color-white)}.w-section-subtitle{margin-top:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.dark .w-section-subtitle{color:var(--color-gray-400)}.w-badge{display:inline-flex;align-items:center;border-radius:var(--radius-md);background-color:var(--color-gray-100);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-600)}.dark .w-badge{background-color:var(--color-gray-700);color:var(--color-gray-300)}.w-badge-green{display:none;align-items:center;border-radius:var(--radius-md);background-color:var(--color-green-50);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-green-700)}@media(width>=40rem){.w-badge-green{display:inline-flex}}.dark .w-badge-green{color:var(--color-green-400);background-color:#14532d4d}.w-divider{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-100)}.dark .w-divider{border-color:var(--color-gray-800)}.w-avatar{display:flex;width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10);flex:none;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:var(--color-indigo-100);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-indigo-700);-webkit-user-select:none;user-select:none}.dark .w-avatar{color:var(--color-indigo-300);background-color:#312e8199}.w-icon-box{display:flex;width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8);align-items:center;justify-content:center;border-radius:var(--radius-lg);background-color:var(--color-indigo-100)}.dark .w-icon-box{background-color:#312e8180}.w-icon-box svg{color:var(--color-indigo-600)}.dark .w-icon-box svg{color:var(--color-indigo-400)}.w-link{cursor:pointer;font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-indigo-600);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-link:hover{text-decoration-line:underline}}.w-link:disabled{cursor:not-allowed}.w-link:disabled{opacity:50%}.dark .w-link{color:var(--color-indigo-400)}.w-nav-tab{display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:2px;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-nav-item{display:flex;width:100%;cursor:pointer;align-items:center;column-gap:calc(var(--spacing) * 3);border-radius:var(--radius-md);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:left;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-leading: calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-checkbox-group{max-height:calc(var(--spacing) * 44);overflow-y:auto;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-gray-50)}:where(.w-checkbox-group>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-200)}.dark .w-checkbox-group{border-color:var(--color-gray-700);background-color:var(--color-gray-800)}:where(.dark .w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-700)}.w-checkbox-row{display:flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2.5)}@media(hover:hover){.w-checkbox-row:hover{background-color:var(--color-white)}}@media(hover:hover){.dark .w-checkbox-row:hover{background-color:var(--color-gray-700)}}.w-checkbox{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);border-radius:.25rem;border-color:var(--color-gray-300);color:var(--color-indigo-600)}.w-checkbox:focus{--tw-ring-color: var(--color-indigo-500)}.dark .w-checkbox{border-color:var(--color-gray-500)}.w-search-icon{pointer-events:none;position:absolute;inset-block:calc(var(--spacing) * 0);left:calc(var(--spacing) * 3);height:100%;width:calc(var(--spacing) * 4);color:var(--color-gray-400)}.dark .w-search-icon{color:var(--color-gray-500)}.w-micro-label{margin-bottom:calc(var(--spacing) * .5);font-size:10px;--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-gray-400);text-transform:uppercase}.dark .w-micro-label{color:var(--color-gray-500)}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box;-moz-box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti input,.iti input[type=text],.iti input[type=tel]{position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;padding-right:36px;margin-right:0}.iti__flag-container{position:absolute;top:0;bottom:0;right:0;padding:1px}.iti__selected-flag{z-index:1;position:relative;display:flex;align-items:center;height:100%;padding:0 6px 0 8px}.iti__arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.iti__arrow--up{border-top:none;border-bottom:4px solid #555}.iti__country-list{z-index:2;list-style:none;text-align:left;padding:0;margin:0 0 0 -1px;box-shadow:1px 1px 4px #0003;background-color:#fff;border:1px solid #ccc;white-space:nowrap;max-height:200px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti__country-list--dropup{bottom:100%;margin-bottom:-1px;min-height:250px!important}@media(max-width:500px){.iti__country-list{white-space:normal}}.iti__flag-box{display:inline-block;width:20px}.iti__divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.iti__country{padding:5px 10px;outline:none}.iti__dial-code{color:#999}.iti__country.iti__highlight{background-color:#0000000d}.iti__flag-box,.iti__country-name,.iti__dial-code{vertical-align:middle}.iti__flag-box,.iti__country-name{margin-right:6px}.iti--allow-dropdown input,.iti--allow-dropdown input[type=text],.iti--allow-dropdown input[type=tel],.iti--separate-dial-code input,.iti--separate-dial-code input[type=text],.iti--separate-dial-code input[type=tel]{padding-right:6px;padding-left:52px;margin-left:0}.iti--allow-dropdown .iti__flag-container,.iti--separate-dial-code .iti__flag-container{right:auto;left:0}.iti--allow-dropdown .iti__flag-container:hover{cursor:pointer}.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#0000000d}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover{cursor:default}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover .iti__selected-flag,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover .iti__selected-flag{background-color:transparent}.iti--separate-dial-code .iti__selected-flag{background-color:#0000000d}.iti--separate-dial-code .iti__selected-dial-code{margin-left:6px}.iti--container{position:absolute;top:-1000px;left:-1000px;z-index:1060;padding:1px}.iti--container:hover{cursor:pointer}.iti-mobile .iti--container{inset:30px;position:fixed}.iti-mobile .iti__country-list{max-height:100%;width:calc(100vw - 60px)}.iti-mobile .iti__country{padding:10px;line-height:1.5em}.iti__flag{width:20px}.iti__flag.iti__be{width:18px}.iti__flag.iti__ch{width:15px}.iti__flag.iti__mc{width:19px}.iti__flag.iti__ne{width:18px}.iti__flag.iti__np{width:13px}.iti__flag.iti__va{width:15px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-size:5652px 15px}}.iti__flag.iti__ac{height:10px;background-position:0px 0px}.iti__flag.iti__ad{height:14px;background-position:-22px 0px}.iti__flag.iti__ae{height:10px;background-position:-44px 0px}.iti__flag.iti__af{height:14px;background-position:-66px 0px}.iti__flag.iti__ag{height:14px;background-position:-88px 0px}.iti__flag.iti__ai{height:10px;background-position:-110px 0px}.iti__flag.iti__al{height:15px;background-position:-132px 0px}.iti__flag.iti__am{height:10px;background-position:-154px 0px}.iti__flag.iti__ao{height:14px;background-position:-176px 0px}.iti__flag.iti__aq{height:14px;background-position:-198px 0px}.iti__flag.iti__ar{height:13px;background-position:-220px 0px}.iti__flag.iti__as{height:10px;background-position:-242px 0px}.iti__flag.iti__at{height:14px;background-position:-264px 0px}.iti__flag.iti__au{height:10px;background-position:-286px 0px}.iti__flag.iti__aw{height:14px;background-position:-308px 0px}.iti__flag.iti__ax{height:13px;background-position:-330px 0px}.iti__flag.iti__az{height:10px;background-position:-352px 0px}.iti__flag.iti__ba{height:10px;background-position:-374px 0px}.iti__flag.iti__bb{height:14px;background-position:-396px 0px}.iti__flag.iti__bd{height:12px;background-position:-418px 0px}.iti__flag.iti__be{height:15px;background-position:-440px 0px}.iti__flag.iti__bf{height:14px;background-position:-460px 0px}.iti__flag.iti__bg{height:12px;background-position:-482px 0px}.iti__flag.iti__bh{height:12px;background-position:-504px 0px}.iti__flag.iti__bi{height:12px;background-position:-526px 0px}.iti__flag.iti__bj{height:14px;background-position:-548px 0px}.iti__flag.iti__bl{height:14px;background-position:-570px 0px}.iti__flag.iti__bm{height:10px;background-position:-592px 0px}.iti__flag.iti__bn{height:10px;background-position:-614px 0px}.iti__flag.iti__bo{height:14px;background-position:-636px 0px}.iti__flag.iti__bq{height:14px;background-position:-658px 0px}.iti__flag.iti__br{height:14px;background-position:-680px 0px}.iti__flag.iti__bs{height:10px;background-position:-702px 0px}.iti__flag.iti__bt{height:14px;background-position:-724px 0px}.iti__flag.iti__bv{height:15px;background-position:-746px 0px}.iti__flag.iti__bw{height:14px;background-position:-768px 0px}.iti__flag.iti__by{height:10px;background-position:-790px 0px}.iti__flag.iti__bz{height:14px;background-position:-812px 0px}.iti__flag.iti__ca{height:10px;background-position:-834px 0px}.iti__flag.iti__cc{height:10px;background-position:-856px 0px}.iti__flag.iti__cd{height:15px;background-position:-878px 0px}.iti__flag.iti__cf{height:14px;background-position:-900px 0px}.iti__flag.iti__cg{height:14px;background-position:-922px 0px}.iti__flag.iti__ch{height:15px;background-position:-944px 0px}.iti__flag.iti__ci{height:14px;background-position:-961px 0px}.iti__flag.iti__ck{height:10px;background-position:-983px 0px}.iti__flag.iti__cl{height:14px;background-position:-1005px 0px}.iti__flag.iti__cm{height:14px;background-position:-1027px 0px}.iti__flag.iti__cn{height:14px;background-position:-1049px 0px}.iti__flag.iti__co{height:14px;background-position:-1071px 0px}.iti__flag.iti__cp{height:14px;background-position:-1093px 0px}.iti__flag.iti__cr{height:12px;background-position:-1115px 0px}.iti__flag.iti__cu{height:10px;background-position:-1137px 0px}.iti__flag.iti__cv{height:12px;background-position:-1159px 0px}.iti__flag.iti__cw{height:14px;background-position:-1181px 0px}.iti__flag.iti__cx{height:10px;background-position:-1203px 0px}.iti__flag.iti__cy{height:14px;background-position:-1225px 0px}.iti__flag.iti__cz{height:14px;background-position:-1247px 0px}.iti__flag.iti__de{height:12px;background-position:-1269px 0px}.iti__flag.iti__dg{height:10px;background-position:-1291px 0px}.iti__flag.iti__dj{height:14px;background-position:-1313px 0px}.iti__flag.iti__dk{height:15px;background-position:-1335px 0px}.iti__flag.iti__dm{height:10px;background-position:-1357px 0px}.iti__flag.iti__do{height:14px;background-position:-1379px 0px}.iti__flag.iti__dz{height:14px;background-position:-1401px 0px}.iti__flag.iti__ea{height:14px;background-position:-1423px 0px}.iti__flag.iti__ec{height:14px;background-position:-1445px 0px}.iti__flag.iti__ee{height:13px;background-position:-1467px 0px}.iti__flag.iti__eg{height:14px;background-position:-1489px 0px}.iti__flag.iti__eh{height:10px;background-position:-1511px 0px}.iti__flag.iti__er{height:10px;background-position:-1533px 0px}.iti__flag.iti__es{height:14px;background-position:-1555px 0px}.iti__flag.iti__et{height:10px;background-position:-1577px 0px}.iti__flag.iti__eu{height:14px;background-position:-1599px 0px}.iti__flag.iti__fi{height:12px;background-position:-1621px 0px}.iti__flag.iti__fj{height:10px;background-position:-1643px 0px}.iti__flag.iti__fk{height:10px;background-position:-1665px 0px}.iti__flag.iti__fm{height:11px;background-position:-1687px 0px}.iti__flag.iti__fo{height:15px;background-position:-1709px 0px}.iti__flag.iti__fr{height:14px;background-position:-1731px 0px}.iti__flag.iti__ga{height:15px;background-position:-1753px 0px}.iti__flag.iti__gb{height:10px;background-position:-1775px 0px}.iti__flag.iti__gd{height:12px;background-position:-1797px 0px}.iti__flag.iti__ge{height:14px;background-position:-1819px 0px}.iti__flag.iti__gf{height:14px;background-position:-1841px 0px}.iti__flag.iti__gg{height:14px;background-position:-1863px 0px}.iti__flag.iti__gh{height:14px;background-position:-1885px 0px}.iti__flag.iti__gi{height:10px;background-position:-1907px 0px}.iti__flag.iti__gl{height:14px;background-position:-1929px 0px}.iti__flag.iti__gm{height:14px;background-position:-1951px 0px}.iti__flag.iti__gn{height:14px;background-position:-1973px 0px}.iti__flag.iti__gp{height:14px;background-position:-1995px 0px}.iti__flag.iti__gq{height:14px;background-position:-2017px 0px}.iti__flag.iti__gr{height:14px;background-position:-2039px 0px}.iti__flag.iti__gs{height:10px;background-position:-2061px 0px}.iti__flag.iti__gt{height:13px;background-position:-2083px 0px}.iti__flag.iti__gu{height:11px;background-position:-2105px 0px}.iti__flag.iti__gw{height:10px;background-position:-2127px 0px}.iti__flag.iti__gy{height:12px;background-position:-2149px 0px}.iti__flag.iti__hk{height:14px;background-position:-2171px 0px}.iti__flag.iti__hm{height:10px;background-position:-2193px 0px}.iti__flag.iti__hn{height:10px;background-position:-2215px 0px}.iti__flag.iti__hr{height:10px;background-position:-2237px 0px}.iti__flag.iti__ht{height:12px;background-position:-2259px 0px}.iti__flag.iti__hu{height:10px;background-position:-2281px 0px}.iti__flag.iti__ic{height:14px;background-position:-2303px 0px}.iti__flag.iti__id{height:14px;background-position:-2325px 0px}.iti__flag.iti__ie{height:10px;background-position:-2347px 0px}.iti__flag.iti__il{height:15px;background-position:-2369px 0px}.iti__flag.iti__im{height:10px;background-position:-2391px 0px}.iti__flag.iti__in{height:14px;background-position:-2413px 0px}.iti__flag.iti__io{height:10px;background-position:-2435px 0px}.iti__flag.iti__iq{height:14px;background-position:-2457px 0px}.iti__flag.iti__ir{height:12px;background-position:-2479px 0px}.iti__flag.iti__is{height:15px;background-position:-2501px 0px}.iti__flag.iti__it{height:14px;background-position:-2523px 0px}.iti__flag.iti__je{height:12px;background-position:-2545px 0px}.iti__flag.iti__jm{height:10px;background-position:-2567px 0px}.iti__flag.iti__jo{height:10px;background-position:-2589px 0px}.iti__flag.iti__jp{height:14px;background-position:-2611px 0px}.iti__flag.iti__ke{height:14px;background-position:-2633px 0px}.iti__flag.iti__kg{height:12px;background-position:-2655px 0px}.iti__flag.iti__kh{height:13px;background-position:-2677px 0px}.iti__flag.iti__ki{height:10px;background-position:-2699px 0px}.iti__flag.iti__km{height:12px;background-position:-2721px 0px}.iti__flag.iti__kn{height:14px;background-position:-2743px 0px}.iti__flag.iti__kp{height:10px;background-position:-2765px 0px}.iti__flag.iti__kr{height:14px;background-position:-2787px 0px}.iti__flag.iti__kw{height:10px;background-position:-2809px 0px}.iti__flag.iti__ky{height:10px;background-position:-2831px 0px}.iti__flag.iti__kz{height:10px;background-position:-2853px 0px}.iti__flag.iti__la{height:14px;background-position:-2875px 0px}.iti__flag.iti__lb{height:14px;background-position:-2897px 0px}.iti__flag.iti__lc{height:10px;background-position:-2919px 0px}.iti__flag.iti__li{height:12px;background-position:-2941px 0px}.iti__flag.iti__lk{height:10px;background-position:-2963px 0px}.iti__flag.iti__lr{height:11px;background-position:-2985px 0px}.iti__flag.iti__ls{height:14px;background-position:-3007px 0px}.iti__flag.iti__lt{height:12px;background-position:-3029px 0px}.iti__flag.iti__lu{height:12px;background-position:-3051px 0px}.iti__flag.iti__lv{height:10px;background-position:-3073px 0px}.iti__flag.iti__ly{height:10px;background-position:-3095px 0px}.iti__flag.iti__ma{height:14px;background-position:-3117px 0px}.iti__flag.iti__mc{height:15px;background-position:-3139px 0px}.iti__flag.iti__md{height:10px;background-position:-3160px 0px}.iti__flag.iti__me{height:10px;background-position:-3182px 0px}.iti__flag.iti__mf{height:14px;background-position:-3204px 0px}.iti__flag.iti__mg{height:14px;background-position:-3226px 0px}.iti__flag.iti__mh{height:11px;background-position:-3248px 0px}.iti__flag.iti__mk{height:10px;background-position:-3270px 0px}.iti__flag.iti__ml{height:14px;background-position:-3292px 0px}.iti__flag.iti__mm{height:14px;background-position:-3314px 0px}.iti__flag.iti__mn{height:10px;background-position:-3336px 0px}.iti__flag.iti__mo{height:14px;background-position:-3358px 0px}.iti__flag.iti__mp{height:10px;background-position:-3380px 0px}.iti__flag.iti__mq{height:14px;background-position:-3402px 0px}.iti__flag.iti__mr{height:14px;background-position:-3424px 0px}.iti__flag.iti__ms{height:10px;background-position:-3446px 0px}.iti__flag.iti__mt{height:14px;background-position:-3468px 0px}.iti__flag.iti__mu{height:14px;background-position:-3490px 0px}.iti__flag.iti__mv{height:14px;background-position:-3512px 0px}.iti__flag.iti__mw{height:14px;background-position:-3534px 0px}.iti__flag.iti__mx{height:12px;background-position:-3556px 0px}.iti__flag.iti__my{height:10px;background-position:-3578px 0px}.iti__flag.iti__mz{height:14px;background-position:-3600px 0px}.iti__flag.iti__na{height:14px;background-position:-3622px 0px}.iti__flag.iti__nc{height:10px;background-position:-3644px 0px}.iti__flag.iti__ne{height:15px;background-position:-3666px 0px}.iti__flag.iti__nf{height:10px;background-position:-3686px 0px}.iti__flag.iti__ng{height:10px;background-position:-3708px 0px}.iti__flag.iti__ni{height:12px;background-position:-3730px 0px}.iti__flag.iti__nl{height:14px;background-position:-3752px 0px}.iti__flag.iti__no{height:15px;background-position:-3774px 0px}.iti__flag.iti__np{height:15px;background-position:-3796px 0px}.iti__flag.iti__nr{height:10px;background-position:-3811px 0px}.iti__flag.iti__nu{height:10px;background-position:-3833px 0px}.iti__flag.iti__nz{height:10px;background-position:-3855px 0px}.iti__flag.iti__om{height:10px;background-position:-3877px 0px}.iti__flag.iti__pa{height:14px;background-position:-3899px 0px}.iti__flag.iti__pe{height:14px;background-position:-3921px 0px}.iti__flag.iti__pf{height:14px;background-position:-3943px 0px}.iti__flag.iti__pg{height:15px;background-position:-3965px 0px}.iti__flag.iti__ph{height:10px;background-position:-3987px 0px}.iti__flag.iti__pk{height:14px;background-position:-4009px 0px}.iti__flag.iti__pl{height:13px;background-position:-4031px 0px}.iti__flag.iti__pm{height:14px;background-position:-4053px 0px}.iti__flag.iti__pn{height:10px;background-position:-4075px 0px}.iti__flag.iti__pr{height:14px;background-position:-4097px 0px}.iti__flag.iti__ps{height:10px;background-position:-4119px 0px}.iti__flag.iti__pt{height:14px;background-position:-4141px 0px}.iti__flag.iti__pw{height:13px;background-position:-4163px 0px}.iti__flag.iti__py{height:11px;background-position:-4185px 0px}.iti__flag.iti__qa{height:8px;background-position:-4207px 0px}.iti__flag.iti__re{height:14px;background-position:-4229px 0px}.iti__flag.iti__ro{height:14px;background-position:-4251px 0px}.iti__flag.iti__rs{height:14px;background-position:-4273px 0px}.iti__flag.iti__ru{height:14px;background-position:-4295px 0px}.iti__flag.iti__rw{height:14px;background-position:-4317px 0px}.iti__flag.iti__sa{height:14px;background-position:-4339px 0px}.iti__flag.iti__sb{height:10px;background-position:-4361px 0px}.iti__flag.iti__sc{height:10px;background-position:-4383px 0px}.iti__flag.iti__sd{height:10px;background-position:-4405px 0px}.iti__flag.iti__se{height:13px;background-position:-4427px 0px}.iti__flag.iti__sg{height:14px;background-position:-4449px 0px}.iti__flag.iti__sh{height:10px;background-position:-4471px 0px}.iti__flag.iti__si{height:10px;background-position:-4493px 0px}.iti__flag.iti__sj{height:15px;background-position:-4515px 0px}.iti__flag.iti__sk{height:14px;background-position:-4537px 0px}.iti__flag.iti__sl{height:14px;background-position:-4559px 0px}.iti__flag.iti__sm{height:15px;background-position:-4581px 0px}.iti__flag.iti__sn{height:14px;background-position:-4603px 0px}.iti__flag.iti__so{height:14px;background-position:-4625px 0px}.iti__flag.iti__sr{height:14px;background-position:-4647px 0px}.iti__flag.iti__ss{height:10px;background-position:-4669px 0px}.iti__flag.iti__st{height:10px;background-position:-4691px 0px}.iti__flag.iti__sv{height:12px;background-position:-4713px 0px}.iti__flag.iti__sx{height:14px;background-position:-4735px 0px}.iti__flag.iti__sy{height:14px;background-position:-4757px 0px}.iti__flag.iti__sz{height:14px;background-position:-4779px 0px}.iti__flag.iti__ta{height:10px;background-position:-4801px 0px}.iti__flag.iti__tc{height:10px;background-position:-4823px 0px}.iti__flag.iti__td{height:14px;background-position:-4845px 0px}.iti__flag.iti__tf{height:14px;background-position:-4867px 0px}.iti__flag.iti__tg{height:13px;background-position:-4889px 0px}.iti__flag.iti__th{height:14px;background-position:-4911px 0px}.iti__flag.iti__tj{height:10px;background-position:-4933px 0px}.iti__flag.iti__tk{height:10px;background-position:-4955px 0px}.iti__flag.iti__tl{height:10px;background-position:-4977px 0px}.iti__flag.iti__tm{height:14px;background-position:-4999px 0px}.iti__flag.iti__tn{height:14px;background-position:-5021px 0px}.iti__flag.iti__to{height:10px;background-position:-5043px 0px}.iti__flag.iti__tr{height:14px;background-position:-5065px 0px}.iti__flag.iti__tt{height:12px;background-position:-5087px 0px}.iti__flag.iti__tv{height:10px;background-position:-5109px 0px}.iti__flag.iti__tw{height:14px;background-position:-5131px 0px}.iti__flag.iti__tz{height:14px;background-position:-5153px 0px}.iti__flag.iti__ua{height:14px;background-position:-5175px 0px}.iti__flag.iti__ug{height:14px;background-position:-5197px 0px}.iti__flag.iti__um{height:11px;background-position:-5219px 0px}.iti__flag.iti__un{height:14px;background-position:-5241px 0px}.iti__flag.iti__us{height:11px;background-position:-5263px 0px}.iti__flag.iti__uy{height:14px;background-position:-5285px 0px}.iti__flag.iti__uz{height:10px;background-position:-5307px 0px}.iti__flag.iti__va{height:15px;background-position:-5329px 0px}.iti__flag.iti__vc{height:14px;background-position:-5346px 0px}.iti__flag.iti__ve{height:14px;background-position:-5368px 0px}.iti__flag.iti__vg{height:10px;background-position:-5390px 0px}.iti__flag.iti__vi{height:14px;background-position:-5412px 0px}.iti__flag.iti__vn{height:14px;background-position:-5434px 0px}.iti__flag.iti__vu{height:12px;background-position:-5456px 0px}.iti__flag.iti__wf{height:14px;background-position:-5478px 0px}.iti__flag.iti__ws{height:10px;background-position:-5500px 0px}.iti__flag.iti__xk{height:15px;background-position:-5522px 0px}.iti__flag.iti__ye{height:14px;background-position:-5544px 0px}.iti__flag.iti__yt{height:14px;background-position:-5566px 0px}.iti__flag.iti__za{height:14px;background-position:-5588px 0px}.iti__flag.iti__zm{height:14px;background-position:-5610px 0px}.iti__flag.iti__zw{height:10px;background-position:-5632px 0px}.iti__flag{height:15px;box-shadow:0 0 1px #888;background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)!important;background-repeat:no-repeat;background-color:#dbdbdb;background-position:20px 0}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)}}.iti__flag.iti__np{background-color:transparent}.iti.iti--allow-dropdown{width:100%;margin-bottom:8px}#phone,[id^=init-contact]{height:38.73px}#phone:focus,[id^=init-contact]:focus{border-color:transparent;outline:2px solid #1e75ba!important}.iti{display:block!important}.iti .iti__country-list{position:absolute!important;bottom:0!important;top:auto!important;left:auto!important;transform:translateY(101%)!important;box-shadow:none;font-size:14px;margin-left:0;width:316px;max-height:250px}.iti__country{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis;padding:10px!important;color:#3f4346!important;font-weight:500!important}.iti__country.iti__flag-box{margin-right:12px}.iti__country:hover,.iti__country.iti__highlight{background-color:#d5e0f8!important}.selected-dial-code{font-weight:400;font-size:14px}.selected-dial-code{color:#8f9396}.dropdown-menu.country-dropdown{width:291px!important;border-radius:8px 8px 0 0!important;border-color:#d5d9dc!important}.dropdown-menu.country-dropdown ul{width:100%}.invalid-input{outline:2px solid #cc5229}.dark .iti .iti__country-list{background-color:#1f2937;border-color:#374151;color:#f9fafb}.dark .iti__country{color:#f9fafb!important}.dark .iti__country:hover,.dark .iti__country.iti__highlight{background-color:#312e81!important}.dark .iti__dial-code{color:#9ca3af}.dark .iti__divider{border-bottom-color:#374151}.dark .iti__selected-flag:hover,.dark .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#ffffff14}.dark #phone,.dark [id^=init-contact]{color:#f9fafb;background-color:transparent}:root{--color-common-dark: #000000;--color-common-slate: #333333;--color-common-rock: #5d6164;--color-common-grey: #333333;--color-common-cloud: #c1c5c8;--color-common-smoke: #d5d9dc;--color-common-white: #ffffff;--color-common-black: #000000;--border-common-radius-4: 4px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-24: 24px;--font-size-28: 28px;--font-size-30: 30px;--font-size-36: 36px;--custom-mat-form-field-height: 48px}html,body{margin:0;width:100vw;height:100vh;overflow-x:hidden}*,proxy-auth,.iti__country-list{font-family:Inter,sans-serif;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}@property --tw-border-spacing-x{syntax: ""; inherits: false; initial-value: 0;}@property --tw-border-spacing-y{syntax: ""; inherits: false; initial-value: 0;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-divide-x-reverse: 0}}} +`; + + // Store CSS content globally so widget-portal service can access it + if (!window.__proxyAuth) window.__proxyAuth = {}; + window.__proxyAuth.inlinedStyles = `@charset "UTF-8";@layer properties;.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}@media(max-width:768px){.mb-sm-20{margin-bottom:20px}.mt-sm-20{margin-top:20px}}.mb-20{margin-bottom:20px!important}.mt-20{margin-top:20px!important}.mb-30{margin-bottom:30px!important}.mt-30{margin-top:30px!important}.my-20{margin-top:20px!important;margin-bottom:20px!important}.pd-1{padding:1px!important}.ml-auto{margin-left:auto!important}.mr-auto{margin-right:auto!important}.d-none{display:none}.d-block{display:block!important}.d-inline-block{display:inline-block!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-grid{display:grid!important}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.justify-content-between{justify-content:space-between}.justify-content-start{justify-content:start}.justify-content-end{justify-content:flex-end}.align-items-center{align-items:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-stretch{align-items:stretch}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:16px}.gap-4{gap:24px}.gap-5{gap:32px}.text-center{text-align:center!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-900: oklch(39.6% .141 25.723);--color-orange-50: oklch(98% .016 73.684);--color-orange-300: oklch(83.7% .128 66.29);--color-orange-700: oklch(55.3% .195 38.402);--color-orange-900: oklch(40.8% .123 38.172);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-300: oklch(87.1% .15 154.449);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-500: oklch(69.6% .17 162.48);--color-teal-50: oklch(98.4% .014 180.72);--color-teal-100: oklch(95.3% .051 180.801);--color-teal-300: oklch(85.5% .138 181.071);--color-teal-400: oklch(77.7% .152 181.912);--color-teal-500: oklch(70.4% .14 182.503);--color-teal-600: oklch(60% .118 184.704);--color-teal-700: oklch(51.1% .096 186.391);--color-teal-900: oklch(38.6% .063 188.416);--color-sky-400: oklch(74.6% .16 232.661);--color-sky-500: oklch(68.5% .169 237.323);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-300: oklch(80.9% .105 251.813);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-indigo-50: oklch(96.2% .018 272.314);--color-indigo-100: oklch(93% .034 272.788);--color-indigo-200: oklch(87% .065 274.039);--color-indigo-300: oklch(78.5% .115 274.713);--color-indigo-400: oklch(67.3% .182 276.935);--color-indigo-500: oklch(58.5% .233 277.117);--color-indigo-600: oklch(51.1% .262 276.966);--color-indigo-700: oklch(45.7% .24 277.023);--color-indigo-800: oklch(39.8% .195 277.366);--color-indigo-900: oklch(35.9% .144 278.697);--color-indigo-950: oklch(25.7% .09 281.288);--color-violet-300: oklch(81.1% .111 293.571);--color-violet-400: oklch(70.2% .183 293.541);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-300: oklch(82.7% .119 306.383);--color-purple-400: oklch(71.4% .203 305.504);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-300: oklch(82.3% .12 346.018);--color-pink-400: oklch(71.8% .202 349.761);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-700: oklch(52.5% .223 3.958);--color-rose-50: oklch(96.9% .015 12.422);--color-rose-300: oklch(81% .117 11.638);--color-rose-400: oklch(71.2% .194 13.428);--color-rose-500: oklch(64.5% .246 16.439);--color-rose-700: oklch(51.4% .222 16.935);--color-rose-900: oklch(41% .159 10.272);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-gray-950: oklch(13% .028 261.692);--color-neutral-100: oklch(97% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--breakpoint-xl: 80rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-xl: 36rem;--container-2xl: 42rem;--container-3xl: 48rem;--container-4xl: 56rem;--container-5xl: 64rem;--container-7xl: 80rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--tracking-tight: -.025em;--tracking-normal: 0em;--tracking-wide: .025em;--leading-relaxed: 1.625;--radius-xs: .125rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm: 8px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.\\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-0{inset:calc(var(--spacing) * -0)}.-inset-1{inset:calc(var(--spacing) * -1)}.-inset-2{inset:calc(var(--spacing) * -2)}.-inset-3{inset:calc(var(--spacing) * -3)}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-x-4{inset-inline:calc(var(--spacing) * 4)}.inset-x-px{inset-inline:1px}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-2{top:calc(var(--spacing) * -2)}.-top-3{top:calc(var(--spacing) * -3)}.-top-px{top:-1px}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-6{top:calc(var(--spacing) * 6)}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-full{right:100%}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\\[9999\\]{z-index:9999}.order-last{order:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-full{grid-column:1 / -1}.col-start-1{grid-column-start:1}.row-start-1{grid-row-start:1}.container{width:100%}@media(width>=40rem){.container{max-width:40rem}}@media(width>=48rem){.container{max-width:48rem}}@media(width>=64rem){.container{max-width:64rem}}@media(width>=80rem){.container{max-width:80rem}}@media(width>=96rem){.container{max-width:96rem}}.\\!m-0{margin:calc(var(--spacing) * 0)!important}.-m-0{margin:calc(var(--spacing) * -0)}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:calc(var(--spacing) * 0)}.m-1{margin:calc(var(--spacing) * 1)}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.m-4{margin:calc(var(--spacing) * 4)}.m-5{margin:calc(var(--spacing) * 5)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0{margin-inline:calc(var(--spacing) * 0)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.mx-px{margin-inline:1px}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-2{margin-block:calc(var(--spacing) * -2)}.-my-3{margin-block:calc(var(--spacing) * -3)}.my-0{margin-block:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-20{margin-block:calc(var(--spacing) * 20)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-12{margin-top:calc(var(--spacing) * -12)}.-mt-24{margin-top:calc(var(--spacing) * -24)}.-mt-32{margin-top:calc(var(--spacing) * -32)}.-mt-px{margin-top:-1px}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-20{margin-top:calc(var(--spacing) * 20)}.mt-30{margin-top:calc(var(--spacing) * 30)}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.-mr-0{margin-right:calc(var(--spacing) * -0)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.-mr-2{margin-right:calc(var(--spacing) * -2)}.-mr-px{margin-right:-1px}.mr-0{margin-right:calc(var(--spacing) * 0)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-6{margin-right:calc(var(--spacing) * 6)}.mr-auto{margin-right:auto}.\\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.-mb-8{margin-bottom:calc(var(--spacing) * -8)}.-mb-px{margin-bottom:-1px}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.mb-30{margin-bottom:calc(var(--spacing) * 30)}.-ml-0{margin-left:calc(var(--spacing) * -0)}.-ml-0\\.5{margin-left:calc(var(--spacing) * -.5)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-3{margin-left:calc(var(--spacing) * -3)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.-ml-8{margin-left:calc(var(--spacing) * -8)}.-ml-px{margin-left:-1px}.ml-0{margin-left:calc(var(--spacing) * 0)}.ml-0\\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-6{margin-left:calc(var(--spacing) * 6)}.ml-8{margin-left:calc(var(--spacing) * 8)}.ml-10{margin-left:calc(var(--spacing) * 10)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-0{width:calc(var(--spacing) * 0);height:calc(var(--spacing) * 0)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.size-32{width:calc(var(--spacing) * 32);height:calc(var(--spacing) * 32)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.\\!h-3\\.5{height:calc(var(--spacing) * 3.5)!important}.\\!h-4{height:calc(var(--spacing) * 4)!important}.\\!h-9{height:calc(var(--spacing) * 9)!important}.\\!h-12{height:calc(var(--spacing) * 12)!important}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-32{height:calc(var(--spacing) * 32)}.h-100{height:calc(var(--spacing) * 100)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-12{max-height:calc(var(--spacing) * 12)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\\[65vh\\]{max-height:65vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[650px\\]{max-height:650px}.max-h-none{max-height:none}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\\[400px\\]{min-height:400px}.min-h-\\[calc\\(100vh-64px\\)\\]{min-height:calc(100vh - 64px)}.min-h-full{min-height:100%}.\\!w-3\\.5{width:calc(var(--spacing) * 3.5)!important}.\\!w-4{width:calc(var(--spacing) * 4)!important}.\\!w-9{width:calc(var(--spacing) * 9)!important}.\\!w-12{width:calc(var(--spacing) * 12)!important}.\\!w-\\[56px\\]{width:56px!important}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\\/2{width:50%}.w-3{width:calc(var(--spacing) * 3)}.w-3\\/4{width:75%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-85{width:calc(var(--spacing) * 85)}.w-100{width:calc(var(--spacing) * 100)}.w-\\[85\\%\\]{width:85%}.w-\\[180px\\]{width:180px}.w-\\[200px\\]{width:200px}.w-\\[246px\\]{width:246px}.w-\\[250px\\]{width:250px}.w-\\[350px\\]{width:350px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.max-w-0{max-width:calc(var(--spacing) * 0)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[480px\\]{max-width:480px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.\\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[150px\\]{min-width:150px}.min-w-\\[720px\\]{min-width:720px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-auto{flex:auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x: calc(var(--spacing) * 0);--tw-border-spacing-y: calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-top{transform-origin:top}.origin-top-right{transform-origin:100% 0}.-translate-x-1{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[indeterminate_1\\.5s_ease-in-out_infinite\\]{animation:indeterminate 1.5s ease-in-out infinite}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.\\[appearance\\:textfield\\]{appearance:textfield}.appearance-none{appearance:none}.\\[grid-template-columns\\:repeat\\(auto-fill\\,minmax\\(168px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[1fr_auto_auto\\]{grid-template-columns:1fr auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0{column-gap:calc(var(--spacing) * 0)}.gap-x-1{column-gap:calc(var(--spacing) * 1)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}.gap-y-10{row-gap:calc(var(--spacing) * 10)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\\[var\\(--color-common-border\\)\\]>:not(:last-child)){border-color:var(--color-common-border)}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-tl-lg{border-top-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.rounded-tr-lg{border-top-right-radius:var(--radius-lg)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-br-lg{border-bottom-right-radius:var(--radius-lg)}.rounded-bl-lg{border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-700{border-color:var(--color-gray-700)}.border-indigo-400{border-color:var(--color-indigo-400)}.border-indigo-500{border-color:var(--color-indigo-500)}.border-indigo-600{border-color:var(--color-indigo-600)}.border-indigo-800{border-color:var(--color-indigo-800)}.border-red-500{border-color:var(--color-red-500)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-white{border-top-color:var(--color-white)}.border-b-white{border-bottom-color:var(--color-white)}.\\[background-color\\:var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.\\[background-color\\:var\\(--color-otp-primary-light\\)\\]{background-color:var(--color-otp-primary-light)}.\\[background-color\\:var\\(--color-whatsApp-primary-light\\)\\]{background-color:var(--color-whatsApp-primary-light)}.bg-\\[var\\(--color-common-bg-light\\)\\]{background-color:var(--color-common-bg-light)}.bg-\\[var\\(--color-common-chip-bg\\)\\]{background-color:var(--color-common-chip-bg)}.bg-\\[var\\(--color-common-hover\\)\\]{background-color:var(--color-common-hover)}.bg-\\[var\\(--color-common-primary-light\\,\\#e8f5e9\\)\\]{background-color:var(--color-common-primary-light,#e8f5e9)}.bg-black{background-color:var(--color-black)}.bg-black\\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-current{background-color:currentcolor}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-900{background-color:var(--color-green-900)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-400{background-color:var(--color-indigo-400)}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-indigo-700{background-color:var(--color-indigo-700)}.bg-indigo-800{background-color:var(--color-indigo-800)}.bg-indigo-900{background-color:var(--color-indigo-900)}.bg-indigo-950{background-color:var(--color-indigo-950)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-pink-400{background-color:var(--color-pink-400)}.bg-pink-500{background-color:var(--color-pink-500)}.bg-pink-700{background-color:var(--color-pink-700)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-700{background-color:var(--color-purple-700)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-900{background-color:var(--color-red-900)}.bg-red-900\\/20{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-red-900\\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-400{background-color:var(--color-rose-400)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-500{background-color:var(--color-sky-500)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-100{background-color:var(--color-teal-100)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-gray-300{fill:var(--color-gray-300)}.fill-gray-400{fill:var(--color-gray-400)}.fill-green-400{fill:var(--color-green-400)}.fill-indigo-400{fill:var(--color-indigo-400)}.fill-indigo-500{fill:var(--color-indigo-500)}.fill-pink-400{fill:var(--color-pink-400)}.fill-purple-400{fill:var(--color-purple-400)}.fill-red-400{fill:var(--color-red-400)}.fill-red-500{fill:var(--color-red-500)}.fill-white{fill:var(--color-white)}.fill-yellow-400{fill:var(--color-yellow-400)}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-gray-400{stroke:var(--color-gray-400)}.stroke-green-400{stroke:var(--color-green-400)}.stroke-indigo-400{stroke:var(--color-indigo-400)}.stroke-pink-400{stroke:var(--color-pink-400)}.stroke-red-400{stroke:var(--color-red-400)}.stroke-violet-400{stroke:var(--color-violet-400)}.stroke-white{stroke:var(--color-white)}.stroke-yellow-300{stroke:var(--color-yellow-300)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\\!p-0{padding:calc(var(--spacing) * 0)!important}.\\!p-2{padding:calc(var(--spacing) * 2)!important}.\\!p-3{padding:calc(var(--spacing) * 3)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-12{padding-inline:calc(var(--spacing) * 12)}.px-px{padding-inline:1px}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.pb-px{padding-bottom:1px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.pl-12{padding-left:calc(var(--spacing) * 12)}.\\!text-right{text-align:right!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\\!text-4xl{font-size:var(--text-4xl)!important;line-height:var(--tw-leading, var(--text-4xl--line-height))!important}.\\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading, var(--text-base--line-height))!important}.\\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading, var(--text-sm--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\\!text-\\[48px\\]{font-size:48px!important}.text-\\[10px\\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight: var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking: var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking: var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-nowrap{text-wrap:nowrap}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.\\[color\\:var\\(--color-common-icon\\)\\]{color:var(--color-common-icon)}.\\[color\\:var\\(--color-common-text-2\\)\\]{color:var(--color-common-text-2)}.\\[color\\:var\\(--color-link-color\\)\\]{color:var(--color-link-color)}.\\[color\\:var\\(--color-otp-primary\\)\\]{color:var(--color-otp-primary)}.\\[color\\:var\\(--color-whatsApp-primary\\)\\]{color:var(--color-whatsApp-primary)}.text-\\[var\\(--color-common-primary\\)\\]{color:var(--color-common-primary)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-200{color:var(--color-gray-200)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-200{color:var(--color-green-200)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-100{color:var(--color-indigo-100)}.text-indigo-200{color:var(--color-indigo-200)}.text-indigo-300{color:var(--color-indigo-300)}.text-indigo-400{color:var(--color-indigo-400)}.text-indigo-500{color:var(--color-indigo-500)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-700{color:var(--color-orange-700)}.text-pink-400{color:var(--color-pink-400)}.text-purple-400{color:var(--color-purple-400)}.text-purple-700{color:var(--color-purple-700)}.text-red-200{color:var(--color-red-200)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-400{color:var(--color-rose-400)}.text-rose-700{color:var(--color-rose-700)}.text-sky-400{color:var(--color-sky-400)}.text-teal-400{color:var(--color-teal-400)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-white{color:var(--color-white)}.text-yellow-100{color:var(--color-yellow-100)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-30{opacity:30%}.opacity-40{opacity:40%}.opacity-50{opacity:50%}.opacity-60{opacity:60%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-4{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-8{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(8px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring-1{--tw-inset-ring-shadow: inset 0 0 0 1px var(--tw-inset-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-gray-200{--tw-ring-color: var(--color-gray-200)}.ring-gray-300{--tw-ring-color: var(--color-gray-300)}.ring-gray-700{--tw-ring-color: var(--color-gray-700)}.ring-gray-900{--tw-ring-color: var(--color-gray-900)}.ring-gray-900\\/5{--tw-ring-color: color-mix(in srgb, oklch(21% .034 264.665) 5%, transparent)}@supports (color: color-mix(in lab,red,red)){.ring-gray-900\\/5{--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent)}}.ring-green-500{--tw-ring-color: var(--color-green-500)}.ring-indigo-300{--tw-ring-color: var(--color-indigo-300)}.ring-indigo-500{--tw-ring-color: var(--color-indigo-500)}.ring-red-500{--tw-ring-color: var(--color-red-500)}.ring-white{--tw-ring-color: var(--color-white)}.inset-ring-blue-400{--tw-inset-ring-color: var(--color-blue-400)}.inset-ring-gray-400{--tw-inset-ring-color: var(--color-gray-400)}.inset-ring-gray-700{--tw-inset-ring-color: var(--color-gray-700)}.inset-ring-green-500{--tw-inset-ring-color: var(--color-green-500)}.inset-ring-indigo-400{--tw-inset-ring-color: var(--color-indigo-400)}.inset-ring-pink-400{--tw-inset-ring-color: var(--color-pink-400)}.inset-ring-purple-400{--tw-inset-ring-color: var(--color-purple-400)}.inset-ring-red-400{--tw-inset-ring-color: var(--color-red-400)}.inset-ring-white{--tw-inset-ring-color: var(--color-white)}.inset-ring-yellow-400{--tw-inset-ring-color: var(--color-yellow-400)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.outline-2{outline-style:var(--tw-outline-style);outline-width:2px}.-outline-offset-1{outline-offset:-1px}.outline-offset-2{outline-offset:2px}.outline-black{outline-color:var(--color-black)}.outline-blue-500{outline-color:var(--color-blue-500)}.outline-gray-600{outline-color:var(--color-gray-600)}.outline-gray-700{outline-color:var(--color-gray-700)}.outline-gray-900{outline-color:var(--color-gray-900)}.outline-green-500{outline-color:var(--color-green-500)}.outline-indigo-400{outline-color:var(--color-indigo-400)}.outline-indigo-500{outline-color:var(--color-indigo-500)}.outline-red-500{outline-color:var(--color-red-500)}.outline-white{outline-color:var(--color-white)}.outline-yellow-500{outline-color:var(--color-yellow-500)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-discrete{transition-behavior:allow-discrete}.duration-100{--tw-duration: .1s;transition-duration:.1s}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-500{--tw-duration: .5s;transition-duration:.5s}.ease-in{--tw-ease: var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease: var(--ease-out);transition-timing-function:var(--ease-out)}.forced-color-adjust-none{forced-color-adjust:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset: inset}.placeholder\\:text-gray-400::placeholder{color:var(--color-gray-400)}.read-only\\:cursor-default:read-only{cursor:default}.read-only\\:opacity-60:read-only{opacity:60%}@media(hover:hover){.hover\\:border-gray-200:hover{border-color:var(--color-gray-200)}}@media(hover:hover){.hover\\:border-gray-300:hover{border-color:var(--color-gray-300)}}@media(hover:hover){.hover\\:bg-\\[var\\(--color-common-hover\\)\\]:hover{background-color:var(--color-common-hover)}}@media(hover:hover){.hover\\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\\:bg-gray-50:hover{background-color:var(--color-gray-50)}}@media(hover:hover){.hover\\:bg-indigo-500:hover{background-color:var(--color-indigo-500)}}@media(hover:hover){.hover\\:bg-red-500:hover{background-color:var(--color-red-500)}}@media(hover:hover){.hover\\:text-gray-500:hover{color:var(--color-gray-500)}}@media(hover:hover){.hover\\:text-gray-600:hover{color:var(--color-gray-600)}}@media(hover:hover){.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media(hover:hover){.hover\\:text-indigo-600:hover{color:var(--color-indigo-600)}}@media(hover:hover){.hover\\:text-white:hover{color:var(--color-white)}}@media(hover:hover){.hover\\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\\:shadow-sm:hover{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-indigo-500:focus{--tw-ring-color: var(--color-indigo-500)}.focus\\:outline-2:focus{outline-style:var(--tw-outline-style);outline-width:2px}.focus\\:outline-offset-2:focus{outline-offset:2px}.focus\\:outline-indigo-500:focus{outline-color:var(--color-indigo-500)}.focus\\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-indigo-500:focus-visible{outline-color:var(--color-indigo-500)}.focus-visible\\:outline-indigo-600:focus-visible{outline-color:var(--color-indigo-600)}.focus-visible\\:outline-red-500:focus-visible{outline-color:var(--color-red-500)}.active\\:bg-indigo-700:active{background-color:var(--color-indigo-700)}.active\\:bg-red-700:active{background-color:var(--color-red-700)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:50%}@media(width<80rem){.max-xl\\:w-full{width:100%}}@media(width<80rem){.max-xl\\:flex-col{flex-direction:column}}@media(width<64rem){.max-lg\\:w-full{width:100%}}@media(width<64rem){.max-lg\\:max-w-full{max-width:100%}}@media(width<64rem){.max-lg\\:flex-col{flex-direction:column}}@media(width<48rem){.max-md\\:hidden{display:none}}@media(width<48rem){.max-md\\:w-full{width:100%}}@media(width<48rem){.max-md\\:flex-col{flex-direction:column}}@media(width>=40rem){.sm\\:inset-x-auto{inset-inline:auto}}@media(width>=40rem){.sm\\:left-1\\/2{left:50%}}@media(width>=40rem){.sm\\:col-span-2{grid-column:span 2 / span 2}}@media(width>=40rem){.sm\\:inline-flex{display:inline-flex}}@media(width>=40rem){.sm\\:w-full{width:100%}}@media(width>=40rem){.sm\\:max-w-md{max-width:var(--container-md)}}@media(width>=40rem){.sm\\:max-w-sm{max-width:var(--container-sm)}}@media(width>=40rem){.sm\\:-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}}@media(width>=40rem){.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=40rem){.sm\\:flex-row{flex-direction:row}}@media(width>=40rem){.sm\\:items-center{align-items:center}}@media(width>=40rem){.sm\\:justify-between{justify-content:space-between}}@media(width>=40rem){.sm\\:gap-3{gap:calc(var(--spacing) * 3)}}@media(width>=40rem){.sm\\:p-6{padding:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(width>=40rem){.sm\\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:block{display:block}}@media(width>=64rem){.lg\\:grid{display:grid}}@media(width>=64rem){.lg\\:hidden{display:none}}@media(width>=64rem){.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(width>=64rem){.lg\\:flex-row{flex-direction:row}}@media(width>=64rem){:where(.lg\\:divide-x>:not(:last-child)){--tw-divide-x-reverse: 0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}}@media(width>=64rem){:where(.lg\\:divide-y-0>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(0px * var(--tw-divide-y-reverse));border-bottom-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)))}}@media(width>=64rem){.lg\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0px}}@media(width>=64rem){.lg\\:px-4{padding-inline:calc(var(--spacing) * 4)}}@media(width>=64rem){.lg\\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(width>=64rem){.lg\\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media(width>=64rem){.lg\\:pt-0{padding-top:calc(var(--spacing) * 0)}}@media(width>=64rem){.lg\\:text-left{text-align:left}}@media(prefers-color-scheme:dark){:where(.dark\\:divide-gray-800>:not(:last-child)){border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-600{border-color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-700{border-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:border-gray-800{border-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:border-indigo-400{border-color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:bg-black\\/70{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-black\\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-700{background-color:var(--color-gray-700)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-800{background-color:var(--color-gray-800)}}@media(prefers-color-scheme:dark){.dark\\:bg-gray-900{background-color:var(--color-gray-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-green-900\\/40{background-color:color-mix(in srgb,oklch(39.3% .095 152.535) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-green-900\\/40{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900{background-color:var(--color-indigo-900)}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/20{background-color:color-mix(in oklab,var(--color-indigo-900) 20%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/30{background-color:color-mix(in oklab,var(--color-indigo-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/40{background-color:color-mix(in oklab,var(--color-indigo-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in srgb,oklch(35.9% .144 278.697) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-indigo-900\\/50{background-color:color-mix(in oklab,var(--color-indigo-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-orange-900\\/40{background-color:color-mix(in srgb,oklch(40.8% .123 38.172) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-orange-900\\/40{background-color:color-mix(in oklab,var(--color-orange-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-purple-900\\/40{background-color:color-mix(in srgb,oklch(38.1% .176 304.987) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-purple-900\\/40{background-color:color-mix(in oklab,var(--color-purple-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-red-900\\/30{background-color:color-mix(in srgb,oklch(39.6% .141 25.723) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-red-900\\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-rose-900\\/40{background-color:color-mix(in srgb,oklch(41% .159 10.272) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-rose-900\\/40{background-color:color-mix(in oklab,var(--color-rose-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/40{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/40{background-color:color-mix(in oklab,var(--color-teal-900) 40%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-teal-900\\/50{background-color:color-mix(in srgb,oklch(38.6% .063 188.416) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:bg-teal-900\\/50{background-color:color-mix(in oklab,var(--color-teal-900) 50%,transparent)}}}@media(prefers-color-scheme:dark){.dark\\:bg-transparent{background-color:transparent}}@media(prefers-color-scheme:dark){.dark\\:text-gray-100{color:var(--color-gray-100)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-300{color:var(--color-gray-300)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-400{color:var(--color-gray-400)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-500{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){.dark\\:text-gray-600{color:var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:text-green-300{color:var(--color-green-300)}}@media(prefers-color-scheme:dark){.dark\\:text-green-400{color:var(--color-green-400)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-300{color:var(--color-indigo-300)}}@media(prefers-color-scheme:dark){.dark\\:text-indigo-400{color:var(--color-indigo-400)}}@media(prefers-color-scheme:dark){.dark\\:text-orange-300{color:var(--color-orange-300)}}@media(prefers-color-scheme:dark){.dark\\:text-purple-300{color:var(--color-purple-300)}}@media(prefers-color-scheme:dark){.dark\\:text-red-400{color:var(--color-red-400)}}@media(prefers-color-scheme:dark){.dark\\:text-rose-300{color:var(--color-rose-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-300{color:var(--color-teal-300)}}@media(prefers-color-scheme:dark){.dark\\:text-teal-400{color:var(--color-teal-400)}}@media(prefers-color-scheme:dark){.dark\\:text-white{color:var(--color-white)}}@media(prefers-color-scheme:dark){.dark\\:ring-gray-600{--tw-ring-color: var(--color-gray-600)}}@media(prefers-color-scheme:dark){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:ring-white\\/10{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}}@media(prefers-color-scheme:dark){.dark\\:placeholder\\:text-gray-500::placeholder{color:var(--color-gray-500)}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:border-gray-500:hover{border-color:var(--color-gray-500)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-700:hover{background-color:var(--color-gray-700)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800:hover{background-color:var(--color-gray-800)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in srgb,oklch(27.8% .033 256.848) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark\\:hover\\:bg-gray-800\\/50:hover{background-color:color-mix(in oklab,var(--color-gray-800) 50%,transparent)}}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-200:hover{color:var(--color-gray-200)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-gray-300:hover{color:var(--color-gray-300)}}}@media(prefers-color-scheme:dark){@media(hover:hover){.dark\\:hover\\:text-indigo-400:hover{color:var(--color-indigo-400)}}}.\\[\\&\\:\\:-webkit-inner-spin-button\\]\\:appearance-none::-webkit-inner-spin-button{appearance:none}.\\[\\&\\:\\:-webkit-outer-spin-button\\]\\:appearance-none::-webkit-outer-spin-button{appearance:none}}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)){--mat-form-field-container-height: var(--custom-mat-form-field-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined{height:var(--mat-form-field-container-height)}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix:has(.mat-mdc-chip-set){padding-top:8px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mdc-text-field--outlined .mat-mdc-form-field-infix{--mat-form-field-container-vertical-padding: 10px;min-height:var(--mat-form-field-container-height);height:var(--mat-form-field-container-height);padding-top:14px!important;padding-bottom:14px!important}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:22px}mat-form-field.mat-mdc-form-field:not(.initial-height,.mat-mdc-paginator-page-size-select,:has(textarea)) .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(-27.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75))}mat-form-field.mat-mdc-form-field.no-padding .mat-mdc-form-field-subscript-wrapper{display:none}mat-paginator mat-form-field.mat-mdc-form-field{width:84px!important}@font-face{font-family:Inter;font-style:normal;font-weight:300;src:url("./media/Inter-Light.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:url("./media/Inter-Regular.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:url("./media/Inter-Medium.ttf") format("truetype")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:url("./media/Inter-Bold.ttf") format("truetype")}.table-scroll{overflow-x:auto;width:100%}.default-table{box-shadow:none;width:100%}.default-table:has(.mat-no-data-row){height:100%}.default-table .mat-mdc-header-row .mat-mdc-header-cell{font-weight:600;font-size:12px;color:var(--color-table-head)!important;border-bottom-color:var(--color-table-head-border)!important}.default-table .mat-mdc-row .mat-mdc-cell{border-bottom-color:var(--color-table-cell-border)!important}.default-table .mat-mdc-row.highlight{background-color:var(--color-common-bg-lighter)}.default-table .mat-mdc-row:hover:not(.mat-no-data-row){background:var(--color-common-silver)}.default-table .mat-mdc-row.last-child .mat-mdc-cell{border-bottom:0}.default-table .mat-mdc-row.hover-action .actions{opacity:0}@media(hover:hover){.default-table .mat-mdc-row.hover-action:hover .actions{opacity:1}}@media(hover:none){.default-table .mat-mdc-row.hover-action .actions{opacity:1}}@media screen and (max-width:768px){.default-table.responsive-table{display:block!important}.default-table.responsive-table tbody{display:block!important;width:100%}.default-table.responsive-table tr.mat-mdc-header-row{display:none!important}.default-table.responsive-table tr.mat-mdc-row{display:block!important;height:auto!important;border-radius:8px;margin-bottom:12px;border:1px solid var(--color-common-border);box-shadow:0 1px 4px #0000000f;padding:4px 0}.default-table.responsive-table tr.mat-mdc-no-data-row{display:block!important;background:transparent;border:none;box-shadow:none;margin-bottom:0;padding:0}.default-table.responsive-table td.mat-mdc-cell{display:flex!important;flex-direction:row;justify-content:space-between;align-items:center;min-height:40px;height:auto!important;width:100%;padding:8px 16px!important;border-bottom:1px solid var(--color-table-cell-border)!important;box-sizing:border-box;font-size:13px;word-break:break-word}.default-table.responsive-table td.mat-mdc-cell:before{content:attr(data-label);font-weight:600;font-size:11px;text-transform:uppercase;color:var(--color-table-head);letter-spacing:.04em;white-space:nowrap;flex-shrink:0;margin-right:12px}.default-table.responsive-table td.mat-mdc-cell:last-child{border-bottom:0!important}}.service-list.mat-mdc-list-base .mat-mdc-list-item .mdc-list-item__primary-text{display:flex;align-items:center;gap:8px}.mat-divider{border-top-color:var(--color-common-border)!important}.text-success{color:var(--color-common-green)!important}.text-danger{color:var(--mat-sys-error)!important}.text-primary{color:var(--mat-sys-primary)!important}.text-dark{color:var(--color-common-text)!important}.text-secondary{color:var(--color-common-dark)!important}.text-pending{color:var(--color-short-url-primary)}.text-grey{color:var(--color-common-grey)!important}.bg-gray{background-color:var(--color-common-bg)}.bg-light-grey{background-color:var(--color-common-graph-bg)!important}.w-break{word-break:break-word}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}pre a:link,pre a:visited,pre a:hover,pre a:active{color:var(--color-link-color)!important}.font-10{font-size:10px!important}.font-11{font-size:11px!important}.font-12{font-size:12px!important}.font-14{font-size:var(--font-size-common-14)!important}.font-20{font-size:var(--font-size-common-20)!important}.w-b-hyphens{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.overflow-dotted{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis}.box-shadow-none{box-shadow:none!important}.dark-theme .custom-datepicker .date-input .float-label{background:transparent!important}markdown pre{overflow:auto}markdown pre::-webkit-scrollbar{width:8px;height:8px}markdown pre::-webkit-scrollbar-track{background:#fff6;border-radius:4px}markdown pre::-webkit-scrollbar-thumb{background:#fff3}markdown pre::-webkit-scrollbar-thumb:hover{background:#fff3}.w-input{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input::placeholder{color:var(--color-gray-400)}.w-input:focus{border-color:var(--color-indigo-500)}.w-input:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input:focus{--tw-ring-color: var(--color-indigo-500)}.w-input:focus{--tw-outline-style: none;outline-style:none}.dark .w-input{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input::placeholder{color:var(--color-gray-500)}.w-input-sm{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-sm::placeholder{color:var(--color-gray-400)}.w-input-sm:focus{border-color:var(--color-indigo-500)}.w-input-sm:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-sm:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-sm:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-sm{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-sm::placeholder{color:var(--color-gray-500)}.w-input-icon-right{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-icon-right::placeholder{color:var(--color-gray-400)}.w-input-icon-right:focus{border-color:var(--color-indigo-500)}.w-input-icon-right:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-icon-right:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-icon-right:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-icon-right{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-icon-right::placeholder{color:var(--color-gray-500)}.w-input-search{display:block;width:100%;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 3);padding-left:calc(var(--spacing) * 10);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-input-search::placeholder{color:var(--color-gray-400)}.w-input-search:focus{border-color:var(--color-indigo-500)}.w-input-search:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-search:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-search:focus{--tw-outline-style: none;outline-style:none}.w-input-search::-webkit-search-cancel-button{cursor:pointer}.dark .w-input-search{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-input-search::placeholder{color:var(--color-gray-500)}.w-input-readonly{display:block;width:100%;cursor:not-allowed;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.w-input-readonly:read-only{cursor:default}.w-input-readonly:read-only{opacity:60%}.dark .w-input-readonly{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-gray-400)}.w-textarea{display:block;width:100%;resize:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-textarea::placeholder{color:var(--color-gray-400)}.w-textarea:focus{border-color:var(--color-indigo-500)}.w-textarea:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-textarea:focus{--tw-ring-color: var(--color-indigo-500)}.w-textarea:focus{--tw-outline-style: none;outline-style:none}.dark .w-textarea{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.dark .w-textarea::placeholder{color:var(--color-gray-500)}.w-select{display:block;width:100%;appearance:none;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding-block:calc(var(--spacing) * 2);padding-right:calc(var(--spacing) * 9);padding-left:calc(var(--spacing) * 3.5);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-900)}.w-select:focus{border-color:var(--color-indigo-500)}.w-select:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-select:focus{--tw-ring-color: var(--color-indigo-500)}.w-select:focus{--tw-outline-style: none;outline-style:none}.dark .w-select{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-input-otp{height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.w-input-otp:focus{border-color:var(--color-indigo-500)}.w-input-otp:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.w-input-otp:focus{--tw-ring-color: var(--color-indigo-500)}.w-input-otp:focus{--tw-outline-style: none;outline-style:none}.dark .w-input-otp{border-color:var(--color-gray-600);background-color:var(--color-gray-800);color:var(--color-white)}.w-label{margin-bottom:calc(var(--spacing) * 1.5);display:block;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-900)}.dark .w-label{color:var(--color-white)}.w-field-error{margin-top:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));color:var(--color-red-600)}.dark .w-field-error{color:var(--color-red-400)}.w-btn-primary{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary:hover{background-color:var(--color-indigo-500)}}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary:active{background-color:var(--color-indigo-700)}.w-btn-primary:disabled{cursor:not-allowed}.w-btn-primary:disabled{opacity:50%}.w-btn-primary-sm{display:inline-flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-lg);background-color:var(--color-indigo-600);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-primary-sm:hover{background-color:var(--color-indigo-500)}}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-primary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-primary-sm:focus-visible{outline-offset:2px}.w-btn-primary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-primary-sm:active{background-color:var(--color-indigo-700)}.w-btn-secondary{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary:hover{background-color:var(--color-gray-50)}}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary:disabled{cursor:not-allowed}.w-btn-secondary:disabled{opacity:50%}.dark .w-btn-secondary{background-color:var(--color-gray-800);color:var(--color-gray-300);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary:hover{background-color:var(--color-gray-700)}}.w-btn-secondary-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-700);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-secondary-sm:hover{background-color:var(--color-gray-50)}}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-secondary-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-secondary-sm:focus-visible{outline-color:var(--color-indigo-500)}.w-btn-secondary-sm:disabled{cursor:not-allowed}.w-btn-secondary-sm:disabled{opacity:40%}.dark .w-btn-secondary-sm{background-color:var(--color-gray-800);color:var(--color-gray-200);--tw-ring-color: var(--color-gray-600)}@media(hover:hover){.dark .w-btn-secondary-sm:hover{background-color:var(--color-gray-700)}}.w-btn-danger{cursor:pointer;border-radius:var(--radius-lg);background-color:var(--color-red-600);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-danger:hover{background-color:var(--color-red-500)}}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger:focus-visible{outline-color:var(--color-red-500)}.w-btn-danger:active{background-color:var(--color-red-700)}.w-btn-danger-sm{flex-shrink:0;cursor:pointer;border-radius:var(--radius-md);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-red-600);--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: var(--color-gray-300);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s;--tw-ring-inset: inset}@media(hover:hover){.w-btn-danger-sm:hover{background-color:var(--color-red-50)}}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-danger-sm:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-danger-sm:focus-visible{outline-color:var(--color-red-500)}.dark .w-btn-danger-sm{background-color:var(--color-gray-800);color:var(--color-red-400);--tw-ring-color: var(--color-gray-600)}.dark .w-btn-danger-sm:hover{background-color:#7f1d1d33}.w-btn-close{margin:calc(var(--spacing) * -1);cursor:pointer;border-radius:var(--radius-md);padding:calc(var(--spacing) * 1);color:var(--color-gray-400);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-btn-close:hover{color:var(--color-gray-500)}}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.w-btn-close:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.w-btn-close:focus-visible{outline-color:var(--color-indigo-500)}.dark .w-btn-close{color:var(--color-gray-500)}@media(hover:hover){.dark .w-btn-close:hover{color:var(--color-gray-300)}}.w-spinner{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);animation:var(--animate-spin)}.w-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white)}.dark .w-card{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-card-section{overflow:hidden;border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark .w-card-section{border-color:var(--color-gray-700);background-color:var(--color-gray-900)}.w-dialog-backdrop{position:fixed;inset:calc(var(--spacing) * 0);background-color:color-mix(in srgb,#000 50%,transparent);--tw-backdrop-blur: blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);z-index:2147483646}@supports (color: color-mix(in lab,red,red)){.w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.dark .w-dialog-backdrop{background-color:color-mix(in srgb,#000 70%,transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-backdrop{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.w-dialog-panel{position:fixed;top:50%;left:50%;display:flex;max-height:85vh;--tw-translate-x: -50% ;--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y);flex-direction:column;border-radius:var(--radius-xl);background-color:var(--color-white);--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / .25));--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color: color-mix(in oklab, var(--color-gray-900) 5%, transparent);z-index:2147483647}.dark .w-dialog-panel{background-color:var(--color-gray-900);--tw-ring-color: color-mix(in srgb, #fff 10%, transparent)}@supports (color: color-mix(in lab,red,red)){.dark .w-dialog-panel{--tw-ring-color: color-mix(in oklab, var(--color-white) 10%, transparent)}}.w-dialog-header{display:flex;align-items:center;justify-content:space-between;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-header{border-color:var(--color-gray-700)}.w-dialog-title{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-gray-900)}.dark .w-dialog-title{color:var(--color-white)}.w-dialog-body{min-height:calc(var(--spacing) * 0);width:100%;flex:1;overflow-y:auto;padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 5)}.fp-dialog-content>authorization button[aria-label=Close],.fp-dialog-content>authorization>send-otp-center button[aria-label=Close]{display:none!important}.fp-dialog-content>authorization h2,.fp-dialog-content>authorization>send-otp-center h2{display:none!important}.w-dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:calc(var(--spacing) * 3);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 4)}.dark .w-dialog-footer{border-color:var(--color-gray-700)}.w-section-title{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height));--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold);color:var(--color-gray-900)}.dark .w-section-title{color:var(--color-white)}.w-section-subtitle{margin-top:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));color:var(--color-gray-500)}.dark .w-section-subtitle{color:var(--color-gray-400)}.w-badge{display:inline-flex;align-items:center;border-radius:var(--radius-md);background-color:var(--color-gray-100);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-gray-600)}.dark .w-badge{background-color:var(--color-gray-700);color:var(--color-gray-300)}.w-badge-green{display:none;align-items:center;border-radius:var(--radius-md);background-color:var(--color-green-50);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-green-700)}@media(width>=40rem){.w-badge-green{display:inline-flex}}.dark .w-badge-green{color:var(--color-green-400);background-color:#14532d4d}.w-divider{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-100)}.dark .w-divider{border-color:var(--color-gray-800)}.w-avatar{display:flex;width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10);flex:none;align-items:center;justify-content:center;border-radius:calc(infinity * 1px);background-color:var(--color-indigo-100);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);color:var(--color-indigo-700);-webkit-user-select:none;user-select:none}.dark .w-avatar{color:var(--color-indigo-300);background-color:#312e8199}.w-icon-box{display:flex;width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8);align-items:center;justify-content:center;border-radius:var(--radius-lg);background-color:var(--color-indigo-100)}.dark .w-icon-box{background-color:#312e8180}.w-icon-box svg{color:var(--color-indigo-600)}.dark .w-icon-box svg{color:var(--color-indigo-400)}.w-link{cursor:pointer;font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-indigo-600);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}@media(hover:hover){.w-link:hover{text-decoration-line:underline}}.w-link:disabled{cursor:not-allowed}.w-link:disabled{opacity:50%}.dark .w-link{color:var(--color-indigo-400)}.w-nav-tab{display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:2px;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-nav-item{display:flex;width:100%;cursor:pointer;align-items:center;column-gap:calc(var(--spacing) * 3);border-radius:var(--radius-md);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:left;font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height));--tw-leading: calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .15s;transition-duration:.15s}.w-checkbox-group{max-height:calc(var(--spacing) * 44);overflow-y:auto;border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-gray-50)}:where(.w-checkbox-group>:not(:last-child)){--tw-divide-y-reverse: 0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-200)}.dark .w-checkbox-group{border-color:var(--color-gray-700);background-color:var(--color-gray-800)}:where(.dark .w-checkbox-group>:not(:last-child)){border-color:var(--color-gray-700)}.w-checkbox-row{display:flex;cursor:pointer;align-items:center;gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 3.5);padding-block:calc(var(--spacing) * 2.5)}@media(hover:hover){.w-checkbox-row:hover{background-color:var(--color-white)}}@media(hover:hover){.dark .w-checkbox-row:hover{background-color:var(--color-gray-700)}}.w-checkbox{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);border-radius:.25rem;border-color:var(--color-gray-300);color:var(--color-indigo-600)}.w-checkbox:focus{--tw-ring-color: var(--color-indigo-500)}.dark .w-checkbox{border-color:var(--color-gray-500)}.w-search-icon{pointer-events:none;position:absolute;inset-block:calc(var(--spacing) * 0);left:calc(var(--spacing) * 3);height:100%;width:calc(var(--spacing) * 4);color:var(--color-gray-400)}.dark .w-search-icon{color:var(--color-gray-500)}.w-micro-label{margin-bottom:calc(var(--spacing) * .5);font-size:10px;--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-gray-400);text-transform:uppercase}.dark .w-micro-label{color:var(--color-gray-500)}.iti{position:relative;display:inline-block}.iti *{box-sizing:border-box;-moz-box-sizing:border-box}.iti__hide{display:none}.iti__v-hide{visibility:hidden}.iti input,.iti input[type=text],.iti input[type=tel]{position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;padding-right:36px;margin-right:0}.iti__flag-container{position:absolute;top:0;bottom:0;right:0;padding:1px}.iti__selected-flag{z-index:1;position:relative;display:flex;align-items:center;height:100%;padding:0 6px 0 8px}.iti__arrow{margin-left:6px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.iti__arrow--up{border-top:none;border-bottom:4px solid #555}.iti__country-list{z-index:2;list-style:none;text-align:left;padding:0;margin:0 0 0 -1px;box-shadow:1px 1px 4px #0003;background-color:#fff;border:1px solid #ccc;white-space:nowrap;max-height:200px;overflow-y:scroll;-webkit-overflow-scrolling:touch}.iti__country-list--dropup{bottom:100%;margin-bottom:-1px;min-height:250px!important}@media(max-width:500px){.iti__country-list{white-space:normal}}.iti__flag-box{display:inline-block;width:20px}.iti__divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.iti__country{padding:5px 10px;outline:none}.iti__dial-code{color:#999}.iti__country.iti__highlight{background-color:#0000000d}.iti__flag-box,.iti__country-name,.iti__dial-code{vertical-align:middle}.iti__flag-box,.iti__country-name{margin-right:6px}.iti--allow-dropdown input,.iti--allow-dropdown input[type=text],.iti--allow-dropdown input[type=tel],.iti--separate-dial-code input,.iti--separate-dial-code input[type=text],.iti--separate-dial-code input[type=tel]{padding-right:6px;padding-left:52px;margin-left:0}.iti--allow-dropdown .iti__flag-container,.iti--separate-dial-code .iti__flag-container{right:auto;left:0}.iti--allow-dropdown .iti__flag-container:hover{cursor:pointer}.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#0000000d}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover{cursor:default}.iti--allow-dropdown input[disabled]+.iti__flag-container:hover .iti__selected-flag,.iti--allow-dropdown input[readonly]+.iti__flag-container:hover .iti__selected-flag{background-color:transparent}.iti--separate-dial-code .iti__selected-flag{background-color:#0000000d}.iti--separate-dial-code .iti__selected-dial-code{margin-left:6px}.iti--container{position:absolute;top:-1000px;left:-1000px;z-index:1060;padding:1px}.iti--container:hover{cursor:pointer}.iti-mobile .iti--container{inset:30px;position:fixed}.iti-mobile .iti__country-list{max-height:100%;width:calc(100vw - 60px)}.iti-mobile .iti__country{padding:10px;line-height:1.5em}.iti__flag{width:20px}.iti__flag.iti__be{width:18px}.iti__flag.iti__ch{width:15px}.iti__flag.iti__mc{width:19px}.iti__flag.iti__ne{width:18px}.iti__flag.iti__np{width:13px}.iti__flag.iti__va{width:15px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-size:5652px 15px}}.iti__flag.iti__ac{height:10px;background-position:0px 0px}.iti__flag.iti__ad{height:14px;background-position:-22px 0px}.iti__flag.iti__ae{height:10px;background-position:-44px 0px}.iti__flag.iti__af{height:14px;background-position:-66px 0px}.iti__flag.iti__ag{height:14px;background-position:-88px 0px}.iti__flag.iti__ai{height:10px;background-position:-110px 0px}.iti__flag.iti__al{height:15px;background-position:-132px 0px}.iti__flag.iti__am{height:10px;background-position:-154px 0px}.iti__flag.iti__ao{height:14px;background-position:-176px 0px}.iti__flag.iti__aq{height:14px;background-position:-198px 0px}.iti__flag.iti__ar{height:13px;background-position:-220px 0px}.iti__flag.iti__as{height:10px;background-position:-242px 0px}.iti__flag.iti__at{height:14px;background-position:-264px 0px}.iti__flag.iti__au{height:10px;background-position:-286px 0px}.iti__flag.iti__aw{height:14px;background-position:-308px 0px}.iti__flag.iti__ax{height:13px;background-position:-330px 0px}.iti__flag.iti__az{height:10px;background-position:-352px 0px}.iti__flag.iti__ba{height:10px;background-position:-374px 0px}.iti__flag.iti__bb{height:14px;background-position:-396px 0px}.iti__flag.iti__bd{height:12px;background-position:-418px 0px}.iti__flag.iti__be{height:15px;background-position:-440px 0px}.iti__flag.iti__bf{height:14px;background-position:-460px 0px}.iti__flag.iti__bg{height:12px;background-position:-482px 0px}.iti__flag.iti__bh{height:12px;background-position:-504px 0px}.iti__flag.iti__bi{height:12px;background-position:-526px 0px}.iti__flag.iti__bj{height:14px;background-position:-548px 0px}.iti__flag.iti__bl{height:14px;background-position:-570px 0px}.iti__flag.iti__bm{height:10px;background-position:-592px 0px}.iti__flag.iti__bn{height:10px;background-position:-614px 0px}.iti__flag.iti__bo{height:14px;background-position:-636px 0px}.iti__flag.iti__bq{height:14px;background-position:-658px 0px}.iti__flag.iti__br{height:14px;background-position:-680px 0px}.iti__flag.iti__bs{height:10px;background-position:-702px 0px}.iti__flag.iti__bt{height:14px;background-position:-724px 0px}.iti__flag.iti__bv{height:15px;background-position:-746px 0px}.iti__flag.iti__bw{height:14px;background-position:-768px 0px}.iti__flag.iti__by{height:10px;background-position:-790px 0px}.iti__flag.iti__bz{height:14px;background-position:-812px 0px}.iti__flag.iti__ca{height:10px;background-position:-834px 0px}.iti__flag.iti__cc{height:10px;background-position:-856px 0px}.iti__flag.iti__cd{height:15px;background-position:-878px 0px}.iti__flag.iti__cf{height:14px;background-position:-900px 0px}.iti__flag.iti__cg{height:14px;background-position:-922px 0px}.iti__flag.iti__ch{height:15px;background-position:-944px 0px}.iti__flag.iti__ci{height:14px;background-position:-961px 0px}.iti__flag.iti__ck{height:10px;background-position:-983px 0px}.iti__flag.iti__cl{height:14px;background-position:-1005px 0px}.iti__flag.iti__cm{height:14px;background-position:-1027px 0px}.iti__flag.iti__cn{height:14px;background-position:-1049px 0px}.iti__flag.iti__co{height:14px;background-position:-1071px 0px}.iti__flag.iti__cp{height:14px;background-position:-1093px 0px}.iti__flag.iti__cr{height:12px;background-position:-1115px 0px}.iti__flag.iti__cu{height:10px;background-position:-1137px 0px}.iti__flag.iti__cv{height:12px;background-position:-1159px 0px}.iti__flag.iti__cw{height:14px;background-position:-1181px 0px}.iti__flag.iti__cx{height:10px;background-position:-1203px 0px}.iti__flag.iti__cy{height:14px;background-position:-1225px 0px}.iti__flag.iti__cz{height:14px;background-position:-1247px 0px}.iti__flag.iti__de{height:12px;background-position:-1269px 0px}.iti__flag.iti__dg{height:10px;background-position:-1291px 0px}.iti__flag.iti__dj{height:14px;background-position:-1313px 0px}.iti__flag.iti__dk{height:15px;background-position:-1335px 0px}.iti__flag.iti__dm{height:10px;background-position:-1357px 0px}.iti__flag.iti__do{height:14px;background-position:-1379px 0px}.iti__flag.iti__dz{height:14px;background-position:-1401px 0px}.iti__flag.iti__ea{height:14px;background-position:-1423px 0px}.iti__flag.iti__ec{height:14px;background-position:-1445px 0px}.iti__flag.iti__ee{height:13px;background-position:-1467px 0px}.iti__flag.iti__eg{height:14px;background-position:-1489px 0px}.iti__flag.iti__eh{height:10px;background-position:-1511px 0px}.iti__flag.iti__er{height:10px;background-position:-1533px 0px}.iti__flag.iti__es{height:14px;background-position:-1555px 0px}.iti__flag.iti__et{height:10px;background-position:-1577px 0px}.iti__flag.iti__eu{height:14px;background-position:-1599px 0px}.iti__flag.iti__fi{height:12px;background-position:-1621px 0px}.iti__flag.iti__fj{height:10px;background-position:-1643px 0px}.iti__flag.iti__fk{height:10px;background-position:-1665px 0px}.iti__flag.iti__fm{height:11px;background-position:-1687px 0px}.iti__flag.iti__fo{height:15px;background-position:-1709px 0px}.iti__flag.iti__fr{height:14px;background-position:-1731px 0px}.iti__flag.iti__ga{height:15px;background-position:-1753px 0px}.iti__flag.iti__gb{height:10px;background-position:-1775px 0px}.iti__flag.iti__gd{height:12px;background-position:-1797px 0px}.iti__flag.iti__ge{height:14px;background-position:-1819px 0px}.iti__flag.iti__gf{height:14px;background-position:-1841px 0px}.iti__flag.iti__gg{height:14px;background-position:-1863px 0px}.iti__flag.iti__gh{height:14px;background-position:-1885px 0px}.iti__flag.iti__gi{height:10px;background-position:-1907px 0px}.iti__flag.iti__gl{height:14px;background-position:-1929px 0px}.iti__flag.iti__gm{height:14px;background-position:-1951px 0px}.iti__flag.iti__gn{height:14px;background-position:-1973px 0px}.iti__flag.iti__gp{height:14px;background-position:-1995px 0px}.iti__flag.iti__gq{height:14px;background-position:-2017px 0px}.iti__flag.iti__gr{height:14px;background-position:-2039px 0px}.iti__flag.iti__gs{height:10px;background-position:-2061px 0px}.iti__flag.iti__gt{height:13px;background-position:-2083px 0px}.iti__flag.iti__gu{height:11px;background-position:-2105px 0px}.iti__flag.iti__gw{height:10px;background-position:-2127px 0px}.iti__flag.iti__gy{height:12px;background-position:-2149px 0px}.iti__flag.iti__hk{height:14px;background-position:-2171px 0px}.iti__flag.iti__hm{height:10px;background-position:-2193px 0px}.iti__flag.iti__hn{height:10px;background-position:-2215px 0px}.iti__flag.iti__hr{height:10px;background-position:-2237px 0px}.iti__flag.iti__ht{height:12px;background-position:-2259px 0px}.iti__flag.iti__hu{height:10px;background-position:-2281px 0px}.iti__flag.iti__ic{height:14px;background-position:-2303px 0px}.iti__flag.iti__id{height:14px;background-position:-2325px 0px}.iti__flag.iti__ie{height:10px;background-position:-2347px 0px}.iti__flag.iti__il{height:15px;background-position:-2369px 0px}.iti__flag.iti__im{height:10px;background-position:-2391px 0px}.iti__flag.iti__in{height:14px;background-position:-2413px 0px}.iti__flag.iti__io{height:10px;background-position:-2435px 0px}.iti__flag.iti__iq{height:14px;background-position:-2457px 0px}.iti__flag.iti__ir{height:12px;background-position:-2479px 0px}.iti__flag.iti__is{height:15px;background-position:-2501px 0px}.iti__flag.iti__it{height:14px;background-position:-2523px 0px}.iti__flag.iti__je{height:12px;background-position:-2545px 0px}.iti__flag.iti__jm{height:10px;background-position:-2567px 0px}.iti__flag.iti__jo{height:10px;background-position:-2589px 0px}.iti__flag.iti__jp{height:14px;background-position:-2611px 0px}.iti__flag.iti__ke{height:14px;background-position:-2633px 0px}.iti__flag.iti__kg{height:12px;background-position:-2655px 0px}.iti__flag.iti__kh{height:13px;background-position:-2677px 0px}.iti__flag.iti__ki{height:10px;background-position:-2699px 0px}.iti__flag.iti__km{height:12px;background-position:-2721px 0px}.iti__flag.iti__kn{height:14px;background-position:-2743px 0px}.iti__flag.iti__kp{height:10px;background-position:-2765px 0px}.iti__flag.iti__kr{height:14px;background-position:-2787px 0px}.iti__flag.iti__kw{height:10px;background-position:-2809px 0px}.iti__flag.iti__ky{height:10px;background-position:-2831px 0px}.iti__flag.iti__kz{height:10px;background-position:-2853px 0px}.iti__flag.iti__la{height:14px;background-position:-2875px 0px}.iti__flag.iti__lb{height:14px;background-position:-2897px 0px}.iti__flag.iti__lc{height:10px;background-position:-2919px 0px}.iti__flag.iti__li{height:12px;background-position:-2941px 0px}.iti__flag.iti__lk{height:10px;background-position:-2963px 0px}.iti__flag.iti__lr{height:11px;background-position:-2985px 0px}.iti__flag.iti__ls{height:14px;background-position:-3007px 0px}.iti__flag.iti__lt{height:12px;background-position:-3029px 0px}.iti__flag.iti__lu{height:12px;background-position:-3051px 0px}.iti__flag.iti__lv{height:10px;background-position:-3073px 0px}.iti__flag.iti__ly{height:10px;background-position:-3095px 0px}.iti__flag.iti__ma{height:14px;background-position:-3117px 0px}.iti__flag.iti__mc{height:15px;background-position:-3139px 0px}.iti__flag.iti__md{height:10px;background-position:-3160px 0px}.iti__flag.iti__me{height:10px;background-position:-3182px 0px}.iti__flag.iti__mf{height:14px;background-position:-3204px 0px}.iti__flag.iti__mg{height:14px;background-position:-3226px 0px}.iti__flag.iti__mh{height:11px;background-position:-3248px 0px}.iti__flag.iti__mk{height:10px;background-position:-3270px 0px}.iti__flag.iti__ml{height:14px;background-position:-3292px 0px}.iti__flag.iti__mm{height:14px;background-position:-3314px 0px}.iti__flag.iti__mn{height:10px;background-position:-3336px 0px}.iti__flag.iti__mo{height:14px;background-position:-3358px 0px}.iti__flag.iti__mp{height:10px;background-position:-3380px 0px}.iti__flag.iti__mq{height:14px;background-position:-3402px 0px}.iti__flag.iti__mr{height:14px;background-position:-3424px 0px}.iti__flag.iti__ms{height:10px;background-position:-3446px 0px}.iti__flag.iti__mt{height:14px;background-position:-3468px 0px}.iti__flag.iti__mu{height:14px;background-position:-3490px 0px}.iti__flag.iti__mv{height:14px;background-position:-3512px 0px}.iti__flag.iti__mw{height:14px;background-position:-3534px 0px}.iti__flag.iti__mx{height:12px;background-position:-3556px 0px}.iti__flag.iti__my{height:10px;background-position:-3578px 0px}.iti__flag.iti__mz{height:14px;background-position:-3600px 0px}.iti__flag.iti__na{height:14px;background-position:-3622px 0px}.iti__flag.iti__nc{height:10px;background-position:-3644px 0px}.iti__flag.iti__ne{height:15px;background-position:-3666px 0px}.iti__flag.iti__nf{height:10px;background-position:-3686px 0px}.iti__flag.iti__ng{height:10px;background-position:-3708px 0px}.iti__flag.iti__ni{height:12px;background-position:-3730px 0px}.iti__flag.iti__nl{height:14px;background-position:-3752px 0px}.iti__flag.iti__no{height:15px;background-position:-3774px 0px}.iti__flag.iti__np{height:15px;background-position:-3796px 0px}.iti__flag.iti__nr{height:10px;background-position:-3811px 0px}.iti__flag.iti__nu{height:10px;background-position:-3833px 0px}.iti__flag.iti__nz{height:10px;background-position:-3855px 0px}.iti__flag.iti__om{height:10px;background-position:-3877px 0px}.iti__flag.iti__pa{height:14px;background-position:-3899px 0px}.iti__flag.iti__pe{height:14px;background-position:-3921px 0px}.iti__flag.iti__pf{height:14px;background-position:-3943px 0px}.iti__flag.iti__pg{height:15px;background-position:-3965px 0px}.iti__flag.iti__ph{height:10px;background-position:-3987px 0px}.iti__flag.iti__pk{height:14px;background-position:-4009px 0px}.iti__flag.iti__pl{height:13px;background-position:-4031px 0px}.iti__flag.iti__pm{height:14px;background-position:-4053px 0px}.iti__flag.iti__pn{height:10px;background-position:-4075px 0px}.iti__flag.iti__pr{height:14px;background-position:-4097px 0px}.iti__flag.iti__ps{height:10px;background-position:-4119px 0px}.iti__flag.iti__pt{height:14px;background-position:-4141px 0px}.iti__flag.iti__pw{height:13px;background-position:-4163px 0px}.iti__flag.iti__py{height:11px;background-position:-4185px 0px}.iti__flag.iti__qa{height:8px;background-position:-4207px 0px}.iti__flag.iti__re{height:14px;background-position:-4229px 0px}.iti__flag.iti__ro{height:14px;background-position:-4251px 0px}.iti__flag.iti__rs{height:14px;background-position:-4273px 0px}.iti__flag.iti__ru{height:14px;background-position:-4295px 0px}.iti__flag.iti__rw{height:14px;background-position:-4317px 0px}.iti__flag.iti__sa{height:14px;background-position:-4339px 0px}.iti__flag.iti__sb{height:10px;background-position:-4361px 0px}.iti__flag.iti__sc{height:10px;background-position:-4383px 0px}.iti__flag.iti__sd{height:10px;background-position:-4405px 0px}.iti__flag.iti__se{height:13px;background-position:-4427px 0px}.iti__flag.iti__sg{height:14px;background-position:-4449px 0px}.iti__flag.iti__sh{height:10px;background-position:-4471px 0px}.iti__flag.iti__si{height:10px;background-position:-4493px 0px}.iti__flag.iti__sj{height:15px;background-position:-4515px 0px}.iti__flag.iti__sk{height:14px;background-position:-4537px 0px}.iti__flag.iti__sl{height:14px;background-position:-4559px 0px}.iti__flag.iti__sm{height:15px;background-position:-4581px 0px}.iti__flag.iti__sn{height:14px;background-position:-4603px 0px}.iti__flag.iti__so{height:14px;background-position:-4625px 0px}.iti__flag.iti__sr{height:14px;background-position:-4647px 0px}.iti__flag.iti__ss{height:10px;background-position:-4669px 0px}.iti__flag.iti__st{height:10px;background-position:-4691px 0px}.iti__flag.iti__sv{height:12px;background-position:-4713px 0px}.iti__flag.iti__sx{height:14px;background-position:-4735px 0px}.iti__flag.iti__sy{height:14px;background-position:-4757px 0px}.iti__flag.iti__sz{height:14px;background-position:-4779px 0px}.iti__flag.iti__ta{height:10px;background-position:-4801px 0px}.iti__flag.iti__tc{height:10px;background-position:-4823px 0px}.iti__flag.iti__td{height:14px;background-position:-4845px 0px}.iti__flag.iti__tf{height:14px;background-position:-4867px 0px}.iti__flag.iti__tg{height:13px;background-position:-4889px 0px}.iti__flag.iti__th{height:14px;background-position:-4911px 0px}.iti__flag.iti__tj{height:10px;background-position:-4933px 0px}.iti__flag.iti__tk{height:10px;background-position:-4955px 0px}.iti__flag.iti__tl{height:10px;background-position:-4977px 0px}.iti__flag.iti__tm{height:14px;background-position:-4999px 0px}.iti__flag.iti__tn{height:14px;background-position:-5021px 0px}.iti__flag.iti__to{height:10px;background-position:-5043px 0px}.iti__flag.iti__tr{height:14px;background-position:-5065px 0px}.iti__flag.iti__tt{height:12px;background-position:-5087px 0px}.iti__flag.iti__tv{height:10px;background-position:-5109px 0px}.iti__flag.iti__tw{height:14px;background-position:-5131px 0px}.iti__flag.iti__tz{height:14px;background-position:-5153px 0px}.iti__flag.iti__ua{height:14px;background-position:-5175px 0px}.iti__flag.iti__ug{height:14px;background-position:-5197px 0px}.iti__flag.iti__um{height:11px;background-position:-5219px 0px}.iti__flag.iti__un{height:14px;background-position:-5241px 0px}.iti__flag.iti__us{height:11px;background-position:-5263px 0px}.iti__flag.iti__uy{height:14px;background-position:-5285px 0px}.iti__flag.iti__uz{height:10px;background-position:-5307px 0px}.iti__flag.iti__va{height:15px;background-position:-5329px 0px}.iti__flag.iti__vc{height:14px;background-position:-5346px 0px}.iti__flag.iti__ve{height:14px;background-position:-5368px 0px}.iti__flag.iti__vg{height:10px;background-position:-5390px 0px}.iti__flag.iti__vi{height:14px;background-position:-5412px 0px}.iti__flag.iti__vn{height:14px;background-position:-5434px 0px}.iti__flag.iti__vu{height:12px;background-position:-5456px 0px}.iti__flag.iti__wf{height:14px;background-position:-5478px 0px}.iti__flag.iti__ws{height:10px;background-position:-5500px 0px}.iti__flag.iti__xk{height:15px;background-position:-5522px 0px}.iti__flag.iti__ye{height:14px;background-position:-5544px 0px}.iti__flag.iti__yt{height:14px;background-position:-5566px 0px}.iti__flag.iti__za{height:14px;background-position:-5588px 0px}.iti__flag.iti__zm{height:14px;background-position:-5610px 0px}.iti__flag.iti__zw{height:10px;background-position:-5632px 0px}.iti__flag{height:15px;box-shadow:0 0 1px #888;background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)!important;background-repeat:no-repeat;background-color:#dbdbdb;background-position:20px 0}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.iti__flag{background-image:url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)}}.iti__flag.iti__np{background-color:transparent}.iti.iti--allow-dropdown{width:100%;margin-bottom:8px}#phone,[id^=init-contact]{height:38.73px}#phone:focus,[id^=init-contact]:focus{border-color:transparent;outline:2px solid #1e75ba!important}.iti{display:block!important}.iti .iti__country-list{position:absolute!important;bottom:0!important;top:auto!important;left:auto!important;transform:translateY(101%)!important;box-shadow:none;font-size:14px;margin-left:0;width:316px;max-height:250px}.iti__country{white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis;padding:10px!important;color:#3f4346!important;font-weight:500!important}.iti__country.iti__flag-box{margin-right:12px}.iti__country:hover,.iti__country.iti__highlight{background-color:#d5e0f8!important}.selected-dial-code{font-weight:400;font-size:14px}.selected-dial-code{color:#8f9396}.dropdown-menu.country-dropdown{width:291px!important;border-radius:8px 8px 0 0!important;border-color:#d5d9dc!important}.dropdown-menu.country-dropdown ul{width:100%}.invalid-input{outline:2px solid #cc5229}.dark .iti .iti__country-list{background-color:#1f2937;border-color:#374151;color:#f9fafb}.dark .iti__country{color:#f9fafb!important}.dark .iti__country:hover,.dark .iti__country.iti__highlight{background-color:#312e81!important}.dark .iti__dial-code{color:#9ca3af}.dark .iti__divider{border-bottom-color:#374151}.dark .iti__selected-flag:hover,.dark .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag{background-color:#ffffff14}.dark #phone,.dark [id^=init-contact]{color:#f9fafb;background-color:transparent}:root{--color-common-dark: #000000;--color-common-slate: #333333;--color-common-rock: #5d6164;--color-common-grey: #333333;--color-common-cloud: #c1c5c8;--color-common-smoke: #d5d9dc;--color-common-white: #ffffff;--color-common-black: #000000;--border-common-radius-4: 4px;--font-size-12: 12px;--font-size-14: 14px;--font-size-16: 16px;--font-size-18: 18px;--font-size-24: 24px;--font-size-28: 28px;--font-size-30: 30px;--font-size-36: 36px;--custom-mat-form-field-height: 48px}html,body{margin:0;width:100vw;height:100vh;overflow-x:hidden}*,proxy-auth,.iti__country-list{font-family:Inter,sans-serif;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}@property --tw-border-spacing-x{syntax: ""; inherits: false; initial-value: 0;}@property --tw-border-spacing-y{syntax: ""; inherits: false; initial-value: 0;}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-divide-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-divide-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-divide-y-reverse: 0;--tw-border-style: solid;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-divide-x-reverse: 0}}} +`; + + // Inject into document.head + (document.head || document.getElementsByTagName('head')[0]).appendChild(style); +})(); diff --git a/apps/36-blocks/src/assets/proxy-auth/test-widget.html b/apps/36-blocks/src/assets/proxy-auth/test-widget.html new file mode 100644 index 00000000..fba7d62d --- /dev/null +++ b/apps/36-blocks/src/assets/proxy-auth/test-widget.html @@ -0,0 +1,88 @@ + + + + + + Proxy Auth Widget - Single File Test + + + +
    +

    🚀 Proxy Auth Widget Test

    +
    + Test Status: Single-file bundle (proxy-auth.js)
    + Bundle Size: ~1.3 MB (includes CSS + all assets)
    + Configuration: Replace YOUR_REFERENCE_ID with your actual reference ID +
    + + +
    +
    + + + + + + + + diff --git a/apps/proxy/src/assets/scss/base/_dark-theme.scss b/apps/36-blocks/src/assets/scss/base/_dark-theme.scss similarity index 78% rename from apps/proxy/src/assets/scss/base/_dark-theme.scss rename to apps/36-blocks/src/assets/scss/base/_dark-theme.scss index f732c3ae..e8f6e232 100644 --- a/apps/proxy/src/assets/scss/base/_dark-theme.scss +++ b/apps/36-blocks/src/assets/scss/base/_dark-theme.scss @@ -10,11 +10,9 @@ body.dark-theme { // New design color variables --color-dark-primary: #171c26; - --color-dark-secondary: #7b879D; - --color-dark-accent: #19E6CE; - --color-dark-accent-light: #19E6CE1A; - --color-dark-muted: #A7AFBE; - --color-dark-light: #F0F2F4; + --color-dark-accent: #19e6ce; + --color-dark-accent-light: #19e6ce1a; + --color-dark-muted: #a7afbe; --color-common-bg: var(--color-common-dark); --color-common-text: var(--color-common-smoke); @@ -22,22 +20,15 @@ body.dark-theme { --color-common-placeholder: var(--color-common-grey); --color-common-icon: var(--color-common-cloud); --color-common-input-border: var(--color-common-slate); - --color-common-tooltip-bg: var(--color-common-slate); - --color-common-dialog-bg: var(--color-common-slate); --color-common-chip-bg: var(--color-common-dark); --color-common-graph-bg: rgba(123, 127, 130, 0.09); --color-common-flat-btn-bg: rgba(123, 127, 130, 0.09); --color-common-bg-light: rgba(123, 127, 130, 0.09); --color-common-bg-lighter: rgba(123, 127, 130, 0.1); - --color-common-bg-lighter-hover: rgba(123, 127, 130, 0.2); --color-common-scrollbar: 255, 255, 255; --color-common-hover: var(--color-common-slate); - --color-button-bg: rgba(123, 127, 130, 0.1); - --color-button-text: var(--color-common-white); - --color-button-hover: rgba(123, 127, 130, 0.2); - // Primary Color --color-common-primary: #3f51b5; --color-common-primary-light: rgba(80, 103, 230, 0.12); @@ -46,9 +37,6 @@ body.dark-theme { --color-link-color: blue; - // Box Shadow - --color-common-box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%); - // Table Color variables --color-table-head: var(--color-common-smoke); --color-table-cell: var(--color-common-smoke); @@ -73,9 +61,4 @@ body.dark-theme { --color-sidenav-menu-active-link-icon: var(--color-common-white); --color-common-sidenav-shadow: 1px 0px 4px rgba(0, 0, 0, 0.5); - - - // new design variables - - --sidenav-menu-background: var(--color-common-primary); } diff --git a/apps/36-blocks/src/assets/scss/base/_default-variables.scss b/apps/36-blocks/src/assets/scss/base/_default-variables.scss new file mode 100644 index 00000000..acda8f2a --- /dev/null +++ b/apps/36-blocks/src/assets/scss/base/_default-variables.scss @@ -0,0 +1,60 @@ +:root { + // Border + --border-common-radius: 8px; + --border-common-radius-4: 4px; + + --font-family-common: 'DM Sans', sans-serif; + + // Common Font Size + --font-size-common-10: 10px; + --font-size-common-11: 11px; + --font-size-common-12: 12px; + --font-size-common-14: 14px; + --font-size-common-20: 20px; + --font-size-common-24: 24px; + + // Common color + --color-common-green: #008000; + --color-common-scrollbar: 0, 0, 0; + --color-common-hover: var(--color-common-silver); + + // New design color variables + --color-dark-primary: #171c26; + --color-dark-accent: #19e6ce; + --color-dark-accent-light: #19e6ce1a; + --color-dark-muted: #a7afbe; + + // #1 - Hello + --color-hello-primary-dark: #8c5d00; + --color-hello-primary-light: rgba(242, 190, 85, 0.17); + + // #2 - Email + --color-email-primary: #cc5229; + --color-email-primary-dark: #8c2e0e; + --color-email-primary-light: rgba(204, 82, 41, 0.12); + --color-email-primary-hover: #af4622; + + // #3 - WhatsApp + --color-whatsApp-primary: #29a653; + --color-whatsApp-primary-dark: #307368; + --color-whatsApp-primary-light: rgba(111, 202, 113, 0.16); + --color-whatsApp-primary-hover: #238b45; + + // #7 - Voice + --color-voice-primary: #696bef; + --color-voice-primary-dark: #3a3ba6; + --color-voice-primary-light: rgba(105, 107, 239, 0.12); + + // #8 - ShortURL + --color-short-url-primary: #de8644; + --color-short-url-primary-dark: #804f13; + --color-short-url-primary-light: rgba(229, 142, 34, 0.12); + + // #10 - OTP + --color-otp-primary: #1157a6; + --color-otp-primary-dark: #0a3566; + --color-otp-primary-light: rgba(56, 146, 224, 0.12); + + // mat-form-field variables + --custom-mat-form-field-height: 48px; +} diff --git a/apps/proxy/src/assets/scss/base/_light-theme.scss b/apps/36-blocks/src/assets/scss/base/_light-theme.scss similarity index 73% rename from apps/proxy/src/assets/scss/base/_light-theme.scss rename to apps/36-blocks/src/assets/scss/base/_light-theme.scss index 2a242166..957702b3 100644 --- a/apps/proxy/src/assets/scss/base/_light-theme.scss +++ b/apps/36-blocks/src/assets/scss/base/_light-theme.scss @@ -8,13 +8,13 @@ body.light-theme { --color-common-smoke: #d5d9dc; --color-common-white: #ffffff; --color-common-black: #000000; - + --new-color-common-primary: #171c26; - --new-color-common-secondary: #7b879D; - --new-color-common-accent: #19E6CE; - --new-color-common-accent-light: #19E6CE1A; - --new-color-common-muted: #A7AFBE; - --new-color-common-light: #F0F2F4; + --new-color-common-secondary: #7b879d; + --new-color-common-accent: #19e6ce; + --new-color-common-accent-light: #19e6ce1a; + --new-color-common-muted: #a7afbe; + --new-color-common-light: #f0f2f4; --color-common-silver: rgba(123, 127, 130, 0.07); --color-common-bg: var(--color-common-white); @@ -26,26 +26,17 @@ body.light-theme { --color-common-placeholder: var(--color-common-grey); --color-common-icon: var(--color-common-rock); --color-common-input-border: var(--color-common-smoke); - --color-common-tooltip-bg: var(--color-common-dark); - --color-common-dialog-bg: var(--color-common-white); --color-common-chip-bg: rgba(123, 127, 130, 0.09); --color-common-secondary-text: var(--color-common-rock); - --color-common-secondary-icon: var(--color-common-rock); - --color-common-secondary-border: var(--color-common-smoke); --color-common-graph-bg: rgba(123, 127, 130, 0.09); --color-common-flat-btn-bg: rgba(123, 127, 130, 0.09); --color-common-bg-light: rgba(123, 127, 130, 0.09); --color-common-bg-lighter: rgba(123, 127, 130, 0.1); - --color-common-bg-lighter-hover: rgba(123, 127, 130, 0.3); --color-common-scrollbar: 0, 0, 0; --color-common-hover: var(--color-common-silver); - --color-button-bg: rgba(123, 127, 130, 0.1); - --color-button-text: var(--color-common-slate); - --color-button-hover: rgba(123, 127, 130, 0.3); - // Primary Color --color-common-primary: #3f51b5; --color-common-primary-light: rgba(80, 103, 230, 0.12); @@ -54,9 +45,6 @@ body.light-theme { --color-link-color: blue; - // Box Shadow - --color-common-box-shadow: 0px 2px 4px -1px rgb(0 0 0 / 20%); - // Table Color variables --color-table-head: var(--color-common-slate); --color-table-cell: var(--color-common-slate); @@ -81,15 +69,4 @@ body.light-theme { --color-sidenav-menu-active-link-icon: var(--color-common-white); --color-common-sidenav-shadow: 1px 0px 4px rgba(0, 0, 0, 0.2); - - .preview-input-field { - - .mat-form-field-label { - color: #ffffff !important; - } - - .mat-input-element::placeholder { - color: #ffffff !important; - } - } } diff --git a/apps/36-blocks/src/assets/scss/base/_reset.scss b/apps/36-blocks/src/assets/scss/base/_reset.scss new file mode 100644 index 00000000..fd8c5cb1 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/base/_reset.scss @@ -0,0 +1,67 @@ +// *, +// *::before, +// *::after { +// box-sizing: border-box; +// } +// article, +// aside, +// figcaption, +// figure, +// footer, +// header, +// hgroup, +// main, +// nav, +// section { +// display: block; +// } + +// a { +// text-decoration: none; +// } +// body { +// margin: 0; +// font-size: 1rem; +// font-weight: 400; +// line-height: 1.5; +// text-align: left; +// cursor: default; +// color: var(--color-common-text); +// background-color: var(--color-common-bg); +// font-family: var(--font-family-common); +// -webkit-text-size-adjust: 100%; +// } + +// .mat-form-field-appearance-outline .mat-form-field-flex { +// font-size: 14px; +// // line-height: 1.225; +// } +// .mat-select-arrow-wrapper { +// vertical-align: baseline !important; +// } + +// * { +// scrollbar-width: thin; +// scrollbar-color: var(--mat-sys-primary) var(--color-common-bg); +// } + +// /* Works on Chrome/Edge/Safari */ +// *::-webkit-scrollbar { +// width: 6px; +// height: 6px; +// } + +// *::-webkit-scrollbar-track { +// border-radius: var(--border-common-radius); +// background: transparent; +// } + +// *::-webkit-scrollbar-thumb { +// background: rgba(var(--color-common-scrollbar), 0.1); +// border-radius: var(--border-common-radius); +// } + +// /* Handle on hover */ +// ::-webkit-scrollbar-thumb:hover { +// background: rgba(var(--color-common-scrollbar), 0.5); +// } diff --git a/apps/proxy/src/assets/scss/component/_animation.scss b/apps/36-blocks/src/assets/scss/component/_animation.scss similarity index 69% rename from apps/proxy/src/assets/scss/component/_animation.scss rename to apps/36-blocks/src/assets/scss/component/_animation.scss index 2d1bebed..d63a7a98 100644 --- a/apps/proxy/src/assets/scss/component/_animation.scss +++ b/apps/36-blocks/src/assets/scss/component/_animation.scss @@ -1,30 +1,33 @@ // css for skeleton .shimmer-loading { animation: shimmer-animation infinite 2s linear; - background: #f6f7f8; background: linear-gradient(to right, #f6f7f8 0%, #edeef1 20%, #f6f7f8 40%, #f6f7f8 100%); - // background-repeat: no-repeat; background-size: 1000px 100%; } +body.dark-theme { + .shimmer-loading { + background: linear-gradient(to right, #2a2d30 0%, #3a3d42 20%, #2a2d30 40%, #2a2d30 100%); + } +} // Keyframes with vernder prefixes @mixin keyframes($animationName) { @-webkit-keyframes #{$animationName} { - @content; + @content; } @-moz-keyframes #{$animationName} { - @content; + @content; } @-o-keyframes #{$animationName} { - @content; + @content; } @keyframes #{$animationName} { - @content; + @content; } } -@include keyframes(shimmer-animation){ +@include keyframes(shimmer-animation) { 0% { background-position: -1000px 0; } @@ -32,4 +35,4 @@ 100% { background-position: 1000px 0; } -} \ No newline at end of file +} diff --git a/apps/36-blocks/src/assets/scss/component/_buttons.scss b/apps/36-blocks/src/assets/scss/component/_buttons.scss new file mode 100644 index 00000000..12e6f07e --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_buttons.scss @@ -0,0 +1,324 @@ +// @use '../utils/mixins/common-utils' as *; + +// $primary-btn-height: 40px; +// $secondary-btn-height: 30px; + +// .mat-button-base { +// &.mat-flat-button, +// &.mat-stroked-button, +// &.mat-button { +// border-radius: var(--border-common-radius-4); +// min-width: auto !important; +// transition: background-color 200ms cubic-bezier(0.35, 0, 0.25, 1); +// line-height: $primary-btn-height; + +// &.mat-button-disabled { +// background-color: var(--color-button-bg) !important; +// } +// &.btn-medium { +// line-height: $secondary-btn-height !important; +// font-size: var(--font-size-common-12); +// } +// } +// // 6. Flat button +// &.mat-flat-button { +// transition: background-color 200ms cubic-bezier(0.35, 0, 0.25, 1); +// background-color: var(--color-dark-accent) !important; +// color: var(--color-dark-primary) !important; +// // Flat button color variation +// &.flat-default { +// @include btnHover(var(--color-button-text), var(--color-button-bg), var(--color-button-hover)); +// } +// &.flat-primary-light { +// @include btnHover( +// var(--color-common-primary), +// var(--color-common-primary-light), +// var(--color-common-primary-light-hover) +// ); +// } +// &.flat-primary { +// background-color: var(--color-common-primary-light); +// color: var(--color-common-primary); +// } +// &.btn-success { +// @include btnHover( +// var(--color-common-white), +// var(--color-whatsApp-primary), +// var(--color-whatsApp-primary-hover), +// var(--color-common-white) +// ); +// } +// &.btn-success-light { +// @include btnHover( +// var(--color-whatsApp-primary), +// var(--color-whatsApp-primary-light), +// var(--color-whatsApp-primary), +// var(--color-common-white) +// ); +// } +// &.btn-danger-light { +// @include btnHover( +// var(--color-email-primary), +// var(--color-email-primary-light), +// var(--color-email-primary), +// var(--color-common-white) +// ); +// } +// // Hover state +// &.mat-primary { +// &:hover { +// background-color: var(--color-common-primary-dark); +// } +// } +// // Hover state +// &.mat-warn { +// @include btnHover( +// var(--color-common-white), +// var(--color-email-primary), +// var(--color-email-primary-hover), +// var(--color-common-white) +// ); +// } +// // Flat Icon button +// &.flat-icon-btn { +// padding: 0px 12px; +// } + +// } +// .mat-icon-suffix { +// margin-right: calc(12px - 16px); +// margin-left: 4px; +// } +// .mat-icon-prefix { +// margin-left: calc(12px - 16px); +// margin-right: 4px; +// } + +// &.mat-button { +// @include btnHover(var(--color-button-text), transparent, var(--color-button-bg)); +// &.mat-primary { +// @include btnHover( +// var(--color-common-primary), +// transparent, +// var(--color-common-primary-light), +// var(--color-common-primary) +// ); +// } +// } +// &.mat-stroked-button { +// line-height: 38px; +// &:not(.mat-primary) { +// border-color: var(--color-dark-accent) !important; +// color: var(--color-dark-accent) !important; +// } +// &.mat-primary { +// border-color: var(--color-primary-color) !important; +// @include btnHover(var(--color-common-primary), transparent, var(--color-common-primary-light)); +// } +// } +// &.remove-mat-button-focus-overlay { +// .mat-button-focus-overlay { +// display: none; +// } +// } +// } + +// /* 1. Icon Button */ +// .mat-icon-button { +// &.icon-btn-md { +// @include generateIconBtn(30px, 18px, var(--color-common-text-2)); +// } +// &.icon-btn-sm { +// @include generateIconBtn(20px, 12px, var(--color-common-text-2)); +// } +// &.mat-primary { +// @include iconBtnHover( +// var(--color-common-text-2), +// var(--color-common-primary-light), +// var(--color-common-primary) +// ); +// } +// &.mat-warn { +// @include iconBtnHover(var(--color-common-text-2), var(--color-email-primary-light), var(--color-email-primary)); +// } +// &.mat-success { +// @include iconBtnHover( +// var(--color-common-text-2), +// var(--color-whatsApp-primary-light), +// var(--color-whatsApp-primary) +// ); +// } +// &.mat-button-disabled { +// opacity: 0.6; +// pointer-events: none; +// } +// } + +// .mat-btn-xs { +// @media only screen and (max-width: 660px) { +// padding-left: 12px; +// padding-right: 12px; +// .mat-icon { +// margin: 0px; +// } +// } +// } + +// // Slider +// .slider::-webkit-slider-thumb { +// background: var(--color-common-primary) !important; +// } + +// // Toggle Button light theme color - https://prnt.sc/wY6YBUSpVDQF + +// .default-toggle-btn { +// border-radius: var(--border-common-radius) !important; +// border: none !important; +// box-shadow: none !important; +// .mat-button-toggle { +// font-size: var(--font-size-common-14); +// border-color: var(--color-common-border); +// // min-width: 108px; +// // &.mat-button-toggle-appearance-standard { +// // background-color: var(--color-button-bg); +// // color: var(--color-common-rock) !important; +// // font-weight: 500; +// // .mat-button-toggle-label-content { +// // line-height: 40px !important; +// // } +// // &.mat-button-toggle-checked { +// // background-color: var(--color-common-primary-light); +// // color: var(--color-common-primary) !important; +// // } +// // } +// background-color: var(--color-button-bg); +// color: var(--color-button-text) !important; +// font-weight: 500; +// .mat-button-toggle-label-content { +// line-height: 40px !important; +// } +// &.mat-button-toggle-checked { +// background-color: var(--color-common-primary); +// color: var(--color-common-white) !important; +// &:hover { +// background-color: var(--color-common-primary-dark); +// } +// } +// &:hover { +// background-color: var(--color-button-hover); +// } +// } +// &.icon-type-button { +// .mat-button-toggle { +// min-width: auto; +// } +// } +// } + +// // Toggle Button - https://prnt.sc/ad0qU7tV7Bg5 +// .custom-toggle-btn { +// border-radius: var(--border-common-radius) !important; +// .mat-button-toggle { +// font-size: var(--font-size-common-12); +// font-weight: 600; +// color: var(--color-common-text-2); +// border-color: var(--color-common-border); +// &.mat-button-toggle-checked { +// background-color: var(--color-common-primary) !important; +// color: var(--color-common-white) !important; +// } +// &.mat-button-toggle-appearance-standard { +// .mat-button-toggle-label-content { +// line-height: 36.5px !important; +// } +// } +// } +// } + +// // 11. Button size +// .mat-btn-md { +// min-height: 26px; +// line-height: 30px !important; +// font-size: var(--font-size-common-12) !important; +// &.mat-btn-wran { +// border-color: var(--mat-sys-error) !important; +// } +// } +// .mat-btn-xs { +// @media only screen and (max-width: 660px) { +// padding-left: 12px !important; +// padding-right: 12px !important; +// .mat-icon { +// margin: 0px; +// } +// } +// } + +// // Disabled Action on permission basis +// .disabled-action, +// button:disabled, +// button[disabled], +// button:hover:disabled, +// button:hover[disabled], +// button.mat-btn-md.mat-btn-wran:disabled, +// button.mat-btn-md.mat-btn-wran[disabled], +// button.mat-btn-md.mat-btn-wran:hover:disabled, +// button.mat-btn-md.mat-btn-wran:hover[disabled] { +// pointer-events: none; +// color: var(--color-common-grey) !important; +// border-color: var(--color-common-grey) !important; +// .mat-icon { +// color: var(--color-common-grey) !important; +// } +// } + +// // 10. Mat slide toggle button design reference - https://prnt.sc/DDH-z4jHnmH5 +// .mat-slide-toggle { +// &.toggle-slide { +// .mat-slide-toggle-content { +// color: var(--color-common-white); +// } +// } +// &.mat-checked { +// .mat-slide-toggle-bar { +// background-color: var(--color-whatsApp-primary-light) !important; +// } +// .mat-slide-toggle-thumb { +// background-color: var(--color-whatsApp-primary) !important; +// } +// } +// &.mat-disabled{ +// .mat-slide-toggle-bar{ +// background-color: var(--color-common-grey); +// } +// .mat-slide-toggle-thumb { +// background-color: var(--color-common-slate) !important; +// } +// } +// } +// .radio-button-custom-style { +// .mat-radio-button { +// .mat-radio-outer-circle { +// border-color: var(--color-dark-accent) !important; +// } + +// .mat-radio-inner-circle { +// background-color: var(--color-dark-accent) !important; +// } +// } +// } +// .accent-color { +// .material-icons { +// &.mat-icon { +// &.mat-icon-no-color { +// color: var(--color-dark-accent) !important; +// &:hover { +// color: var(--color-dark-accent) !important; +// } +// } +// } +// } +// } +// .accent-bg-color { +// background-color: var(--color-dark-accent) !important; +// } diff --git a/apps/36-blocks/src/assets/scss/component/_card.scss b/apps/36-blocks/src/assets/scss/component/_card.scss new file mode 100644 index 00000000..559ebc5b --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_card.scss @@ -0,0 +1,68 @@ +// @use '../utils/mixins/common-utils' as *; +// /* +// // Card +// */ +// .mat-card { +// box-shadow: none !important; +// border-radius: var(--border-common-radius) !important; +// background-color: var(--color-common-bg) !important; +// &.responsive-card { +// @include media-breakpoint-down('tablet') { +// background-color: transparent !important; +// border: none !important; +// } +// } +// &.shadow-none { +// box-shadow: none !important; +// } +// &.outline-card { +// border: 1px solid var(--color-common-border); +// box-shadow: none !important; +// } +// @media screen and (max-width: 768px) { +// &.transparent-card { +// box-shadow: none !important; +// background-color: transparent !important; +// border-width: 0px !important; +// } +// } +// &.data-analytics-card { +// background-color: var(--color-common-graph-bg) !important; +// } + +// &.default-card { +// background-color: var(--color-common-graph-bg) !important; +// } + +// &.mat-data-card { +// padding: 24px 32px; +// .mat-data-card-content { +// .mat-data-card-value { +// padding-left: 32px; +// p { +// font-weight: 500; +// font-size: 14px; +// line-height: 16px; +// margin-bottom: 4px; +// } +// h3 { +// font-weight: 700; +// font-size: 24px; +// line-height: 28px; +// } +// } +// } +// &.delivered { +// color: var(--color-whatsApp-primary) !important; +// background-color: var(--color-whatsApp-primary-light) !important; +// } +// &.suppressed { +// background-color: var(--color-short-url-primary-light) !important; +// color: var(--color-short-url-primary) !important; +// } +// &.failed { +// background-color: var(--color-email-primary-light) !important; +// color: var(--color-email-primary) !important; +// } +// } +// } diff --git a/apps/proxy/src/assets/scss/component/_chart.scss b/apps/36-blocks/src/assets/scss/component/_chart.scss similarity index 100% rename from apps/proxy/src/assets/scss/component/_chart.scss rename to apps/36-blocks/src/assets/scss/component/_chart.scss diff --git a/apps/36-blocks/src/assets/scss/component/_filters.scss b/apps/36-blocks/src/assets/scss/component/_filters.scss new file mode 100644 index 00000000..42fca65e --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_filters.scss @@ -0,0 +1,62 @@ +// .filter-menu { +// min-width: 400px !important; +// max-width: 400px !important; +// margin-top: 12px; +// @media (max-width: 660px) { +// min-width: 80vw !important; +// max-width: 80vw !important; +// max-height: 70vh; +// } +// .mat-menu-content { +// padding: 0px !important; +// .date-picker-row { +// padding: 20px 25px 0px 25px; +// } +// .mat-form-field { +// .mat-icon { +// width: 16px; +// } +// } +// .action-button { +// padding: 20px 25px; +// } +// } +// } + +// .client-filter-menu { +// min-width: 400px !important; +// max-width: 400px !important; +// margin-top: 12px; +// @media (max-width: 660px) { +// min-width: 80vw !important; +// max-width: 80vw !important; +// max-height: 70vh !important; +// overflow-y: hidden !important; +// } +// .mat-menu-content { +// padding: 0px !important; +// .date-picker-row { +// padding: 25px; +// } +// .client-filter-content { +// @media (max-width: 992px) { +// max-height: 58vh; +// overflow-y: auto; +// } +// } +// .mat-form-field { +// .mat-icon { +// width: 16px; +// } +// } +// .action-button { +// padding: 20px 25px; +// } +// } +// } + +// .column-sort { +// .mat-menu-content { +// max-height: 600px; +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_form-field.scss b/apps/36-blocks/src/assets/scss/component/_form-field.scss new file mode 100644 index 00000000..e4618a19 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_form-field.scss @@ -0,0 +1,254 @@ +// // Default theme changes +// .mat-form-field { +// .mat-form-field-wrapper { +// vertical-align: baseline !important; + +// .mat-form-field-flex { +// font-size: var(--font-size-common-14); +// line-height: 1.225; +// .mat-form-field-infix { +// .mat-form-field-label-wrapper { +// .mat-form-field-label { +// color: var(--color-common-slate); +// } +// } +// } +// } +// .mat-form-field-hint-wrapper { +// .mat-hint { +// color: var(--color-common-slate); +// font-size: 12px; +// } +// } +// } +// &.search-form-field:not(.unset-search-width) { +// width: 250px; +// } +// } + +// .mat-form-field { +// &.mat-form-field-appearance-legacy { +// &.mat-legacy-form-field-sm { +// .mat-form-field-wrapper { +// padding-bottom: 0px; +// } +// .mat-form-field-infix { +// border-top: 0px !important; +// padding: 8px 0 4px 0 !important; +// max-width: 100%; +// // min-width: 100px; +// width: 100%; +// font-size: 14px; +// } +// .mat-form-field-suffix { +// button { +// width: 23px; +// height: 23px; +// min-height: 23px; +// line-height: 23px; +// } +// } +// .mat-form-field-underline { +// bottom: 0px !important; +// } +// .mat-form-field-subscript-wrapper { +// top: calc(100% - 5px); +// .mat-error { +// font-size: var(--font-size-common-12); +// } +// } +// .mat-form-field-label { +// top: 1.00125em !important; +// } +// } +// } +// &.mat-form-field-disabled { +// .mat-form-field-wrapper { +// .mat-form-field-flex { +// .mat-form-field-outline { +// background-color: var(--color-common-silver) !important; +// border-radius: var(--border-common-radius-4) !important; +// } +// } +// } +// } +// } + +// // Default form field +// .mat-form-field { +// .mat-form-field-infix { +// padding: 5px 0 10px 0 !important; +// .mat-input-element { +// &::-webkit-input-placeholder { +// /* Chrome/Opera/Safari */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &::-moz-placeholder { +// /* Firefox 19+ */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &:-ms-input-placeholder { +// /* IE 10+ */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// &:-moz-placeholder { +// /* Firefox 18- */ +// color: var(--color-common-grey); +// font-weight: normal; +// } +// } +// .mat-form-field-label-wrapper { +// .mat-form-field-required-marker { +// display: none; +// } +// } +// &.mat-form-field-appearance-outline { +// .mat-form-field-outline { +// background-color: var(--color-common-white) !important; +// } +// } +// } +// .mat-form-field-flex { +// .mat-form-field-outline { +// background-color: var(--color-common-white); +// .mat-form-field-outline-start { +// border-radius: var(--border-common-radius-4) 0 0 var(--border-common-radius-4); +// min-width: var(--border-common-radius-4); +// } +// .mat-form-field-outline-end { +// border-radius: 0 var(--border-common-radius-4) var(--border-common-radius-4) 0; +// } +// } +// .mat-form-field-infix { +// .mat-select { +// .mat-select-trigger { +// .mat-select-arrow-wrapper { +// transform: translateY(0%); +// } +// } +// } +// } +// } +// input { +// &.mat-input-element { +// color: var(--color-common-text); +// } +// } +// &.no-padding { +// .mat-form-field-wrapper { +// padding-bottom: 0px !important; +// .mat-form-field-flex { +// .mat-form-field-prefix { +// color: var(--color-common-grey) !important; +// } +// } +// } +// } +// // Used to display only first mat-error +// mat-error { +// display: none !important; +// font-size: var(--font-size-common-12); +// &:first-child { +// display: block !important; +// } +// } +// } + +// @-moz-document url-prefix() { +// .mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button, +// .mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button { +// display: inline-block !important; +// } +// } + +// // Disbaled stroked input form field +// .mat-form-field-disabled .mat-form-field-underline { +// background-image: linear-gradient(to right, rgba(0, 0, 0, 1) 0, rgba(0, 0, 0, 0.42) 33%, #c2c7cc 0) !important; +// background-size: 1px 100% !important; +// background-repeat: repeat-x !important; +// } + +// .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, +// .mat-form-field-appearance-outline.mat-form-field-can-float +// .mat-input-server:focus +// + .mat-form-field-label-wrapper +// .mat-form-field-label { +// transform: translateY(-15px) scale(0.7) !important; +// } + +// .mat-form-field-appearance-outline .mat-form-field-label { +// top: 18px !important; +// } + +// .mat-form-field-subscript-wrapper { +// padding: 0px !important; +// margin-top: 2px !important; +// font-size: var(--font-size-common-10); +// } + +// /* Firefox hide */ +// input[matinput][type='number'] { +// -moz-appearance: textfield; +// } +// /* Chrome, Safari, Edge, Opera */ +// input[matinput]::-webkit-outer-spin-button, +// input[matinput]::-webkit-inner-spin-button { +// -webkit-appearance: none; +// margin: 0; +// } + +// .mat-form-field-outside-error { +// height: 21.5px; +// } + +// // Input focus/highlight color +// .mat-form-field.mat-focused { +// .mat-form-field-ripple { +// background-color: var(--color-dark-accent) !important; +// } + +// .mat-form-field-outline-thick { +// color: var(--color-dark-accent) !important; +// } + +// .mat-form-field-label { +// color: var(--color-dark-primary) !important; +// } +// } + +// // MDC Form Field styles (Angular Material 15+) +// .mat-mdc-form-field.mat-focused { +// .mdc-text-field--outlined:not(.mdc-text-field--disabled) { +// .mdc-notched-outline__leading, +// .mdc-notched-outline__notch, +// .mdc-notched-outline__trailing { +// border-color: var(--color-dark-accent) !important; +// } +// } + +// .mdc-text-field--filled:not(.mdc-text-field--disabled) { +// .mdc-line-ripple::after { +// border-bottom-color: var(--color-dark-accent) !important; +// } +// } + +// .mat-mdc-floating-label { +// color: var(--color-dark-primary) !important; +// } +// } + +// // MDC focused outline +// .mdc-text-field--focused:not(.mdc-text-field--disabled) { +// .mdc-notched-outline__leading, +// .mdc-notched-outline__notch, +// .mdc-notched-outline__trailing { +// border-color: var(--color-dark-accent) !important; +// } + +// .mdc-floating-label { +// color: var(--color-dark-primary) !important; +// } +// } diff --git a/apps/proxy/src/assets/scss/component/_icon.scss b/apps/36-blocks/src/assets/scss/component/_icon.scss similarity index 100% rename from apps/proxy/src/assets/scss/component/_icon.scss rename to apps/36-blocks/src/assets/scss/component/_icon.scss diff --git a/apps/36-blocks/src/assets/scss/component/_loader.scss b/apps/36-blocks/src/assets/scss/component/_loader.scss new file mode 100644 index 00000000..e3c5b094 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_loader.scss @@ -0,0 +1,15 @@ +.content-loader { + z-index: 999999; + .loading-box { + box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), + 0px 1px 14px 0px rgba(0, 0, 0, 0.12); + .mat-mdc-progress-spinner { + width: 20px !important; + height: 20px !important; + svg { + width: 20px !important; + height: 20px !important; + } + } + } +} diff --git a/apps/36-blocks/src/assets/scss/component/_mat-list.scss b/apps/36-blocks/src/assets/scss/component/_mat-list.scss new file mode 100644 index 00000000..601a0d44 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_mat-list.scss @@ -0,0 +1,43 @@ +// .mat-list{ +// &.custom-nav-list{ +// .mat-list-item{ +// .mat-list-item-content{ +// padding: 0px !important; +// } +// } +// } +// &.default-list{ +// .mat-list-item { +// height: 36px; +// font-size: 14px; +// color: var(--color-common-dark); +// cursor: pointer; +// margin-bottom: 4px; +// &.active{ +// background-color: var(--color-common-primary-light); +// color: var(--color-common-primary); +// } +// &:hover{ +// background-color: var(--color-common-silver); +// } +// .mat-list-item-content{ +// padding-inline: 8px; +// } +// } +// &.mat-list-sm { +// .mat-list-item { +// height: 28px; +// } +// } +// } +// } +// .mat-menu-hover-state{ +// .mat-menu-item{ +// &.active{ +// background-color: var(--color-otp-primary-light); +// } +// &:not(.active):hover{ +// background-color: var(--color-common-bg-lighter); +// } +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_menu.scss b/apps/36-blocks/src/assets/scss/component/_menu.scss new file mode 100644 index 00000000..ce42e9ab --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_menu.scss @@ -0,0 +1,74 @@ +// .mat-menu-panel { +// border-radius: var(--border-common-radius) !important; +// } +// .more-menu { +// min-height: auto !important; +// .mat-menu-item { +// font-size: 13px; +// line-height: 36px; +// height: 36px; +// &.mat-menu-item-active { +// background-color: var(--color-common-primary-light); +// color: var(--color-common-primary) !important; +// } +// } +// } +// .form-scrollable { +// max-height: calc(100vh - 400px); +// overflow-y: auto; +// @media only screen and (max-width: 768px) { +// max-height: calc(100vh - 250px); +// } +// } + +// .subscription-filter-menu { +// min-width: 500px !important; +// max-width: 500px !important; +// margin-top: 12px; +// .mat-form-field { +// .mat-form-field-wrapper { +// padding-bottom: 14px !important; +// .mat-form-field-flex { +// .mat-form-field-infix { +// .mat-form-field-label-wrapper { +// top: -18px; +// } +// } +// } +// } +// } +// .form-scrollable { +// max-height: calc(100vh - 400px); +// overflow-y: auto; +// @media only screen and (max-width: 768px) { +// max-height: calc(100vh - 250px); +// } +// } +// } + +// .logs-filter-menu, .profile-menu { +// min-width: 300px !important; +// max-width: 300px !important; +// .mat-menu-content { +// .mat-form-field { +// .mat-form-field-wrapper { +// // padding-bottom: 1.34375em !important; +// .mat-form-field-label-wrapper { +// top: -18px !important; +// } +// } +// } +// } +// } + +// .profile-sub-dropdown { +// .mat-menu-item { +// padding: 0px 24px; +// height: 40px; +// line-height: 40px; +// font-size: 14px; +// } +// #scrollableWrapper { +// overflow-x: hidden !important; +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_modal.scss b/apps/36-blocks/src/assets/scss/component/_modal.scss new file mode 100755 index 00000000..d2a5bf5e --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_modal.scss @@ -0,0 +1,102 @@ +// .mat-dialog-container { +// padding: 16px 24px !important; +// width: 450px !important; +// position: relative; +// border-radius: var(--border-common-radius) !important; +// } + +// .mat-dialog-md { +// .mat-dialog-container { +// width: 100% !important; +// } +// } + +// .mat-dialog { +// &.mat-dialog-lg { +// .mat-dialog-container { +// min-width: 800px !important; +// } +// } +// } + +// .rejection-reason-drop + .cdk-overlay-connected-position-bounding-box { +// right: 16px !important; +// } +// .rejection-reason { +// min-width: 500px !important; +// max-width: 500px !important; +// margin-bottom: 10px; +// &.voice-file-rejection { +// height: 750px !important; +// } +// .mat-menu-content { +// padding-top: 0 !important; +// .rejection-reason-header { +// padding: 0px 16px; +// } +// .new-reason-form { +// padding: 0px 16px; +// top: 0; +// z-index: 999; +// } +// .rejection-list { +// overflow-y: auto; +// list-style: none; +// margin: 0px; +// padding: 16px; +// .rejection-item { +// margin-bottom: 10px; +// border: 1px dashed var(--color-common-border); +// border-radius: 4px; +// padding: 10px; +// cursor: pointer !important; +// transition: background-color 0.2s cubic-bezier(0.35, 0, 0.25, 1); +// &:hover { +// background-color: var(--color-sidenav-menu-hover-link-background) !important; +// border-color: var(--color-sidenav-menu-hover-link-text); +// .title, +// .subtitle, +// .mat-delete-btn, +// .rejection-item-action .mat-icon { +// color: var(--color-sidenav-menu-hover-link-text) !important; +// } +// .rejection-item-action .mat-icon { +// color: var(--color-sidenav-menu-hover-link-text); +// } +// } +// &.selected { +// background-color: var(--color-sidenav-menu-active-link-background) !important; +// border-color: var(--color-sidenav-menu-active-link-text); +// .title, +// .subtitle, +// .mat-delete-btn { +// color: var(--color-sidenav-menu-active-link-text) !important; +// } +// .rejection-item-action .mat-icon { +// color: var(--color-sidenav-menu-hover-link-text); +// } +// } +// } +// } +// } +// .bottom-seprator { +// padding: 10px; +// display: flex; +// align-items: center; +// justify-content: center; +// box-shadow: 13px -6px 13px -7px #00000036; +// position: sticky; +// bottom: 0; +// background-color: var(--color-common-white); +// } +// .no-record-found { +// height: 366px; +// display: flex; +// align-items: center; +// justify-content: center; +// } +// } + +// .mat-dialog-actions { +// margin: 0px !important; +// } diff --git a/apps/36-blocks/src/assets/scss/component/_pagination.scss b/apps/36-blocks/src/assets/scss/component/_pagination.scss new file mode 100644 index 00000000..c890bd69 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_pagination.scss @@ -0,0 +1,120 @@ +// .mat-paginator { +// background: var(--colo-common-bg); +// &.default-mat-paginator { +// background-color: transparent !important; +// .mat-form-field { +// .mat-form-field-wrapper { +// padding-bottom: 6px !important; +// } +// } +// .mat-paginator-range-label { +// @media only screen and (max-width: 768px) { +// margin: 0 10px 0 10px; +// } +// } +// } +// } + +// .cdk-overlay-pane .mat-select-panel-wrap { +// margin-top: 0 !important; +// } + +// // Goto pagination +// .mat-paginator-outer-container { +// .mat-select-value { +// line-height: 16px; +// } +// .mat-paginator-page-size-label, +// .mat-paginator-range-label { +// font-size: var(--font-size-common-12); +// } +// .mat-form-field-wrapper { +// .mat-form-field-infix { +// padding: 0px 0 10px 0 !important; +// } +// } +// } +// .go-to-pagination { +// border-top: 1px solid var(--color-table-cell-border); +// background-color: var(--color-common-white); +// .mat-paginator { +// box-shadow: none !important; +// border-top: 0px; +// .mat-paginator-page-size-label { +// @media (max-width: 660px) { +// display: none; +// } +// } +// } +// .go-to-container { +// display: flex; +// align-items: baseline; +// height: 39px; +// margin-top: -3px; +// .go-to-label { +// margin: 0 4px; +// font-size: 12px; +// color: var(--color-common-text); +// font-family: var(--font-family-common); +// @media (max-width: 460px) { +// display: none; +// } +// } +// .mat-form-field { +// width: 56px; +// font-size: 12px; +// .mat-form-field-wrapper { +// padding-bottom: 0px !important; +// .mat-form-field-flex { +// font-size: 12px; +// .mat-form-field-infix { +// padding: 4px 0 10px 0 !important; + +// .mat-select-arrow-wrapper { +// transform: translateY(-15%) !important; +// } + +// .mat-select-value-text { +// color: var(--color-common-text); +// } +// } +// } +// } +// } +// } +// .mat-paginator { +// .mat-paginator-container { +// @media (max-width: 460px) { +// padding-right: 0px; +// .mat-paginator-page-size { +// margin-right: 0px !important; +// } +// .mat-paginator-range-label { +// margin-right: 0px !important; +// } +// .mat-paginator-navigation-previous, +// .mat-paginator-navigation-next { +// width: 30px; +// height: 30px; +// line-height: 30px; +// } +// } +// } +// } +// } +// // Add class inside Overlay useing provider +// .custom-mat-paginator { +// .mat-select-panel-wrap { +// .mat-select-panel { +// border-radius: var(--border-common-radius); +// .mat-option { +// font-size: var(--font-size-common-11); +// } +// } +// } +// } + +// .mat-form-field-appearance-outline .mat-form-field-flex { +// font-size: var(--font-size-common-14); +// line-height: 1.225; +// } diff --git a/apps/36-blocks/src/assets/scss/component/_select-option.scss b/apps/36-blocks/src/assets/scss/component/_select-option.scss new file mode 100644 index 00000000..1961e70d --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_select-option.scss @@ -0,0 +1,23 @@ +// .cdk-overlay-pane { +// .mat-select-panel-wrap { +// .mat-select-panel { +// .mat-option { +// &.mat-selected { +// color: var(--color-common-text) !important; +// } +// } +// } +// } +// } + +// // Autocomplete +// .mat-autocomplete-panel { +// .mat-option{ +// font-size: 14px; +// height: 40px !important; +// line-height: 40px !important; +// &:hover{ +// background-color: var(--color-common-primary-light) !important; +// } +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_side-dialog.scss b/apps/36-blocks/src/assets/scss/component/_side-dialog.scss new file mode 100644 index 00000000..6b712f57 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_side-dialog.scss @@ -0,0 +1,41 @@ +// .mat-right-dialog { +// position: absolute !important; +// right: 0; +// top: 0; +// height: 100%; +// overflow: auto; +// box-shadow: -4px 0px 16px #00000059; +// &.mat-dialog-lg { +// width: 535px; +// } +// &.mat-dialog-md { +// width: 450px; +// } +// .mat-right-dialog-container { +// display: flex; +// flex-direction: column; +// height: 100%; +// } +// .mat-dialog-container { +// width: 100% !important; +// padding: 0px !important; +// border-radius: 0px !important; +// .mat-right-dialog-container { +// .mat-right-dialog-header { +// // position: sticky; +// // top: 0; +// // z-index: 1000; +// padding: 8px 16px; +// border-bottom: 1px solid var(--color-common-border); +// h2 { +// font-weight: var(--font-weight-medium); +// } +// } +// .mat-right-dialog-content { +// padding: 16px; +// overflow-y: scroll; +// height: 100%; +// } +// } +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_sidenav.scss b/apps/36-blocks/src/assets/scss/component/_sidenav.scss new file mode 100644 index 00000000..856aabd8 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_sidenav.scss @@ -0,0 +1,33 @@ +// .default-sidenav { +// .mat-nav-list { +// padding-top: 0px; +// .mat-list-item { +// height: 40px !important; +// cursor: pointer !important; +// color: var(--color-sidenav-menu-link-text) !important; +// position: relative; +// .mat-icon { +// border-radius: 0px !important; +// } +// .mat-list-item-content { +// padding: 0px 0px 0px 16px; +// } +// &.mat-list-item-disabled { +// background-color: transparent; +// pointer-events: none; +// } +// .mat-line { +// font-size: 14px !important; +// font-weight: 400; +// &.menu-svg-icon { +// fill: red; +// svg { +// path { +// fill: var(--color-common-slate); +// } +// } +// } +// } +// } +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_status.scss b/apps/36-blocks/src/assets/scss/component/_status.scss new file mode 100644 index 00000000..3f294281 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_status.scss @@ -0,0 +1,42 @@ +// .status { +// padding: 0px 12px; +// border-radius: 13px; +// font-size: 12px; +// text-transform: capitalize; +// font-weight: normal; +// width: min-content; +// display: inline-block; +// text-align: center; +// height: 24px; +// line-height: 24px; + +// // Used in unverified, open, status +// &.status-default { +// background-color: var(--color-common-graph-bg) !important; +// color: var(--color-common-rock) !important; +// } +// // Used in in-progress status +// &.status-pending { +// color: var(--color-hello-primary-dark) !important; +// background-color: var(--color-hello-primary-light) !important; +// } + +// // Used in submitted delivered +// &.status-success { +// color: var(--color-whatsApp-primary) !important; +// background-color: var(--color-whatsApp-primary-light) !important; +// } +// // Used in removed, rejected +// &.status-failed { +// color: var(--color-email-primary) !important; +// background-color: var(--color-email-primary-light) !important; +// } +// &.status-approved { +// color: var(--color-common-primary) !important; +// background-color: var(--color-common-primary-light) !important; +// } +// &.status-warning { +// color: var(--color-short-url-primary) !important; +// background-color: var(--color-short-url-primary-light) !important; +// } +// } diff --git a/apps/36-blocks/src/assets/scss/component/_stepper.scss b/apps/36-blocks/src/assets/scss/component/_stepper.scss new file mode 100644 index 00000000..680a2d52 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_stepper.scss @@ -0,0 +1,72 @@ +// .mat-stepper-horizontal{ +// .mat-horizontal-stepper-wrapper { +// height: 100%; +// .mat-horizontal-stepper-header { + +// // height: 36px; +// padding: 16px 12px; +// .mat-step-label{ +// font-size: var(--font-size-common-12); +// color: #3F4346; +// font-weight: 500; +// padding-top: 8px; +// } +// } +// } +// .mat-horizontal-content-container{ +// height: 100%; +// padding: 0 24px 12px 24px !important; +// } +// .mat-horizontal-stepper-content{ +// height: 100%; +// } +// // When Label Position set to labelPosition="bottom" in html +// &.mat-stepper-label-position-bottom{ +// .mat-horizontal-stepper-wrapper { +// .mat-horizontal-stepper-header{ +// &-container{ +// padding: 8px 16px; +// .mat-stepper-horizontal-line{ +// top: 28px; +// } +// } +// &::before, &::after{ +// top: 28px; +// } +// } +// } +// } +// } + +// .mat-stepper-horizontal, +// .mat-stepper-vertical { +// .mat-step-icon-selected, +// .mat-step-icon-state-done, +// .mat-step-icon-state-edit { +// background-color: var(--color-dark-accent) !important; +// color: var(--color-dark-primary) !important; +// } +// } + +// // &.mat-stepper-starched { +// // .mat-horizontal-stepper-wrapper { +// // height: 100%; +// // .mat-horizontal-stepper-header { + +// // // height: 36px; +// // padding: 16px 12px; +// // .mat-step-label{ +// // font-size: var(--font-size-common-12); +// // color: #3F4346; +// // font-weight: 500; +// // padding-top: 8px; +// // } +// // } +// // } +// // .mat-horizontal-content-container{ +// // height: 100%; +// // } +// // .mat-horizontal-stepper-content{ +// // height: 100%; +// // } +// // } diff --git a/apps/36-blocks/src/assets/scss/component/_tabs.scss b/apps/36-blocks/src/assets/scss/component/_tabs.scss new file mode 100644 index 00000000..da415a0f --- /dev/null +++ b/apps/36-blocks/src/assets/scss/component/_tabs.scss @@ -0,0 +1,57 @@ +// @use '../../../../../../node_modules/@angular/material/index' as mat; +// /* +// // Tabs +// */ +// .mat-tab-header { +// .mat-tab-labels { +// margin-left: 14px; +// margin-right: 16px; +// .mat-tab-label { +// font-size: 14px; +// line-height: 22px; +// font-weight: 400; +// opacity: 1; +// &.mat-tab-label-active { +// font-weight: 600; +// } +// } +// } +// } + +// // MDC Tab styles (Angular Material 15+) +// .mat-mdc-tab-group, +// .mat-mdc-tab-nav-bar { +// // Active tab text color +// .mdc-tab--active .mdc-tab__text-label { +// color: var(--color-dark-accent) !important; +// } + +// // Tab underline/indicator color - multiple selectors for compatibility +// .mdc-tab-indicator--active .mdc-tab-indicator__content--underline { +// border-color: var(--color-dark-accent) !important; +// } + +// .mat-mdc-tab-header .mat-mdc-ink-bar { +// background-color: var(--color-dark-accent) !important; +// } + +// .mat-ink-bar { +// background-color: var(--color-dark-accent) !important; +// } + +// // Inactive tab text color +// .mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label { +// color: var(--color-dark-primary) !important; +// } +// } + +// // Legacy tab styles +// .mat-tab-group { +// .mat-ink-bar { +// background-color: var(--color-dark-accent) !important; +// } + +// .mat-tab-label-active { +// color: var(--color-dark-primary) !important; +// } +// } diff --git a/libs/ui/compose-wrapper/src/lib/compose/compose.component.scss b/apps/36-blocks/src/assets/scss/component/_text-style.scss similarity index 100% rename from libs/ui/compose-wrapper/src/lib/compose/compose.component.scss rename to apps/36-blocks/src/assets/scss/component/_text-style.scss diff --git a/apps/proxy/src/assets/scss/component/_toast.scss b/apps/36-blocks/src/assets/scss/component/_toast.scss similarity index 100% rename from apps/proxy/src/assets/scss/component/_toast.scss rename to apps/36-blocks/src/assets/scss/component/_toast.scss diff --git a/apps/36-blocks/src/assets/scss/theme/_custom-palette.scss b/apps/36-blocks/src/assets/scss/theme/_custom-palette.scss new file mode 100644 index 00000000..07bd90bc --- /dev/null +++ b/apps/36-blocks/src/assets/scss/theme/_custom-palette.scss @@ -0,0 +1,241 @@ +// This file was generated by running 'ng generate @angular/material:theme-color'. +// Proceed with caution if making changes to this file. + +@use 'sass:map'; +@use '@angular/material' as mat; + +// Note: Color palettes are generated from primary: #19E6CE +$_palettes: ( + primary: ( + 0: #000000, + 10: #00201c, + 20: #003730, + 25: #00443c, + 30: #005047, + 35: #005d53, + 40: #006b5f, + 50: #008677, + 60: #00a391, + 70: #00c0ac, + 80: #00dfc7, + 90: #46fce3, + 95: #b5fff0, + 98: #e5fff8, + 99: #f3fffb, + 100: #ffffff, + ), + secondary: ( + 0: #000000, + 10: #00201c, + 20: #003730, + 25: #00443c, + 30: #105047, + 35: #205c52, + 40: #2e685e, + 50: #488177, + 60: #629b90, + 70: #7db6ab, + 80: #97d2c6, + 90: #b3eee2, + 95: #c1fdf0, + 98: #e5fff8, + 99: #f3fffb, + 100: #ffffff, + ), + tertiary: ( + 0: #000000, + 10: #071942, + 20: #1f2f58, + 25: #2b3a64, + 30: #364570, + 35: #42517c, + 40: #4e5d89, + 50: #6776a4, + 60: #808fbf, + 70: #9baadb, + 80: #b6c5f8, + 90: #dbe1ff, + 95: #eef0ff, + 98: #faf8ff, + 99: #fefbff, + 100: #ffffff, + ), + neutral: ( + 0: #000000, + 10: #151d1b, + 20: #2a3230, + 25: #353d3b, + 30: #404846, + 35: #4c5452, + 40: #58605e, + 50: #707976, + 60: #8a9390, + 70: #a5adaa, + 80: #c0c8c5, + 90: #dce4e1, + 95: #eaf3ef, + 98: #f3fbf8, + 99: #f6fefb, + 100: #ffffff, + 4: #08100e, + 6: #0d1513, + 12: #19211f, + 17: #242c2a, + 22: #2e3634, + 24: #333b39, + 87: #d3dcd9, + 92: #e2eae7, + 94: #e7f0ec, + 96: #edf5f2, + ), + neutral-variant: ( + 0: #000000, + 10: #101e1b, + 20: #253330, + 25: #303e3b, + 30: #3b4a46, + 35: #465552, + 40: #52625e, + 50: #6b7a76, + 60: #849490, + 70: #9eafaa, + 80: #bacac5, + 90: #d5e6e1, + 95: #e4f4ef, + 98: #ecfdf8, + 99: #f3fffb, + 100: #ffffff, + ), + error: ( + 0: #000000, + 10: #410002, + 20: #690005, + 25: #7e0007, + 30: #93000a, + 35: #a80710, + 40: #ba1a1a, + 50: #de3730, + 60: #ff5449, + 70: #ff897d, + 80: #ffb4ab, + 90: #ffdad6, + 95: #ffedea, + 98: #fff8f7, + 99: #fffbff, + 100: #ffffff, + ), +); + +$_rest: ( + secondary: map.get($_palettes, secondary), + neutral: map.get($_palettes, neutral), + neutral-variant: map.get($_palettes, neutral-variant), + error: map.get($_palettes, error), +); + +$primary-palette: map.merge(map.get($_palettes, primary), $_rest); +$tertiary-palette: map.merge(map.get($_palettes, tertiary), $_rest); + +// ───────────────────────────────────────────────────────────────────────────── +// SINGLE SOURCE OF TRUTH — Design Tokens +// +// Call @include theme.emit-design-tokens() inside any selector (:root, :host, +// html, etc.) to emit CSS custom properties derived directly from the palettes +// above. Tailwind's tailwind.config.js references the same var() names so that +// a single palette change here propagates to Material, Shadow DOM, and Tailwind. +// ───────────────────────────────────────────────────────────────────────────── +@mixin emit-design-tokens() { + // Primary palette tones (from #19E6CE / teal) + --proxy-primary-0: #{map.get($_palettes, primary, 0)}; + --proxy-primary-10: #{map.get($_palettes, primary, 10)}; + --proxy-primary-20: #{map.get($_palettes, primary, 20)}; + --proxy-primary-30: #{map.get($_palettes, primary, 30)}; + --proxy-primary-40: #{map.get($_palettes, primary, 40)}; + --proxy-primary-50: #{map.get($_palettes, primary, 50)}; + --proxy-primary-60: #{map.get($_palettes, primary, 60)}; + --proxy-primary-70: #{map.get($_palettes, primary, 70)}; + --proxy-primary-80: #{map.get($_palettes, primary, 80)}; + --proxy-primary-90: #{map.get($_palettes, primary, 90)}; + --proxy-primary-95: #{map.get($_palettes, primary, 95)}; + --proxy-primary-100: #{map.get($_palettes, primary, 100)}; + + // Secondary palette tones + --proxy-secondary-40: #{map.get($_palettes, secondary, 40)}; + --proxy-secondary-80: #{map.get($_palettes, secondary, 80)}; + --proxy-secondary-90: #{map.get($_palettes, secondary, 90)}; + + // Tertiary palette tones + --proxy-tertiary-40: #{map.get($_palettes, tertiary, 40)}; + --proxy-tertiary-80: #{map.get($_palettes, tertiary, 80)}; + --proxy-tertiary-90: #{map.get($_palettes, tertiary, 90)}; + + // Neutral palette tones + --proxy-neutral-10: #{map.get($_palettes, neutral, 10)}; + --proxy-neutral-20: #{map.get($_palettes, neutral, 20)}; + --proxy-neutral-30: #{map.get($_palettes, neutral, 30)}; + --proxy-neutral-40: #{map.get($_palettes, neutral, 40)}; + --proxy-neutral-50: #{map.get($_palettes, neutral, 50)}; + --proxy-neutral-60: #{map.get($_palettes, neutral, 60)}; + --proxy-neutral-70: #{map.get($_palettes, neutral, 70)}; + --proxy-neutral-80: #{map.get($_palettes, neutral, 80)}; + --proxy-neutral-90: #{map.get($_palettes, neutral, 90)}; + --proxy-neutral-95: #{map.get($_palettes, neutral, 95)}; + --proxy-neutral-100: #{map.get($_palettes, neutral, 100)}; + + // Error palette tones + --proxy-error-40: #{map.get($_palettes, error, 40)}; + --proxy-error-80: #{map.get($_palettes, error, 80)}; + --proxy-error-90: #{map.get($_palettes, error, 90)}; + + // Semantic aliases — light mode defaults (overridden per theme below) + --proxy-color-accent: var(--proxy-primary-80); + --proxy-color-on-accent: var(--proxy-primary-10); + --proxy-color-surface: var(--proxy-neutral-100); + --proxy-color-on-surface: var(--proxy-neutral-10); + --proxy-color-outline: var(--proxy-neutral-80); + --proxy-color-error: var(--proxy-error-40); +} + +/* ---------- LIGHT THEME ---------- */ +$light-theme: mat.define-theme( + ( + color: ( + theme-type: light, + primary: $primary-palette, + tertiary: $tertiary-palette, + use-system-variables: true, + ), + typography: ( + brand-family: 'Inter', + plain-family: 'Inter', + bold-weight: 700, + medium-weight: 500, + regular-weight: 400, + ), + density: ( + scale: 0, + ), + ) +); + +/* ---------- DARK THEME ---------- */ +$dark-theme: mat.define-theme( + ( + color: ( + theme-type: dark, + primary: $primary-palette, + tertiary: $tertiary-palette, + use-system-variables: true, + ), + typography: ( + brand-family: 'Inter', + plain-family: 'Inter', + bold-weight: 700, + medium-weight: 500, + regular-weight: 400, + ), + density: ( + scale: 0, + ), + ) +); diff --git a/apps/36-blocks/src/assets/scss/theme/_default-theme.scss b/apps/36-blocks/src/assets/scss/theme/_default-theme.scss new file mode 100644 index 00000000..d89557d2 --- /dev/null +++ b/apps/36-blocks/src/assets/scss/theme/_default-theme.scss @@ -0,0 +1,41 @@ +@use 'sass:map'; +@use '@angular/material' as mat; +@use './custom-palette' as theme; + +/* Include Material core styles (only once) */ +@include mat.core(); + +/* Base: light theme for all components + typography */ +html { + @include theme.emit-design-tokens(); + @include mat.all-component-themes(theme.$light-theme); + @include mat.system-level-colors(theme.$light-theme); + @include mat.system-level-typography(theme.$light-theme); + + // Dynamic Material Design System variables for dark theme only + // Explicitly picks tone 40 for primary and tone 90 for on-primary from Azure palette + // --mat-sys-primary: #{map.get(theme.$primary-palette, 80)}; + // --mat-sys-on-primary: #{map.get(theme.$theme-primary, 90)}; + // --mat-button-outlined-label-text-color: var(--color-white, #ffffff); +} + +/* System default: follow OS dark mode when body has no theme class */ +@media (prefers-color-scheme: dark) { + html:not(body.light-theme *):not(body.dark-theme *) { + @include mat.all-component-colors(theme.$dark-theme); + @include mat.system-level-colors(theme.$dark-theme); + } +} + +/* Force dark theme */ +body.dark-theme { + @include mat.all-component-colors(theme.$dark-theme); + @include mat.system-level-colors(theme.$dark-theme); +} + +/* Force light theme (overrides OS dark preference) */ +body.light-theme { + @include mat.all-component-colors(theme.$light-theme); + @include mat.system-level-colors(theme.$light-theme); + // --mat-sys-primary: #{map.get(theme.$primary-palette, 80)}; +} diff --git a/apps/36-blocks/src/assets/scss/theme/_theme-base-classes.scss b/apps/36-blocks/src/assets/scss/theme/_theme-base-classes.scss new file mode 100644 index 00000000..7eb0ae1b --- /dev/null +++ b/apps/36-blocks/src/assets/scss/theme/_theme-base-classes.scss @@ -0,0 +1,14 @@ +body { + &.default-theme, + &.dark-theme { + // Filter for Image + --filter-image-color-white: brightness(0) invert(1); + // Use this class on black color image (icon) to change color in dark theme + --color-image-filter-quaternary: invert(100%) sepia(1%) saturate(2%) hue-rotate(1deg) brightness(33%) + contrast(100%); + } + + &.dark-theme { + --color-image-filter-quaternary: brightness(0) invert(1); + } +} diff --git a/apps/proxy/src/environments/environment.prod.ts b/apps/36-blocks/src/environments/environment.prod.ts similarity index 100% rename from apps/proxy/src/environments/environment.prod.ts rename to apps/36-blocks/src/environments/environment.prod.ts diff --git a/apps/proxy/src/environments/environment.stage.ts b/apps/36-blocks/src/environments/environment.stage.ts similarity index 100% rename from apps/proxy/src/environments/environment.stage.ts rename to apps/36-blocks/src/environments/environment.stage.ts diff --git a/apps/proxy/src/environments/environment.test.ts b/apps/36-blocks/src/environments/environment.test.ts similarity index 100% rename from apps/proxy/src/environments/environment.test.ts rename to apps/36-blocks/src/environments/environment.test.ts diff --git a/apps/proxy/src/environments/environment.ts b/apps/36-blocks/src/environments/environment.ts similarity index 100% rename from apps/proxy/src/environments/environment.ts rename to apps/36-blocks/src/environments/environment.ts diff --git a/apps/proxy-auth/src/favicon.ico b/apps/36-blocks/src/favicon.ico similarity index 100% rename from apps/proxy-auth/src/favicon.ico rename to apps/36-blocks/src/favicon.ico diff --git a/apps/proxy/src/index.html b/apps/36-blocks/src/index.html similarity index 100% rename from apps/proxy/src/index.html rename to apps/36-blocks/src/index.html diff --git a/apps/36-blocks/src/main.ts b/apps/36-blocks/src/main.ts new file mode 100644 index 00000000..f998b1c4 --- /dev/null +++ b/apps/36-blocks/src/main.ts @@ -0,0 +1,55 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { provideAnimations } from '@angular/platform-browser/animations'; +import { provideRouter, withEnabledBlockingInitialNavigation } from '@angular/router'; +import { provideHttpClient, withInterceptorsFromDi, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { provideStore, provideState } from '@ngrx/store'; +import { provideEffects } from '@ngrx/effects'; +import { provideStoreDevtools } from '@ngrx/store-devtools'; +import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field'; +import { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog'; +import { MAT_TOOLTIP_DEFAULT_OPTIONS } from '@angular/material/tooltip'; +import { importProvidersFrom, provideZoneChangeDetection } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; +import { AngularFireModule } from '@angular/fire/compat'; +import { AngularFireAuthModule } from '@angular/fire/compat/auth'; +import { AppComponent } from './app/app.component'; +import { appRoutes } from './app/app.routes'; +import { environment } from './environments/environment'; +import { reducers, clearStateMetaReducer } from './app/ngrx/store/app.state'; +import { loginsReducer } from './app/auth/ngrx/store/login.state'; +import { RootEffects } from './app/ngrx/effects/root'; +import { LogInEffects } from './app/auth/ngrx/effects/login.effects'; +import { ErrorInterceptor } from '@proxy/services/interceptor/errorInterceptor'; +import { ProxyBaseUrls } from '@proxy/models/root-models'; + +bootstrapApplication(AppComponent, { + providers: [ + provideZoneChangeDetection({ eventCoalescing: true }), + provideAnimations(), + provideRouter(appRoutes, withEnabledBlockingInitialNavigation()), + provideHttpClient(withInterceptorsFromDi()), + provideStore(reducers, { metaReducers: [clearStateMetaReducer] }), + provideState('auth', loginsReducer), + provideEffects([RootEffects, LogInEffects]), + ...(!environment.production ? [provideStoreDevtools({ maxAge: 25, serialize: true })] : []), + { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }, + importProvidersFrom(AngularFireModule.initializeApp(environment.firebaseConfig), AngularFireAuthModule), + { provide: ProxyBaseUrls.FirebaseConfig, useValue: environment.firebaseConfig }, + { provide: ProxyBaseUrls.IToken, useValue: { token: null, companyId: null } }, + { provide: ProxyBaseUrls.BaseURL, useValue: environment.baseUrl }, + { provide: ProxyBaseUrls.ProxyLogsUrl, useValue: environment.baseUrl }, + { + provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, + useValue: { appearance: 'outline', floatLabel: 'auto' }, + }, + { + provide: MAT_DIALOG_DEFAULT_OPTIONS, + useValue: { autoFocus: false, hasBackdrop: true, disableClose: true, restoreFocus: false }, + }, + { + provide: MAT_TOOLTIP_DEFAULT_OPTIONS, + useValue: { disableTooltipInteractivity: true }, + }, + importProvidersFrom(MarkdownModule.forRoot()), + ], +}).catch((err) => console.error(err)); diff --git a/apps/36-blocks/src/styles.scss b/apps/36-blocks/src/styles.scss new file mode 100644 index 00000000..38e3c0ff --- /dev/null +++ b/apps/36-blocks/src/styles.scss @@ -0,0 +1,81 @@ +/* Plus imports for other components in your app.*/ +@use 'assets/scss/base/default-variables'; +@use 'assets/scss/base/light-theme'; +@use 'assets/scss/base/dark-theme'; + +/* Reset*/ +@use 'assets/scss/base/reset'; +/* Component*/ +@use 'assets/scss/component/modal'; + +/* Theme*/ +@use 'assets/scss/theme/default-theme'; + +/*Components*/ +@use 'assets/scss/component/filters'; +@use 'assets/scss/component/toast'; +// @use 'assets/scss/component/table'; +@use 'assets/scss/component/loader'; +@use 'assets/scss/component/icon'; +@use 'assets/scss/component/card'; +@use 'assets/scss/component/form-field'; +@use 'assets/scss/component/pagination'; +@use 'assets/scss/component/tabs'; +@use 'assets/scss/component/buttons'; +@use 'assets/scss/component/status'; +@use 'assets/scss/component/text-style'; +@use 'assets/scss/component/side-dialog'; +@use 'assets/scss/component/menu'; +@use 'assets/scss/component/sidenav'; +@use 'assets/scss/component/select-option'; +@use 'assets/scss/component/chart'; +@use 'assets/scss/component/mat-list'; +@use 'assets/scss/component/stepper'; +@use 'assets/scss/component/animation'; +@use '../../shared/scss/global'; +body { + background: var(--mat-sys-surface); + color: var(--mat-sys-on-surface); +} +.text-color { + color: var(--mat-sys-on-surface); +} +.bg-color { + background-color: var(--color-common-bg) !important; +} +.broder-color { + border-color: var(--color-common-border) !important; +} +.secondary-text-color { + color: var(--color-common-secondary-text) !important; +} +/*Main*/ +.app-content { + padding: 16px; + min-height: 100%; + height: 100vh; + overflow-y: auto; + @media (max-width: 768px) { + overflow-x: auto; + } +} + +.register-user-details { + margin-top: 5px; + #init-contact-user { + height: 39px; + font-size: 15px; + } + .invalid-input { + outline: 2px solid #f44336; + } + .iti--allow-dropdown { + width: 100%; + } +} + +// .block-feature-tabs { +// .mat-tab-body-wrapper { +// height: 100%; +// } +// } diff --git a/apps/proxy-auth/tsconfig.app.json b/apps/36-blocks/tsconfig.app.json similarity index 75% rename from apps/proxy-auth/tsconfig.app.json rename to apps/36-blocks/tsconfig.app.json index 18bf7d57..dbbf8ab4 100644 --- a/apps/proxy-auth/tsconfig.app.json +++ b/apps/36-blocks/tsconfig.app.json @@ -2,9 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "types": [] + "types": ["node"] }, - "files": ["src/main.ts", "src/polyfills.ts"], + "files": ["src/main.ts"], "include": ["src/**/*.d.ts"], "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"] } diff --git a/apps/proxy-auth/tsconfig.editor.json b/apps/36-blocks/tsconfig.editor.json similarity index 100% rename from apps/proxy-auth/tsconfig.editor.json rename to apps/36-blocks/tsconfig.editor.json diff --git a/apps/proxy/tsconfig.json b/apps/36-blocks/tsconfig.json similarity index 79% rename from apps/proxy/tsconfig.json rename to apps/36-blocks/tsconfig.json index 633cbe66..eb5c4dfe 100644 --- a/apps/proxy/tsconfig.json +++ b/apps/36-blocks/tsconfig.json @@ -11,6 +11,7 @@ } ], "compilerOptions": { - "target": "es2020" + "target": "ES2022", + "useDefineForClassFields": false } } diff --git a/apps/proxy-auth-element/.browserslistrc b/apps/proxy-auth-element/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/apps/proxy-auth-element/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/apps/proxy-auth-element/project.json b/apps/proxy-auth-element/project.json deleted file mode 100644 index 65c1154c..00000000 --- a/apps/proxy-auth-element/project.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "name": "proxy-auth-element", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "projectType": "application", - "prefix": "proxy", - "sourceRoot": "apps/proxy-auth/src", - "tags": [], - "targets": { - "build": { - "executor": "ngx-build-plus:build", - "options": { - "outputPath": "dist/apps/proxy-auth", - "index": "apps/proxy-auth/src/index.html", - "main": "apps/proxy-auth/src/main.element.ts", - "tsConfig": "apps/proxy-auth/tsconfig.element.json", - "aot": true, - "singleBundle": true, - "keepStyles": true, - "bundleStyles": true, - "extraWebpackConfig": "apps/proxy-auth/webpack.config.js" - }, - "configurations": { - "test": { - "fileReplacements": [ - { - "replace": "apps/proxy-auth/src/environments/environment.ts", - "with": "apps/proxy-auth/src/environments/environment.test.ts" - } - ], - "extraWebpackConfig": "apps/proxy-auth/webpack.config.js", - "optimization": true, - "outputHashing": "none", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "12mb", - "maximumError": "15mb" - } - ] - }, - "stage": { - "fileReplacements": [ - { - "replace": "apps/proxy-auth/src/environments/environment.ts", - "with": "apps/proxy-auth/src/environments/environment.stage.ts" - } - ], - "extraWebpackConfig": "apps/proxy-auth/webpack.config.js", - "optimization": true, - "outputHashing": "none", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" - } - ] - }, - "production": { - "fileReplacements": [ - { - "replace": "apps/proxy-auth/src/environments/environment.ts", - "with": "apps/proxy-auth/src/environments/environment.prod.ts" - } - ], - "extraWebpackConfig": "apps/proxy-auth/webpack.config.js", - "optimization": true, - "outputHashing": "none", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "2mb", - "maximumError": "5mb" - } - ] - } - } - }, - "serve": { - "executor": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "proxy-auth-element:build:production" - }, - "development": { - "browserTarget": "proxy-auth-element:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "executor": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "proxy-auth-element:build" - } - }, - "lint": { - "executor": "@nrwl/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": ["apps/proxy-auth-element/**/*.ts", "apps/proxy-auth-element/**/*.html"] - } - }, - "serve-static": { - "executor": "@nrwl/web:file-server", - "options": { - "buildTarget": "proxy-auth-element:build" - } - } - } -} diff --git a/apps/proxy-auth-element/src/app/app.component.html b/apps/proxy-auth-element/src/app/app.component.html deleted file mode 100644 index 95a39ba1..00000000 --- a/apps/proxy-auth-element/src/app/app.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/proxy-auth-element/src/app/app.component.ts b/apps/proxy-auth-element/src/app/app.component.ts deleted file mode 100644 index 38a3987d..00000000 --- a/apps/proxy-auth-element/src/app/app.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'proxy-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'], -}) -export class AppComponent { - title = 'proxy-auth-element'; -} diff --git a/apps/proxy-auth-element/src/app/app.module.ts b/apps/proxy-auth-element/src/app/app.module.ts deleted file mode 100644 index d28d023f..00000000 --- a/apps/proxy-auth-element/src/app/app.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; - -import { AppComponent } from './app.component'; -import { NxWelcomeComponent } from './nx-welcome.component'; -import { RouterModule } from '@angular/router'; -import { appRoutes } from './app.routes'; - -@NgModule({ - declarations: [AppComponent, NxWelcomeComponent], - imports: [BrowserModule, RouterModule.forRoot(appRoutes, { initialNavigation: 'enabledBlocking' })], - providers: [], - bootstrap: [AppComponent], -}) -export class AppModule {} diff --git a/apps/proxy-auth-element/src/app/app.routes.ts b/apps/proxy-auth-element/src/app/app.routes.ts deleted file mode 100644 index 8762dfe2..00000000 --- a/apps/proxy-auth-element/src/app/app.routes.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Route } from '@angular/router'; - -export const appRoutes: Route[] = []; diff --git a/apps/proxy-auth-element/src/app/nx-welcome.component.ts b/apps/proxy-auth-element/src/app/nx-welcome.component.ts deleted file mode 100644 index 90fbfb60..00000000 --- a/apps/proxy-auth-element/src/app/nx-welcome.component.ts +++ /dev/null @@ -1,806 +0,0 @@ -import { Component, OnInit, ViewEncapsulation } from '@angular/core'; - -/* eslint-disable */ - -@Component({ - selector: 'proxy-nx-welcome', - template: ` - - -
    -
    - -
    -

    - Hello there, - Welcome proxy-auth-element 👋 -

    -
    - - -
    -
    -

    - - - - You're up and running -

    - What's next? -
    -
    - - - -
    -
    - - - - - -
    -

    Next steps

    -

    Here are some things you can do with Nx:

    -
    - - - - - Add UI library - -
    # Generate UI lib
    -nx g @nrwl/angular:lib ui
    -
    -# Add a component
    -nx g @nrwl/angular:component button --project ui
    -
    -
    - - - - - View interactive project graph - -
    nx graph
    -
    -
    - - - - - Run affected commands - -
    # see what's been affected by changes
    -nx affected:graph
    -
    -# run tests for current changes
    -nx affected:test
    -
    -# run e2e tests for current changes
    -nx affected:e2e
    -
    -
    - -

    - Carefully crafted with - - - -

    -
    -
    - `, - styles: [], - encapsulation: ViewEncapsulation.None, -}) -export class NxWelcomeComponent implements OnInit { - constructor() {} - - ngOnInit(): void {} -} diff --git a/apps/proxy-auth-element/src/environments/environment.prod.ts b/apps/proxy-auth-element/src/environments/environment.prod.ts deleted file mode 100644 index da7c84f6..00000000 --- a/apps/proxy-auth-element/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true, -}; diff --git a/apps/proxy-auth-element/src/environments/environment.ts b/apps/proxy-auth-element/src/environments/environment.ts deleted file mode 100644 index d1685736..00000000 --- a/apps/proxy-auth-element/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false, -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/apps/proxy-auth-element/src/index.html b/apps/proxy-auth-element/src/index.html deleted file mode 100644 index 1fff16d3..00000000 --- a/apps/proxy-auth-element/src/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - ProxyAuthElement - - - - - - - - diff --git a/apps/proxy-auth-element/src/main.ts b/apps/proxy-auth-element/src/main.ts deleted file mode 100644 index 207c6dde..00000000 --- a/apps/proxy-auth-element/src/main.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(AppModule) - .catch((err) => console.error(err)); diff --git a/apps/proxy-auth-element/src/polyfills.ts b/apps/proxy-auth-element/src/polyfills.ts deleted file mode 100644 index e4555ed1..00000000 --- a/apps/proxy-auth-element/src/polyfills.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/apps/proxy-auth-element/src/styles.scss b/apps/proxy-auth-element/src/styles.scss deleted file mode 100644 index 90d4ee00..00000000 --- a/apps/proxy-auth-element/src/styles.scss +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/apps/proxy-auth-element/tsconfig.json b/apps/proxy-auth-element/tsconfig.json deleted file mode 100644 index b4a92135..00000000 --- a/apps/proxy-auth-element/tsconfig.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.editor.json" - } - ], - "compilerOptions": { - "target": "es2020", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/apps/proxy-auth/.browserslistrc b/apps/proxy-auth/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/apps/proxy-auth/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/apps/proxy-auth/build-elements.js b/apps/proxy-auth/build-elements.js deleted file mode 100755 index 2e3b3bdc..00000000 --- a/apps/proxy-auth/build-elements.js +++ /dev/null @@ -1,16 +0,0 @@ -const fs = require('fs-extra'); -const concat = require('concat'); - -(async function build() { - console.info(`Building elements for ${process.cwd()}...`); - - let files = [ - './dist/apps/proxy-auth/main.js', - ]; - - await fs.ensureDir('./dist/apps/proxy/assets/proxy-auth'); - - await concat(files, './dist/apps/proxy/assets/proxy-auth/proxy-auth.js'); - - console.info('Elements created successfully!'); -})(); diff --git a/apps/proxy-auth/project.json b/apps/proxy-auth/project.json deleted file mode 100644 index aff7db84..00000000 --- a/apps/proxy-auth/project.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "proxy-auth", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "projectType": "application", - "sourceRoot": "apps/proxy-auth/src", - "prefix": "proxy", - "targets": { - "build": { - "executor": "@angular-builders/custom-webpack:browser", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/apps/proxy-auth", - "index": "apps/proxy-auth/src/index.html", - "main": "apps/proxy-auth/src/main.ts", - "polyfills": "apps/proxy-auth/src/polyfills.ts", - "tsConfig": "apps/proxy-auth/tsconfig.app.json", - "inlineStyleLanguage": "scss", - "assets": ["apps/proxy-auth/src/favicon.ico", "apps/proxy-auth/src/assets"], - "styles": ["apps/proxy-auth/src/styles.scss"], - "aot": true, - "scripts": [], - "customWebpackConfig": { - "path": "/webpack.config.js" - } - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - } - ], - "fileReplacements": [ - { - "replace": "apps/proxy-auth/src/environments/environment.ts", - "with": "apps/proxy-auth/src/environments/environment.prod.ts" - } - ], - "buildOptimizer": true, - "optimization": true, - "vendorChunk": false, - "extractLicenses": false, - "sourceMap": false, - "namedChunks": false - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "executor": "@angular-builders/custom-webpack:dev-server", - "options": { - "browserTarget": "proxy-auth:build" - }, - "configurations": { - "production": { - "browserTarget": "proxy-auth:build:production" - }, - "development": { - "browserTarget": "proxy-auth:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "executor": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "proxy-auth:build" - } - }, - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["apps/proxy-auth/**/*.ts", "apps/proxy-auth/**/*.html"] - } - } - }, - "tags": ["scope:proxy-auth", "type:application"] -} diff --git a/apps/proxy-auth/src/app/app.component.html b/apps/proxy-auth/src/app/app.component.html deleted file mode 100644 index 9c842e1f..00000000 --- a/apps/proxy-auth/src/app/app.component.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - -
    diff --git a/apps/proxy-auth/src/app/app.component.scss b/apps/proxy-auth/src/app/app.component.scss deleted file mode 100644 index d1f91eee..00000000 --- a/apps/proxy-auth/src/app/app.component.scss +++ /dev/null @@ -1,37 +0,0 @@ -.hcaptcha-container { - margin: 20px 0; - padding: 15px; - border: 1px solid #e0e0e0; - border-radius: 8px; - background-color: #f9f9f9; - display: flex; - justify-content: center; -} - -.captcha-status { - margin: 15px 0; - padding: 10px; - background-color: #e8f5e8; - border: 1px solid #4caf50; - border-radius: 4px; - - p { - margin: 0 0 10px 0; - color: #2e7d32; - font-weight: 500; - } - - button { - background-color: #f44336; - color: white; - border: none; - padding: 8px 16px; - border-radius: 4px; - cursor: pointer; - font-size: 14px; - - &:hover { - background-color: #d32f2f; - } - } -} diff --git a/apps/proxy-auth/src/app/app.component.ts b/apps/proxy-auth/src/app/app.component.ts deleted file mode 100644 index 1b1385a6..00000000 --- a/apps/proxy-auth/src/app/app.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, HostListener, OnDestroy, OnInit } from '@angular/core'; -import { environment } from '../environments/environment'; -import { BaseComponent } from '@proxy/ui/base-component'; - -@Component({ - selector: 'proxy-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'], -}) -export class AppComponent extends BaseComponent implements OnInit, OnDestroy { - public title = 'otp-provider'; - - constructor() { - super(); - } - - ngOnInit() { - this.initOtpProvider(); - } - - @HostListener('window:beforeunload') - ngOnDestroy() { - super.ngOnDestroy(); - } - - public initOtpProvider() { - if (!environment.production) { - const sendOTPConfig = { - // referenceId: '4512365m176216342869087ae458e09', - // type: 'organization-details', - // loginRedirectUrl: 'https://www.google.com', - // showCompanyDetails: false, - authToken: - 'ZGlYV0Z4ekRleUQwZEhXR2JvRllKaWh6cmhhb2hhTnhTMGdDdHlpa2ZaOU9LcGh5M3puLzZ6QTVRb3pGdGNPU0xlSC9SQjI3ckNweWk5cWg1aytpOVRTVmtUWXFRQW5rWEZ0c21KeEN6c0FmK1d5bWQxUk9lZHM4anlHSDI5Q3dxL0o3V0h6Yk9kMDBSVE5pc1FPekJkQVg3QXZ4K2xFbUViUGdhQ0Z6d3hGNXQreEN2dytUQW9GOEdseFFBU3FaNXYzbFVUalJDRitqc0EvQVduQUkrUT09', - // type: 'user-management', - // isHidden: true, - // theme: 'dark', - // isPreview: true, - // isLogin: true, - target: '_self', - success: (data) => { - console.log('success response', data); - }, - failure: (error) => { - console.log('failure reason', error); - }, - }; - window.initVerification(sendOTPConfig); - } - } -} diff --git a/apps/proxy-auth/src/app/app.module.ts b/apps/proxy-auth/src/app/app.module.ts deleted file mode 100644 index 0775549d..00000000 --- a/apps/proxy-auth/src/app/app.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { environment } from '../environments/environment'; -import { StoreDevtoolsModule } from '@ngrx/store-devtools'; -import { AppComponent } from './app.component'; -import { ElementModule } from './element.module'; -import { NgHcaptchaModule } from 'ng-hcaptcha'; - -let conditional_imports = []; -if (environment.production) { - conditional_imports = []; -} else { - conditional_imports.push( - StoreDevtoolsModule.instrument({ - maxAge: 25, - serialize: true, - }) - ); -} -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - BrowserAnimationsModule, - ElementModule, - NgHcaptchaModule.forRoot({ - siteKey: environment.hCaptchaSiteKey, - }), - ...conditional_imports, - ], - bootstrap: [AppComponent], -}) -export class AppModule {} diff --git a/apps/proxy-auth/src/app/element.module.ts b/apps/proxy-auth/src/app/element.module.ts deleted file mode 100644 index da1a3280..00000000 --- a/apps/proxy-auth/src/app/element.module.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { ApplicationRef, DoBootstrap, Injector, NgModule } from '@angular/core'; -import { createCustomElement, NgElement, WithProperties } from '@angular/elements'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { OtpModule } from './otp/otp.module'; -import { SendOtpComponent } from './otp/send-otp/send-otp.component'; -import { omit } from 'lodash-es'; -import { UserProfileComponent } from './otp/user-profile/user-profile.component'; -import { ConfirmationDialogComponent } from './otp/user-profile/user-dialog/user-dialog.component'; -import { interval } from 'rxjs'; -import { distinctUntilChanged, map } from 'rxjs/operators'; - -export const RESERVED_KEYS = ['referenceId', 'target', 'style', 'success', 'failure']; - -declare global { - interface Window { - initVerification: any; - intlTelInput: any; - showUserManagement: any; - hideUserManagement: any; - } -} - -// Global function to show user management component (sets isHidden to false) -window['showUserManagement'] = () => { - window.dispatchEvent(new CustomEvent('showUserManagement')); -}; - -// Global function to hide user management component (sets isHidden to true) -window['hideUserManagement'] = () => { - window.dispatchEvent(new CustomEvent('hideUserManagement')); -}; - -function documentReady(fn: any) { - // see if DOM is already available - if (document.readyState === 'complete' || document.readyState === 'interactive') { - // call on next available tick - setTimeout(fn, 1); - } else { - document.addEventListener('DOMContentLoaded', fn); - } -} - -window['initVerification'] = (config: any) => { - documentReady(() => { - const urlParams = new URLSearchParams(window.location.search); - const isRegisterFormOnlyFromParams = urlParams.get('isRegisterFormOnly') === 'true'; - const paramsData = { - ...(urlParams.get('first_name') && { firstName: urlParams.get('first_name') }), - ...(urlParams.get('last_name') && { lastName: urlParams.get('last_name') }), - ...(urlParams.get('email') && { email: urlParams.get('email') }), - ...(urlParams.get('signup_service_id') && { signupServiceId: urlParams.get('signup_service_id') }), - }; - if (config?.referenceId || config?.authToken || config?.showCompanyDetails) { - const findOtpProvider = document.querySelector('proxy-auth'); - if (findOtpProvider) { - document.body.removeChild(findOtpProvider); - } - const sendOtpElement = document.createElement('proxy-auth') as NgElement & WithProperties; - sendOtpElement.referenceId = config?.referenceId; - sendOtpElement.type = config?.type; - sendOtpElement.authToken = config?.authToken; - sendOtpElement.showCompanyDetails = config?.showCompanyDetails; - sendOtpElement.userToken = config?.userToken; - sendOtpElement.isRolePermission = config?.isRolePermission; - sendOtpElement.isPreview = config?.isPreview; - sendOtpElement.isLogin = config?.isLogin; - sendOtpElement.loginRedirectUrl = config?.loginRedirectUrl; - sendOtpElement.theme = config?.theme; - sendOtpElement.version = config?.version; - sendOtpElement.input_fields = config?.input_fields; - sendOtpElement.show_social_login_icons = config?.show_social_login_icons; - sendOtpElement.exclude_role_ids = config?.exclude_role_ids; - sendOtpElement.include_role_ids = config?.include_role_ids; - sendOtpElement.isHidden = config?.isHidden; - sendOtpElement.isRegisterFormOnly = config?.isRegisterFormOnly || isRegisterFormOnlyFromParams; - sendOtpElement.target = config?.target ?? '_self'; - sendOtpElement.css = config.style; - if (!config.success || typeof config.success !== 'function') { - throw Error('success callback function missing !'); - } - sendOtpElement.successReturn = config.success; - sendOtpElement.failureReturn = config.failure; - - // omitting keys which are not required in API payload; query params fill in missing values - sendOtpElement.otherData = { ...paramsData, ...omit(config, RESERVED_KEYS) }; - if (document.getElementById('proxyContainer') && config?.type !== 'user-management') { - document.getElementById('proxyContainer').append(sendOtpElement); - } else if (config?.type === 'user-management') { - // Master element always stays in body (hidden) for window events - sendOtpElement.style.display = 'none'; - sendOtpElement.setAttribute('data-master', 'true'); - document.body.append(sendOtpElement); - - // Helper to create a fresh configured element for the container - const createContainerElement = () => { - const el = document.createElement('proxy-auth') as NgElement & WithProperties; - el.referenceId = config?.referenceId; - el.type = config?.type; - el.authToken = config?.authToken; - el.showCompanyDetails = config?.showCompanyDetails; - el.userToken = config?.userToken; - el.isRolePermission = config?.isRolePermission; - el.isPreview = config?.isPreview; - el.isLogin = config?.isLogin; - el.loginRedirectUrl = config?.loginRedirectUrl; - el.theme = config?.theme; - el.version = config?.version; - el.input_fields = config?.input_fields; - el.show_social_login_icons = config?.show_social_login_icons; - el.exclude_role_ids = config?.exclude_role_ids; - el.include_role_ids = config?.include_role_ids; - el.isHidden = config?.isHidden; - el.target = config?.target ?? '_self'; - el.css = config.style; - el.successReturn = config.success; - el.failureReturn = config.failure; - el.otherData = omit(config, RESERVED_KEYS); - return el; - }; - - // Watch for container to appear/disappear - const containerCheck$ = interval(100).pipe( - map(() => document.getElementById('userProxyContainer')), - distinctUntilChanged() - ); - - containerCheck$.subscribe((targetContainer) => { - // Remove any existing container element (not the master) - const existingContainerElement = document.querySelector('proxy-auth:not([data-master])'); - if (existingContainerElement) { - existingContainerElement.remove(); - } - - if (targetContainer) { - // Container exists - create fresh element and append - targetContainer.append(createContainerElement()); - } - }); - } else if (document.getElementById('userProxyContainer')) { - document.getElementById('userProxyContainer').append(sendOtpElement); - } else { - document.getElementsByTagName('body')[0].append(sendOtpElement); - } - - window['libLoaded'] = true; - - // } else if (config?.authToken) { - // const findOtpProvider = document.querySelector('user-profile'); - // if (findOtpProvider) { - // document.body.removeChild(findOtpProvider); - // } - // const sendOtpElement = document.createElement('user-profile') as NgElement & - // WithProperties; - // sendOtpElement.authToken = config.authToken; - // sendOtpElement.target = config?.target ?? '_self'; - // sendOtpElement.css = config.style; - // if (!config.success || typeof config.success !== 'function') { - // throw Error('success callback function missing !'); - // } - // sendOtpElement.successReturn = config.success; - // sendOtpElement.failureReturn = config.failure; - - // // omitting keys which are not required in API payload - // // sendOtpElement.otherData = omit(config, RESERVED_KEYS); - - // document.getElementsByTagName('body')[0].append(sendOtpElement); - // window['libLoaded'] = true; - } else { - if (!config?.referenceId) { - throw Error('Reference Id is missing!'); - } else { - throw Error('Something went wrong!'); - } - } - }); -}; - -@NgModule({ - imports: [BrowserModule, BrowserAnimationsModule, OtpModule], - exports: [OtpModule], -}) -export class ElementModule implements DoBootstrap { - constructor(private injector: Injector) { - if (!customElements.get('proxy-auth')) { - const sendOtpComponent = createCustomElement(SendOtpComponent, { - injector: this.injector, - }); - customElements.define('proxy-auth', sendOtpComponent); - } - - // if (!customElements.get('user-profile')) { - // const userProfileComponent = createCustomElement(UserProfileComponent, { - // injector: this.injector, - // }); - // customElements.define('user-profile', userProfileComponent); - // } - } - - ngDoBootstrap(appRef: ApplicationRef) { - if (!customElements.get('proxy-auth')) { - const sendOtpComponent = createCustomElement(SendOtpComponent, { - injector: this.injector, - }); - customElements.define('proxy-auth', sendOtpComponent); - } - // if (!customElements.get('user-details')) { - // const userProfileComponent = createCustomElement(UserProfileComponent, { - // injector: this.injector, - // }); - // customElements.define('user-details', userProfileComponent); - // } - } -} diff --git a/apps/proxy-auth/src/app/otp/component/login/login.component.html b/apps/proxy-auth/src/app/otp/component/login/login.component.html deleted file mode 100644 index 42ec7708..00000000 --- a/apps/proxy-auth/src/app/otp/component/login/login.component.html +++ /dev/null @@ -1,257 +0,0 @@ -
    - - -
    -
    -
    Login
    - - Email or Mobile - - Email or Mobile number is required. - - Note: Please enter your Mobile number with the country code (e.g. - 91) - - - - - -
    - - - - - - - - - -
    - -
    - {{ apiError | async }} -
    - -
    - -
    -
    Reset Password
    - - -
    - {{ apiError | async }} -
    - - -
    - -
    -
    Change Password
    - - - - - - - - - Password - - - - password is required. - - Min required length is {{ minLengthError?.requiredLength }} - - Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol - - - - -
    - {{ apiError | async }} -
    - -
    - - - - {{ label }} - - - {{ label }} is required. - {{ - patternError ? patternError : 'Enter valid ' + label - }} - - Min required length is {{ minLengthError?.requiredLength }} - - Whitespace not allowed - {{ label }} mismatch - - {{ hint }} - - - - - - - - - - - - - - diff --git a/apps/proxy-auth/src/app/otp/component/login/login.component.scss b/apps/proxy-auth/src/app/otp/component/login/login.component.scss deleted file mode 100644 index 63cea40e..00000000 --- a/apps/proxy-auth/src/app/otp/component/login/login.component.scss +++ /dev/null @@ -1,169 +0,0 @@ -.text-style { - font-size: 12px; - line-height: 18px; -} -.input-width { - width: 100%; -} - -.login-btn { - display: flex; - flex-direction: column; - gap: 16px; - font-size: medium; - font-weight: 600; - .forgot-password { - text-align: right; - } -} -a, -p { - font-size: small; - font-weight: 400; - margin: 0px; -} -.user-info { - font-size: medium; -} -.error-message { - font-size: 14px; - color: #f44336; - margin-bottom: 16px; -} -.close-dialog { - position: absolute; - top: 16px; - width: 20px; - height: 20px; - line-height: 20px; - - @media only screen and (max-width: 768px) { - position: fixed; - } -} -.back-button { - left: 16px; -} -.close-button { - right: 16px; -} - -.dark-theme { - .back-button svg { - fill: #ffffff; - } - .close-button svg path { - fill: #ffffff; - } -} -.heading { - font-size: 16px; - line-height: 20px; - font-weight: 600; - margin-bottom: 16px; -} -.subheading { - @extend .text-style; - font-weight: 600; -} - -.note { - @extend .text-style; - margin-bottom: 16px; -} - -.mat-icon-button { - vertical-align: text-bottom; -} - -.resize-icon { - position: relative; - top: 2px; -} -.password-field { - @extend .input-width; - padding-bottom: 4px; -} -.login-field { - @extend .input-width; - margin-top: 16px; -} -.loader { - display: flex; - align-items: center; - justify-content: center; -} - -.hcaptcha-container { - width: 100%; - display: flex; - justify-content: center; - padding: 8px 0; -} - -// Dark theme — mat-form-field overrides (mirrors register.component.scss pattern) -:host ::ng-deep .dark-theme-login { - .mat-mdc-text-field-wrapper, - .mdc-text-field--outlined { - background-color: transparent !important; - } - - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: #ffffff !important; - } - - .mat-mdc-form-field-flex { - background-color: transparent !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label, - .mat-mdc-form-field .mdc-floating-label { - color: #ffffff !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input, - .mat-mdc-input-element { - color: #ffffff !important; - } - - // Legacy Material outline fields - .mat-form-field-appearance-outline { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: #ffffff !important; - } - - &.mat-form-field-invalid { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: red !important; - } - } - } - - .mat-form-field-flex { - background-color: transparent !important; - } - - .mat-input-element { - color: #ffffff !important; - } - - .mat-form-field-label { - color: #ffffff !important; - } - - // Hint text - .mat-hint, - .mat-mdc-form-field-hint, - .mat-mdc-form-field-hint-wrapper { - color: rgba(255, 255, 255, 0.7) !important; - } - - // Suffix icon (password toggle) - .mat-icon-button svg path { - fill: #ffffff; - } -} diff --git a/apps/proxy-auth/src/app/otp/component/register/register.component.html b/apps/proxy-auth/src/app/otp/component/register/register.component.html deleted file mode 100644 index a6fa3626..00000000 --- a/apps/proxy-auth/src/app/otp/component/register/register.component.html +++ /dev/null @@ -1,404 +0,0 @@ - -
    -
    Register
    - -
    -
    -
    -

    User Details

    -
    - - -
    - -
    - -
    - -
    -
    - - Verified - - - - -
    -
    - - - -
    - - -
    -
    - Note: - Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol -
    - -
    - Company Details (Optional) -
    - - - -
    -
    - - Error: - - {{ error }} -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    - - {{ label }} - - - - - - - - - - {{ label }} is required. - Min required length is 3 - - Start and End spaces are not allowed - - Min value required is {{ minError?.min }} - - - Max value allowed is {{ maxError?.max }} - - - Min required length is {{ minLengthError?.requiredLength }} - - - Max allowed length is {{ maxLengthError?.requiredLength }} - - - {{ patternError ? patternError : 'Enter valid ' + label }} - - {{ label }} mismatch - - {{ hint }} - - - - - -
    -
    - - -
    - -
    - - Please enter valid mobile number - - - Please verify the mobile number -
    -
    -
    - - - - - - - - - - - - diff --git a/apps/proxy-auth/src/app/otp/component/register/register.component.scss b/apps/proxy-auth/src/app/otp/component/register/register.component.scss deleted file mode 100644 index bc72e341..00000000 --- a/apps/proxy-auth/src/app/otp/component/register/register.component.scss +++ /dev/null @@ -1,459 +0,0 @@ -:host { - min-height: 100px; - display: flex; - flex-direction: column; - justify-content: flex-start; - text-align: start; - - .close-dialog { - position: absolute; - right: 16px; - top: 16px; - width: 20px; - height: 20px; - line-height: 20px; - - @media only screen and (max-width: 768px) { - position: fixed; - } - } - - .input-filed-wrapper { - display: flex; - justify-content: center; - flex-direction: column; - position: relative; - } - - .login-toggle { - margin-top: 24px; - font-size: 13px; - } - - @media only screen and (max-width: 768px) { - width: 100%; - } -} - -.error-message { - font-size: 14px; - color: #f44336; -} - -.success-message { - color: #4caf50 !important; - font-size: 12px; - display: flex; - gap: 4px; - align-items: center; -} - -#init-contact { - padding-left: 50px; - height: 36px; - line-height: 36px; -} - -#error { - position: absolute; - top: 30px; - left: 0; - right: 0; - font-size: 12px; - color: #f44336; - text-align: left; -} - -/* Firefox hide */ -input[matinput][type='number'] { - appearance: textfield; - -moz-appearance: textfield; -} - -/* Chrome, Safari, Edge, Opera */ -input[matinput]::-webkit-outer-spin-button, -input[matinput]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -#country-code-number-info { - margin: 0; - // padding: 4px 8px; - font-size: 12px; - text-align: left; - color: #5d6164; - height: 14px; - margin-top: 24px; -} - -.form-wrapper { - width: 100%; - display: flex; - flex-direction: column; - align-items: flex-start; - justify-content: flex-start; - - .one-line { - display: flex; - width: 100%; - gap: 16px; - align-items: baseline; - @media only screen and (max-width: 768px) { - flex-wrap: wrap; - gap: 0px; - } - } - - .subheading { - margin-bottom: 16px; - } -} - -.submit-wrapper { - width: 100%; - display: flex; - justify-content: space-between; - align-items: flex-end; - gap: 8px !important; - .submit-btn { - margin-left: auto; - } -} - -.heading { - font-size: 16px; - line-height: 20px; - font-weight: 600; -} - -.subheading { - font-size: 14px; - line-height: 18px; - font-weight: 500; -} - -.note { - font-size: 14px; - line-height: 18px; - margin-bottom: 16px; -} - -.dialog-header { - .heading { - position: absolute; - top: 18px; - } -} - -.register-user-details { - width: 100%; - margin-bottom: 30px; - box-sizing: content-box; - #init-contact-user, - #init-contact-company { - border: 0px !important; - } - .invalid-input { - outline: 2px solid #f44336; - } -} -.otp-verification-content { - padding-bottom: 16px; -} -.toggle-icon { - top: 12px; - right: 10px; -} -.register-user-details-formfield { - width: 100%; - box-sizing: content-box; - #init-contact-user, - #init-contact-company { - border: 0px !important; - } - .invalid-input { - outline: 2px solid #f44336; - } -} - -.otp-section { - margin-top: 16px; - padding: 16px; - border: 1px solid #e0e0e0; - border-radius: 8px; - background-color: #fafafa; - - .otp-actions { - display: flex; - justify-content: flex-start; - align-items: center; - margin-top: 16px; - gap: 8px; - - @media only screen and (max-width: 768px) { - flex-direction: column; - align-items: stretch; - - button { - margin-left: 0 !important; - margin-bottom: 8px; - } - } - } -} -.otp-container { - display: flex; - gap: 10px; - .otp-input { - width: 30px; - height: 30px; - border: 1px solid #e0e0e0; - border-radius: 4px; - text-align: center; - font-size: 16px; - font-weight: 500; - } -} - -.otp-error-message { - color: #f44336; - font-size: 12px; - margin-top: 8px; - text-align: center; -} - -.resend-otp-container { - margin-top: 8px; - text-align: center; - - .resend-otp-link { - color: #1976d2; - text-decoration: none; - font-size: 14px; - cursor: pointer; - transition: color 0.3s ease; - - &:hover:not(.disabled) { - color: #1565c0; - text-decoration: underline; - } - - &.disabled { - color: #9e9e9e; - cursor: not-allowed; - text-decoration: none; - } - } -} -.otp-verify-section { - margin-bottom: 10px; -} -.otp-verify-btn { - margin-block: -12px 15px; -} -.company-details { - width: 100%; - border-top-width: 3px !important; - margin-bottom: 20px; -} -.one-line-mobile { - margin-bottom: 0px !important; -} -.verify-otp-link { - font-size: 12px; -} - -.form-wrapper.custom-radius { - --mdc-outlined-text-field-container-shape: var(--field-border-radius, 4px); - --mdc-filled-text-field-container-shape: var(--field-border-radius, 4px); - --mat-form-field-container-shape: var(--field-border-radius, 4px); - --mdc-shape-small: var(--field-border-radius, 4px); -} - -:host ::ng-deep .form-wrapper.custom-radius { - .mat-mdc-text-field-wrapper, - .mdc-text-field--outlined { - border-radius: var(--field-border-radius, 4px) !important; - } - - .mdc-notched-outline__leading { - border-radius: var(--field-border-radius, 4px) 0 0 var(--field-border-radius, 4px) !important; - width: var(--field-border-radius, 4px) !important; - } - - .mdc-notched-outline__trailing { - border-radius: 0 var(--field-border-radius, 4px) var(--field-border-radius, 4px) 0 !important; - } - - .mat-form-field-outline-start { - border-radius: var(--field-border-radius, 4px) 0 0 var(--field-border-radius, 4px) !important; - width: var(--field-border-radius, 4px) !important; - } - - .mat-form-field-outline-end { - border-radius: 0 var(--field-border-radius, 4px) var(--field-border-radius, 4px) 0 !important; - } - - .mat-form-field-wrapper, - .mat-form-field-flex, - .mat-mdc-form-field-flex { - border-radius: var(--field-border-radius, 4px) !important; - } - - .mat-mdc-raised-button, - .mat-mdc-flat-button, - .mat-mdc-unelevated-button, - .mat-raised-button, - .mat-flat-button { - border-radius: var(--field-border-radius, 4px) !important; - } - - .register-user-details { - .iti { - border-radius: var(--field-border-radius, 4px) !important; - } - - input[type='tel'] { - border-radius: var(--field-border-radius, 4px) !important; - } - } -} -.register-user-details { - border-radius: var(--field-border-radius, 4px) !important; -} - -// Dark theme styles -.dark-text { - color: #ffffff !important; - - a { - color: #ffffff !important; - } -} - -.dark-divider { - border-top-color: #ffffff !important; -} - -:host ::ng-deep .form-wrapper.dark-theme-login { - .mat-mdc-text-field-wrapper, - .mdc-text-field--outlined { - background-color: transparent !important; - } - - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: #ffffff !important; - } - - .mat-mdc-form-field-flex { - background-color: transparent !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label, - .mat-mdc-form-field .mdc-floating-label { - color: #ffffff !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input, - .mat-mdc-input-element { - color: #ffffff !important; - } - - // Legacy Material — use `color` on outline containers so children - // inherit via `currentColor`, preserving the gap's transparent top border - .mat-form-field-appearance-outline { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: #ffffff !important; - } - - &.mat-form-field-invalid { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: red !important; - } - } - } - - .mat-form-field-flex { - background-color: transparent !important; - } - - .mat-input-element { - color: #ffffff !important; - } - - .mat-form-field-label { - color: #ffffff !important; - } - - .register-user-details { - input[type='tel'], - [id^='init-contact'] { - border-color: #ffffff !important; - color: #ffffff !important; - background-color: #616161 !important; - - &::placeholder { - color: rgba(255, 255, 255, 0.7) !important; - } - } - - .iti__selected-flag { - background-color: #616161 !important; - } - - .iti__arrow { - border-top-color: #ffffff; - } - - .iti__dial-code { - color: #ffffff !important; - } - - .iti--allow-dropdown { - .iti__flag-container { - .iti__country-list { - background-color: #616161 !important; - - .iti__country:hover, - .iti__country.iti__highlight { - background-color: #757575 !important; - } - - .iti__country { - .iti__country-name { - color: #ffffff !important; - } - } - } - } - } - } -} -:host ::ng-deep .form-wrapper { - .register-user-details { - .iti--allow-dropdown { - .iti__flag-container { - .iti__selected-flag { - border-top-left-radius: var(--field-border-radius, 4px) !important; - border-bottom-left-radius: var(--field-border-radius, 4px) !important; - } - } - } - } -} - -// Custom button hover color applied via --btn-hover-color CSS property. -// .has-hover-color is only added when buttonHoverColor is truthy. -.has-hover-color:hover:not([disabled]) { - background-color: var(--btn-hover-color) !important; - - .mdc-button__ripple::before, - .mat-mdc-button-ripple::before { - opacity: 0 !important; - } -} diff --git a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.html b/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.html deleted file mode 100644 index 698b6836..00000000 --- a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.html +++ /dev/null @@ -1,549 +0,0 @@ - - -
    - - - - - -
    - Logo -
    -
    -
    {{ titleText }}
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No Service Enabled - -
    -
    - - - - - -
    -
    - Or continue with - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.scss b/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.scss deleted file mode 100644 index 48487d67..00000000 --- a/apps/proxy-auth/src/app/otp/component/send-otp-center/send-otp-center.component.scss +++ /dev/null @@ -1,439 +0,0 @@ -:host { - width: 316px; - min-height: 100px; - display: flex; - flex-direction: column; - justify-content: center; - .close-dialog { - position: absolute; - right: 16px; - top: 16px; - width: 20px; - height: 20px; - line-height: 20px; - @media only screen and (max-width: 768px) { - position: fixed; - } - } - .input-filed-wrapper { - display: flex; - justify-content: center; - flex-direction: column; - position: relative; - } - .login-toggle { - margin-top: 24px; - font-size: 13px; - } -} - -#init-contact { - padding-left: 50px; - height: 36px; - line-height: 36px; -} - -#error { - position: absolute; - top: 30px; - left: 0; - right: 0; - font-size: 12px; - color: #f44336; - text-align: left; -} - -/* Firefox hide */ -input[matinput][type='number'] { - -moz-appearance: textfield; -} -/* Chrome, Safari, Edge, Opera */ -input[matinput]::-webkit-outer-spin-button, -input[matinput]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -#country-code-number-info { - margin: 0; - // padding: 4px 8px; - font-size: 12px; - text-align: left; - color: #5d6164; - height: 14px; - margin-top: 24px; -} -.create-account { - font-size: small; - font-weight: 400; - margin-top: 16px; -} - -// Login section styles -.login-section { - width: 100%; -} - -.login-section.custom-radius { - --mdc-outlined-text-field-container-shape: var(--field-border-radius, 8px); - --mdc-filled-text-field-container-shape: var(--field-border-radius, 8px); - --mat-form-field-container-shape: var(--field-border-radius, 8px); - --mdc-shape-small: var(--field-border-radius, 8px); - - ::ng-deep { - .mat-mdc-text-field-wrapper, - .mdc-text-field--outlined { - border-radius: var(--field-border-radius, 8px) !important; - } - - .mdc-notched-outline__leading { - border-radius: var(--field-border-radius, 8px) 0 0 var(--field-border-radius, 8px) !important; - width: var(--field-border-radius, 8px) !important; - } - - .mdc-notched-outline__trailing { - border-radius: 0 var(--field-border-radius, 8px) var(--field-border-radius, 8px) 0 !important; - } - - // Legacy Material - .mat-form-field-outline-start { - border-radius: var(--field-border-radius, 8px) 0 0 var(--field-border-radius, 8px) !important; - width: var(--field-border-radius, 8px) !important; - } - - .mat-form-field-outline-end { - border-radius: 0 var(--field-border-radius, 8px) var(--field-border-radius, 8px) 0 !important; - } - - .mat-form-field-wrapper, - .mat-form-field-flex { - border-radius: var(--field-border-radius, 8px) !important; - } - - .mat-mdc-raised-button, - .mat-mdc-flat-button, - .mat-mdc-unelevated-button, - .mat-raised-button, - .mat-flat-button { - border-radius: var(--field-border-radius, 8px) !important; - } - } -} - -.logo-container { - width: 100%; - display: flex; - justify-content: center; - margin-bottom: 12px; -} - -.logo-image { - max-height: 48px; - max-width: 200px; - object-fit: contain; -} - -.heading { - font-size: 16px; - line-height: 20px; - font-weight: 600; - margin-bottom: 16px; -} - -.input-width { - width: 100%; -} - -.login-field { - width: 100%; - margin-top: 16px; - - .mat-icon-button { - height: 40px; - width: 40px; - line-height: 40px; - } -} - -.login-btn { - display: flex; - flex-direction: column; - gap: 16px; - font-size: medium; - font-weight: 600; - margin-top: 16px; -} - -.error-message { - font-size: 14px; - color: #f44336; - margin-bottom: 16px; -} - -.resize-icon { - display: flex; - align-items: center; - justify-content: center; - height: 40px; - width: 40px; - margin-right: -8px; - - svg { - display: block; - } -} - -.loader { - display: flex; - align-items: center; - justify-content: center; - gap: 8px; -} - -.subheading { - font-size: 12px; - line-height: 18px; - font-weight: 600; -} - -.note { - font-size: 12px; - line-height: 18px; -} - -.divider-container { - display: flex; - align-items: center; - margin: 10px 0; - width: 100%; -} - -.divider-line { - flex: 1; - height: 1px; - background-color: #e0e0e0; -} - -.divider-text { - padding: 0 16px; - font-size: 12px; - color: #5d6164; - font-weight: 500; -} - -a { - font-size: small; - font-weight: 400; - margin: 0px; -} - -p { - font-size: small; - font-weight: 400; - margin: 0px; -} - -.hcaptcha-container { - width: 100%; - display: flex; - justify-content: center; -} -.forgot-password { - text-align: right; -} - -.back-button { - position: absolute; - left: 16px; - top: 16px; - width: 20px; - height: 20px; - line-height: 20px; - @media only screen and (max-width: 768px) { - position: fixed; - } -} - -.user-info { - font-size: 14px; - color: #333; - margin-bottom: 8px; - - a { - margin-left: 8px; - color: #1976d2; - cursor: pointer; - &:hover { - text-decoration: underline; - } - } -} - -// Auth option buttons (Continue with Google, etc.) -.auth-option-btn { - width: 100%; - height: 44px; - border: 1px solid #7d7c7c !important; - border-radius: 8px; - font-size: 14px; - font-weight: 600; - background-color: #fff !important; - display: flex; - align-items: center; - justify-content: center; -} - -.auth-option-content { - display: flex; - align-items: center; - justify-content: flex-start; - width: 180px; -} - -.auth-option-icon { - height: 20px; - width: 20px; - min-width: 20px; - margin-right: 12px; -} - -.auth-option-text { - white-space: nowrap; -} - -// Social icons row (icon-only mode) -.social-icons-row { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - gap: 16px; - width: 100%; - margin: 8px 0 16px 0; -} - -.auth-icon-btn { - padding: 16px !important; - min-width: 56px !important; - width: 56px !important; - height: 56px !important; - border: 1px solid #d1d5db !important; - border-radius: 8px; - background-color: #fff !important; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - transition: border-color 0.2s ease, box-shadow 0.2s ease; - - &:hover { - border-color: #9ca3af !important; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); - } -} - -.auth-icon-only { - height: 24px; - width: 24px; - object-fit: contain; -} - -// Dark theme styles -.dark-text { - color: #ffffff !important; - - a { - color: #ffffff !important; - } -} - -.dark-theme-login { - ::ng-deep { - .mat-mdc-text-field-wrapper, - .mdc-text-field--outlined { - background-color: transparent !important; - } - - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: #ffffff !important; - } - - .mat-mdc-form-field-flex { - background-color: transparent !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label, - .mat-mdc-form-field .mdc-floating-label { - color: #ffffff !important; - } - - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input, - .mat-mdc-input-element { - color: #ffffff !important; - } - - // Legacy Material — set `color` on outline containers so children - // inherit it via `border-color: currentColor`. Angular Material's own - // `border-top-color: transparent` on the gap when the label floats - // has higher specificity and remains unaffected. - .mat-form-field-appearance-outline { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: #ffffff !important; - } - - &.mat-form-field-invalid { - .mat-form-field-outline, - .mat-form-field-outline-thick { - color: red !important; - } - } - } - - .mat-form-field-flex { - background-color: transparent !important; - } - - .mat-input-element { - color: #ffffff !important; - } - - .mat-form-field-label { - color: #ffffff !important; - } - } -} - -.auth-option-btn.dark-theme { - background-color: transparent !important; - border-color: #ffffff !important; -} - -.auth-option-icon.dark-invert, -.auth-icon-only.dark-invert { - filter: invert(1); -} - -.auth-option-text.dark-theme { - color: #ffffff; -} - -.auth-icon-btn.dark-theme { - background-color: transparent !important; - border-color: #ffffff !important; -} - -// Custom button hover color applied via --btn-hover-color CSS property. -// The .has-hover-color class is only added when buttonHoverColor is truthy, -// so this rule is a no-op when the preference is not configured. -.has-hover-color:hover:not([disabled]) { - background-color: var(--btn-hover-color) !important; - - // Suppress Material's default state-layer ripple so it doesn't wash over the custom color - .mdc-button__ripple::before, - .mat-mdc-button-ripple::before { - opacity: 0 !important; - } -} diff --git a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.html b/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.html deleted file mode 100644 index c4d671b8..00000000 --- a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.html +++ /dev/null @@ -1,145 +0,0 @@ -
    - - -
    -
    -
    - - -
    - -

    {{ plan.title }}

    - - -
    -
    - {{ plan.priceValue }} - {{ plan.currency }} -
    -
    - - - - - -
    - {{ plan.buttonText }} -
    - -
    -
    - - -
    -

    Included

    -
    -
    {{ metric }}
    -
    -
    - - -
    -

    Features

    -
      - -
    • - - - - - - {{ feature }} -
    • - -
    • - - - - - - {{ feature }} -
    • -
    -
    - - -
    -

    Extra

    -
      -
    • - - - - - - {{ extraFeature }} -
    • -
    -
    -
    -
    -
    -
    diff --git a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.scss b/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.scss deleted file mode 100644 index aed16403..00000000 --- a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.scss +++ /dev/null @@ -1,399 +0,0 @@ -@import url('https://unpkg.com/@angular/material@14.2.7/prebuilt-themes/indigo-pink.css'); -@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); - -.container { - background: #ffffff !important; - padding: 20px; - text-align: left; - position: relative; - height: 100vh; - width: 100vw; - font-family: 'Outfit', sans-serif; - z-index: 1; - flex-direction: column; - overflow-y: auto; - box-sizing: border-box; -} - -/* When used in dialog, override the positioning */ -:host-context(.subscription-center-dialog) .container { - position: relative !important; - top: auto !important; - left: auto !important; - right: auto !important; - bottom: auto !important; - height: 100% !important; - width: 100% !important; - max-height: 700px !important; - max-width: 900px !important; -} - -/* Dialog-specific styling for better layout */ -:host-context(.subscription-center-dialog) { - .subscription-plans-container { - padding: 10px !important; - height: calc(100% - 40px) !important; - } - - .plans-grid { - justify-content: space-around !important; - // align-items: flex-start !important; - } - - .plan-card { - flex: 0 0 280px !important; - margin: 10px !important; - } -} - -// Subscription Plans Styles -.subscription-plans-container { - flex: 1; - display: flex; - flex-direction: column; - align-items: stretch; - justify-content: flex-start; - padding: 20px; - min-height: auto; - overflow-y: visible; - font-family: 'Outfit', sans-serif; -} - -.plans-grid { - display: flex; - flex-direction: row; - gap: 20px; - width: 100%; - max-width: 100%; - margin: 0; - align-items: flex-start; - padding: 0 0 0 20px; - overflow-x: auto; - // overflow-y: hidden; - - // Custom scrollbar styling - &::-webkit-scrollbar { - height: 8px; - } - - &::-webkit-scrollbar-track { - background: #f1f1f1; - border-radius: 4px; - } - - &::-webkit-scrollbar-thumb { - background: #c1c1c1; - border-radius: 4px; - - &:hover { - background: #a8a8a8; - } - } - - // Responsive behavior for smaller screens - @media (max-width: 1200px) { - gap: 15px; - padding: 15px; - } - - @media (max-width: 768px) { - flex-direction: column; - align-items: center; - gap: 20px; - overflow-x: visible; - overflow-y: auto; - } -} - -// Ensure highlighted border is always visible -.plan-card.highlighted { - border: 2px solid #000000 !important; - box-shadow: 0 0 0 0px #000000 !important; -} - -.plan-card { - background: #ffffff; - border: 2px solid #e6e6e6; - border-radius: 4px; - padding: 26px 24px; - transition: all 0.3s ease; - box-shadow: none; - min-width: 250px; - max-width: 350px; - width: 350px; - flex: 1; - display: flex; - flex-direction: column; - justify-content: flex-start; - min-height: auto; - max-height: none; - overflow: visible; - min-height: 348px; - font-family: 'Outfit', sans-serif; -} - -// Dark mode support for plan cards -:host-context(.dark-theme) .plan-card { - background: var(--color-common-slate); - border: 1px solid var(--color-common-border); - color: var(--color-common-text); - - &:hover { - transform: translateY(-8px); - box-shadow: none; - } - - &.popular { - transform: scale(1.02); - - &:hover { - transform: scale(1.02) translateY(-8px); - } - } - - &.highlighted { - border: 2px solid #000000 !important; - box-shadow: 0 0 0 0px #000000 !important; - } -} - -// Dark mode support for highlighted cards -:host-context(.dark-theme) .plan-card.highlighted { - border: 2px solid var(--color-common-text) !important; - box-shadow: 0 0 0 2px var(--color-common-text) !important; - - // Mobile responsive - @media (max-width: 768px) { - min-width: 100%; - max-width: 400px; - width: 100%; - padding: 30px 20px; - - &.popular { - transform: none; - - &:hover { - transform: translateY(-8px); - } - } - } -} - -.popular-badge { - position: absolute; - top: -12px; - right: 20px; - background: #4d4d4d; - color: #ffffff; - padding: 6px 16px; - border-radius: 20px; - font-size: var(--font-size-12); - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.5px; -} - -.plan-title { - font-size: var(--font-size-28); - font-weight: 700; - color: var(--color-common-slate); - @media (max-width: 768px) { - font-size: 24px; - } -} - -.plan-price { - .price-container { - display: flex; - align-items: flex-start; - gap: 6px; - } - - .price-number { - font-size: 39px; - font-weight: 700; - color: #4d4d4d; - line-height: 1; - - @media (max-width: 768px) { - font-size: 42px; - } - } - - .price-currency { - font-size: 16px; - font-weight: 400; - color: #666666; - line-height: 1; - margin-top: 4px; - margin-left: 4px; - - @media (max-width: 768px) { - font-size: 14px; - } - } - - .price-period { - font-size: 18px; - color: #666666; - font-weight: 500; - - @media (max-width: 768px) { - font-size: 16px; - } - } -} - -.plan-description { - .description-text { - font-size: 14px; - color: #666666; - font-style: italic; - } -} - -.included-resources { - .resource-boxes { - display: flex; - flex-direction: column; - gap: 8px; - margin-top: 6px; - } - - .resource-box { - border-radius: 4px; - padding: 4px 2px; - font-size: 14px; - font-weight: 600; - color: #4d4d4d; - text-align: left; - } -} - -.section-title { - font-size: 18px; - font-weight: 600; - color: #333333; - margin: 0 0 8px 0; -} - -.plan-features { - list-style: none; - - .feature-item { - padding: 4px 0 !important; - margin-bottom: 0px !important; - color: #4d4d4d; - font-size: 14px; - font-weight: 600; - // padding-left: 20px; - - .feature-icon { - font-weight: bold; - font-size: 14px; - color: #22c55e; - } - } -} - -.plan-button { - width: 65%; - padding: 6px 6px; - border-radius: 4px; - font-size: 15px; - font-weight: 400; - font-family: 'Outfit', sans-serif; - cursor: pointer; - transition: all 0.3s ease; - border: 1px solid; - margin-top: auto; - - &.primary { - background: #4d4d4d; - color: #ffffff; - border-color: #4d4d4d; - font-weight: 700; - - &:hover { - background: #333333; - border-color: #333333; - } - } - - &.secondary { - background: #ffffff; - color: #4d4d4d; - border-color: #4d4d4d; - - &:hover { - background: #f8f9fa; - } - } - - @media (max-width: 768px) { - padding: 14px 28px; - font-size: 16px; - } -} - -.plan-button-hidden { - padding: 16px 32px; - border-radius: 12px; - font-size: 18px; - font-weight: 600; - font-family: 'Outfit', sans-serif; - background: #f8f9fa; - color: #6c757d; - border: 2px solid #e9ecef; - margin-top: auto; - cursor: not-allowed; - - @media (max-width: 768px) { - padding: 14px 28px; - font-size: 16px; - } -} - -.close-dialog { - position: absolute; - top: 16px; - right: 16px; - z-index: 1000; - - svg { - width: 12px; - height: 12px; - } -} - -.divider { - height: 1px; - background: #e0e0e0; -} -:host { - min-height: 100px; - display: flex; - flex-direction: column; - justify-content: center; - .close-dialog { - position: absolute; - right: 16px; - top: 16px; - width: 20px; - height: 20px; - line-height: 20px; - @media only screen and (max-width: 768px) { - position: fixed; - } - } - .input-filed-wrapper { - display: flex; - justify-content: center; - flex-direction: column; - position: relative; - } - .login-toggle { - margin-top: 24px; - font-size: 13px; - } -} diff --git a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.ts b/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.ts deleted file mode 100644 index 59aef063..00000000 --- a/apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { Component, Input, OnInit, Output, EventEmitter, Inject, Optional } from '@angular/core'; -import { select, Store } from '@ngrx/store'; -import { IAppState } from '../../store/app.state'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { distinctUntilChanged, Observable, takeUntil } from 'rxjs'; -import { isEqual } from 'lodash'; -import { subscriptionPlansData } from '../../store/selectors'; -import { getSubscriptionPlans } from '../../store/actions/otp.action'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; - -export interface SubscriptionPlan { - id: string; - title: string; - price: string; - priceValue: number; - currency: string; - period: string; - buttonText: string; - buttonStyle: string; - isPopular?: boolean; - isSelected?: boolean; - features?: string[]; - notIncludedFeatures?: string[]; - metrics?: string[]; - extraFeatures?: string[]; - status?: string; - subscribeButtonLink?: string; - subscribeButtonHidden?: boolean; -} - -@Component({ - selector: 'proxy-subscription-center', - templateUrl: './subscription-center.component.html', - styleUrls: ['./subscription-center.component.scss'], -}) -export class SubscriptionCenterComponent extends BaseComponent implements OnInit { - @Input() public referenceId: string; - @Output() public closeEvent = new EventEmitter(); - @Output() public planSelected = new EventEmitter(); - @Input() public isPreview: boolean = false; - @Output() public togglePopUp: EventEmitter = new EventEmitter(); - @Input() public isLogin: boolean; - @Input() public loginRedirectUrl: string; - - public subscriptionPlans$: Observable; - public subscriptionPlans: any[] = []; - - constructor( - private store: Store, - @Optional() public dialogRef: MatDialogRef, - @Optional() @Inject(MAT_DIALOG_DATA) public dialogData: any - ) { - super(); - - this.subscriptionPlans$ = this.store.pipe( - select(subscriptionPlansData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - } - - ngOnInit(): void { - this.subscriptionPlans$.pipe(takeUntil(this.destroy$)).subscribe((res: any) => { - if (res && res.data && Array.isArray(res.data)) { - this.subscriptionPlans = this.formatSubscriptionPlans(res.data); - } else { - this.subscriptionPlans = []; - } - }); - } - - private formatSubscriptionPlans(plans: any[]): any[] { - return plans.map((plan, index) => ({ - id: plan.planName?.toLowerCase().replace(/\s+/g, '-') || `plan-${index}`, - title: plan.plan_name || 'Unnamed Plan', - price: plan.plan_price || 'Free', - priceValue: this.extractPriceValue(plan.plan_price), - currency: this.extractCurrency(plan.plan_price), - period: 'per month', - buttonText: this.isLogin ? 'Upgrade' : 'Get Started', - buttonStyle: 'primary', - isPopular: plan.PlanMeta?.highlight_plan || false, - tag: plan.plan_meta?.tag || '', - isSelected: false, - features: plan.plan_meta?.features?.included || [], - notIncludedFeatures: plan.plan_meta?.features?.notIncluded || [], - metrics: plan.plan_meta?.metrics || [], - extraFeatures: plan.plan_meta?.extra || [], - status: 'active', - subscribeButtonLink: this.isLogin - ? plan.subscribe_button_link?.replace('{ref_id}', this.referenceId) - : this.loginRedirectUrl, - subscribeButtonHidden: false, - })); - } - - private extractPriceValue(priceString: string): number { - if (!priceString) return 0; - const match = priceString.match(/[\d.]+/); - return match ? parseFloat(match[0]) : 0; - } - - private extractCurrency(priceString: string): string { - if (!priceString) return ''; - const match = priceString.match(/[A-Z]{3}/); - return match ? match[0] : ''; - } - - private formatCharges(charges: any[]): string[] { - if (!charges || !Array.isArray(charges)) return []; - return charges.map((charge) => { - const quota = charge.quotas || ''; - const metricName = charge.billable_metric_name || ''; - return `${quota} ${metricName}`.trim(); - }); - } - - private getIncludedFeatures(charges: any[]): string[] { - if (!charges || !Array.isArray(charges)) return []; - return charges.map((charge) => { - const quota = charge.quotas || ''; - const metricName = charge.billable_metric_name || ''; - return `${quota} ${metricName}`.trim(); - }); - } - - public close(value: boolean): void { - this.closeEvent.emit(value); - this.togglePopUp.emit(); - - // Only close dialog if it exists and is still open - if (this.dialogRef && !this.dialogRef.disableClose) { - this.dialogRef.close(value); - } - } - - public selectPlan(plan: SubscriptionPlan): void { - // Update selection state - this.subscriptionPlans.forEach((p) => (p.isSelected = false)); - plan.isSelected = true; - - // Emit selected plan - this.planSelected.emit(plan); - - // Navigate to subscribe button link if available - if (plan.subscribeButtonLink) { - window.open(plan.subscribeButtonLink, '_blank'); - } - } -} diff --git a/apps/proxy-auth/src/app/otp/index.ts b/apps/proxy-auth/src/app/otp/index.ts deleted file mode 100644 index 710e14f1..00000000 --- a/apps/proxy-auth/src/app/otp/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { SendOtpComponent } from './send-otp/send-otp.component'; -export { OtpModule } from './otp.module'; diff --git a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.html b/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.html deleted file mode 100644 index f8f9037d..00000000 --- a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.html +++ /dev/null @@ -1,181 +0,0 @@ -
    -
    - - - - -
    -
    -
    - - - - - - Company Name -
    -
    {{ organizationForm.get('companyName')?.value || '—' }}
    -
    - -
    -
    - - - - - - Email -
    -
    {{ organizationForm.get('email')?.value || '—' }}
    -
    - -
    -
    - - - - - Phone Number -
    -
    {{ organizationForm.get('phoneNumber')?.value || '—' }}
    -
    - -
    -
    - - - - - - Timezone -
    -
    {{ organizationForm.get('timeZoneName')?.value || '—' }}
    -
    -
    - - -
    - - Company Name - - - Company name is required. - - - Company name must be at least 3 characters. - - - - - Email - - Email is required. - - Please enter a valid email. - - - - - Phone Number - - - Phone number must be 10–15 digits. - - - - - Timezone - - - {{ getTimezoneLabel(tz) }} - - - - Timezone is required. - - - - -
    - - -
    -
    -
    -
    diff --git a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.scss b/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.scss deleted file mode 100644 index b7659a2c..00000000 --- a/apps/proxy-auth/src/app/otp/organization-details/organization-details.component.scss +++ /dev/null @@ -1,393 +0,0 @@ -// ── Container ───────────────────────────────────────────────────────── -.container { - padding: 15px 60px; - text-align: left; - position: relative; - min-height: 600px; - height: 100vh; - width: 100%; - z-index: 10; - background: transparent; -} - -.organization-details-container { - padding: 0; - width: 100%; - max-width: 600px; - background: transparent; -} - -// ── Header ──────────────────────────────────────────────────────────── -.page-header { - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: wrap; - gap: 12px; - margin-bottom: 1.5rem; -} - -.page-title { - margin: 0; - font-size: 1.5rem; - font-weight: 600; -} - -.header-actions { - display: flex; - align-items: center; - gap: 8px; -} - -// Edit button — fully native, no mat-stroked-button dependency -.edit-btn { - display: inline-flex; - align-items: center; - gap: 6px; - font-family: Roboto, sans-serif; - font-size: 14px; - font-weight: 500; - letter-spacing: 0.03em; - padding: 6px 14px; - height: 36px; - border-radius: 4px; - cursor: pointer; - background: transparent; - transition: background 0.15s ease; - outline: none; -} - -// Cancel button — fully native, no mat-button dependency -.cancel-btn { - display: inline-flex; - align-items: center; - font-family: Roboto, sans-serif; - font-size: 14px; - font-weight: 500; - letter-spacing: 0.03em; - padding: 6px 14px; - height: 36px; - border-radius: 4px; - cursor: pointer; - background: transparent; - border: none; - transition: background 0.15s ease; - outline: none; - - &:disabled { - opacity: 0.5; - cursor: not-allowed; - } -} - -// Save button — fully native, no mat-flat-button dependency -.save-btn { - display: inline-flex; - align-items: center; - justify-content: center; - font-family: Roboto, sans-serif; - font-size: 14px; - font-weight: 500; - letter-spacing: 0.03em; - padding: 6px 20px; - height: 36px; - border-radius: 4px; - cursor: pointer; - border: none; - background: #1976d2; - color: #ffffff; - transition: background 0.15s ease; - outline: none; - - &:hover:not(:disabled) { - background: #1565c0; - } - &:disabled { - opacity: 0.6; - cursor: not-allowed; - } -} - -// ── View mode ───────────────────────────────────────────────────────── -.view-container { - border-radius: 8px; - overflow: hidden; - width: 100%; - max-width: 600px; - background: transparent; -} - -.field-row { - display: grid; - grid-template-columns: 160px 1fr; - align-items: center; - gap: 16px; - padding: 16px 20px; - border-bottom: 1px solid var(--field-border); - transition: background 0.15s ease; - - &:last-child { - border-bottom: none; - } - &:hover { - background: var(--field-row-hover); - } - - @media (max-width: 480px) { - grid-template-columns: 1fr; - gap: 4px; - padding: 12px 16px; - } -} - -.field-label { - display: flex; - align-items: center; - gap: 8px; - font-size: 13px; - color: var(--label-color); - white-space: nowrap; -} - -// Inline SVG button icon -.btn-icon { - width: 15px; - height: 15px; - flex-shrink: 0; -} - -// Inline SVG field icons -.field-icon { - width: 15px; - height: 15px; - flex-shrink: 0; - opacity: 0.5; - color: inherit; -} - -.field-value { - font-size: 14px; - color: var(--value-color); - word-break: break-all; - line-height: 1.4; -} - -// ── Edit form ───────────────────────────────────────────────────────── -.organization-form { - gap: 0.5rem; - width: 100%; - background: transparent; -} - -.full-width { - width: 100%; -} - -.form-actions { - display: flex; - justify-content: flex-end; - align-items: center; - gap: 8px; - margin-top: 8px; - width: 100%; -} - -// ── Light theme ─────────────────────────────────────────────────────── -.light-theme { - --field-border: rgba(0, 0, 0, 0.12); - --field-row-hover: rgba(0, 0, 0, 0.02); - --label-color: rgba(0, 0, 0, 0.5); - --value-color: rgba(0, 0, 0, 0.87); - - background: transparent !important; - - .page-title { - color: #000000; - } - - .view-container { - border: 1px solid rgba(0, 0, 0, 0.12); - } - - .edit-btn { - color: rgba(0, 0, 0, 0.7); - border: 1px solid rgba(0, 0, 0, 0.23); - &:hover { - background: rgba(0, 0, 0, 0.04); - } - } - - .cancel-btn { - color: rgba(0, 0, 0, 0.6); - &:hover { - background: rgba(0, 0, 0, 0.04); - } - } - - .save-btn { - background: #1976d2; - color: #ffffff; - } -} - -// ── Dark theme ──────────────────────────────────────────────────────── -.dark-theme { - --field-border: rgba(255, 255, 255, 0.15); - --field-row-hover: rgba(255, 255, 255, 0.04); - --label-color: rgba(255, 255, 255, 0.5); - --value-color: rgba(255, 255, 255, 0.87); - - background: transparent !important; - color: #ffffff !important; - - .page-title { - color: #ffffff !important; - } - - .view-container { - border: 1px solid rgba(255, 255, 255, 0.15); - } - - .edit-btn { - color: rgba(255, 255, 255, 0.8); - border: 1px solid rgba(255, 255, 255, 0.3); - &:hover { - background: rgba(255, 255, 255, 0.06); - } - } - - .cancel-btn { - color: rgba(255, 255, 255, 0.6); - &:hover { - background: rgba(255, 255, 255, 0.06); - } - } - - // Material form field overrides for dark inside ShadowDom - .mat-mdc-text-field-wrapper { - background-color: transparent !important; - } - .mat-mdc-input-element { - color: #ffffff !important; - } - .mat-mdc-floating-label { - color: #ffffff !important; - } - .mdc-floating-label { - color: #ffffff !important; - } - mat-label { - color: #ffffff !important; - } - .mat-mdc-form-field-flex .mdc-floating-label { - color: #ffffff !important; - } - .mat-mdc-form-field .mat-mdc-floating-label { - color: #ffffff !important; - } - .mdc-text-field--outlined .mdc-floating-label { - color: #ffffff !important; - } - .mat-form-field-label { - color: #ffffff !important; - } - .mat-form-field-outline { - color: rgba(255, 255, 255, 0.5) !important; - } - .mat-form-field .mat-input-element { - color: #ffffff !important; - } - .mat-form-field-hint-wrapper, - .mat-form-field-error-wrapper { - color: rgba(255, 255, 255, 0.7) !important; - } - - // mat-select: fix selected value + arrow color inside shadow root - // Material 14 legacy select uses .mat-select-value, .mat-select-value-text - .mat-select-value, - .mat-select-value-text, - .mat-select-value-text span { - color: #ffffff !important; - } - .mat-select-placeholder { - color: rgba(255, 255, 255, 0.42) !important; - } - .mat-select-arrow { - color: rgba(255, 255, 255, 0.7) !important; - } - .mat-select-arrow svg { - fill: rgba(255, 255, 255, 0.7) !important; - } - .mat-select-trigger { - color: #ffffff !important; - } - .mat-select-trigger .mat-select-value { - color: #ffffff !important; - } - - // MDC select (if used elsewhere) - .mat-mdc-select-value { - color: #ffffff !important; - } - .mat-mdc-select-value-text { - color: #ffffff !important; - } - .mat-mdc-select-value-text span { - color: #ffffff !important; - } - .mat-mdc-select-placeholder { - color: rgba(255, 255, 255, 0.42) !important; - } - .mat-mdc-select-arrow svg { - fill: rgba(255, 255, 255, 0.7) !important; - } - .mat-mdc-select-arrow { - color: rgba(255, 255, 255, 0.7) !important; - } - .mdc-text-field .mat-mdc-select-value { - color: #ffffff !important; - } - .mat-mdc-form-field .mat-mdc-select-value { - color: #ffffff !important; - } - - // Outline border color for select + input fields - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading, - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch, - .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing { - border-color: rgba(255, 255, 255, 0.3) !important; - } -} - -// ── Snackbars ───────────────────────────────────────────────────────── -::ng-deep .success-snackbar { - background-color: #59a75c !important; - color: #ffffff !important; - - .mat-mdc-snack-bar-label { - color: #ffffff !important; - } - .mat-button { - color: #ffffff !important; - } -} - -::ng-deep .error-snackbar { - background-color: #d32f2f !important; - color: #ffffff !important; - - .mat-snack-bar-label { - color: #ffffff !important; - } - .mat-button { - color: #ffffff !important; - } -} -.disabled { - opacity: 0.5; -} -.timezone-field { - .mat-select-arrow-wrapper { - height: unset; - } -} diff --git a/apps/proxy-auth/src/app/otp/otp.module.ts b/apps/proxy-auth/src/app/otp/otp.module.ts deleted file mode 100644 index d0c0e021..00000000 --- a/apps/proxy-auth/src/app/otp/otp.module.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { MatTableModule } from '@angular/material/table'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatSortModule } from '@angular/material/sort'; -import { CommonModule } from '@angular/common'; -import { HttpClientModule } from '@angular/common/http'; -import { NgModule } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatRippleModule } from '@angular/material/core'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatProgressBarModule } from '@angular/material/progress-bar'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; -import { MatRadioModule } from '@angular/material/radio'; -import { ProxyBaseUrls } from '@proxy/models/root-models'; -import { NgHcaptchaModule } from 'ng-hcaptcha'; - -import { EffectsModule } from '@ngrx/effects'; -import { StoreModule } from '@ngrx/store'; -import { DirectivesRemoveCharacterDirectiveModule } from '@proxy/directives/RemoveCharacterDirective'; - -import { environment } from '../../environments/environment'; -import { SendOtpCenterComponent } from './component'; -import { SendOtpComponent } from './send-otp/send-otp.component'; -import { OtpService } from './service/otp.service'; -import { reducers } from './store/app.state'; -import { OtpEffects } from './store/effects'; -import { ServicesHttpWrapperNoAuthModule } from '@proxy/services/http-wrapper-no-auth'; -import { OtpUtilityService } from './service/otp-utility.service'; -import { OtpWidgetService } from './service/otp-widget.service'; -import { RegisterComponent } from './component/register/register.component'; -import { DirectivesMarkAllAsTouchedModule } from '@proxy/directives/mark-all-as-touched'; -import { LoginComponent } from './component/login/login.component'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { UserProfileComponent } from './user-profile/user-profile.component'; -import { UserDialogModule } from './user-profile/user-dialog/user-dialog.module'; -import { MatCardModule } from '@angular/material/card'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatSelectModule } from '@angular/material/select'; -import { UserManagementComponent } from './user-management/user-management.component'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatSnackBarModule } from '@angular/material/snack-bar'; -import { MatTabsModule } from '@angular/material/tabs'; -import { SubscriptionCenterComponent } from './component/subscription-center/subscription-center.component'; -import { MatDialogModule } from '@angular/material/dialog'; -import { UiConfirmDialogModule } from '@proxy/ui/confirm-dialog'; -import { OrganizationDetailsComponent } from './organization-details/organization-details.component'; -import { OverlayContainer } from '@angular/cdk/overlay'; -import { ShadowDomOverlayContainer } from '../shadow-dom-overlay-container'; - -export const CHAT_COMPONENTS: any[] = [ - SendOtpComponent, - SendOtpCenterComponent, - RegisterComponent, - LoginComponent, - UserProfileComponent, - UserManagementComponent, - SubscriptionCenterComponent, - OrganizationDetailsComponent, -]; - -@NgModule({ - imports: [ - CommonModule, - HttpClientModule, - FormsModule, - MatIconModule, - MatButtonModule, - MatRippleModule, - MatDialogModule, - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule, - MatProgressSpinnerModule, - MatProgressBarModule, - MatRadioModule, - UiLoaderModule, - MatTableModule, - MatPaginatorModule, - MatSortModule, - UserDialogModule, - MatCardModule, - MatDividerModule, - MatSelectModule, - MatTooltipModule, - MatTabsModule, - MatSnackBarModule, - NgHcaptchaModule.forRoot({ - siteKey: environment.hCaptchaSiteKey, - }), - UiConfirmDialogModule, - - DirectivesRemoveCharacterDirectiveModule, - EffectsModule.forRoot([OtpEffects]), - StoreModule.forRoot(reducers, { - runtimeChecks: { - strictStateImmutability: true, - strictActionImmutability: true, - }, - }), - ServicesHttpWrapperNoAuthModule, - DirectivesMarkAllAsTouchedModule, - MatSnackBarModule, - ], - declarations: [...CHAT_COMPONENTS], - providers: [ - OtpService, - OtpUtilityService, - OtpWidgetService, - { provide: OverlayContainer, useClass: ShadowDomOverlayContainer }, - { provide: ProxyBaseUrls.Env, useValue: environment.env }, - { - provide: ProxyBaseUrls.BaseURL, - useValue: environment.apiUrl + environment.msgMidProxy, - }, - { - provide: ProxyBaseUrls.ClientURL, - useValue: environment.apiUrl + environment.msgMidProxy, - }, - ], - exports: [SendOtpComponent], -}) -export class OtpModule {} diff --git a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.html b/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.html deleted file mode 100644 index c49b891f..00000000 --- a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.html +++ /dev/null @@ -1,134 +0,0 @@ -
    -
    - - - - - -
    - - -
    - -
    - - - -
    diff --git a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.scss b/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.scss deleted file mode 100644 index 54eb5e5b..00000000 --- a/apps/proxy-auth/src/app/otp/send-otp/send-otp.component.scss +++ /dev/null @@ -1,70 +0,0 @@ -@import '~intl-tel-input/build/css/intlTelInput.css'; -@import '../../../intl.scss'; -@import '../../../otp-global.scss'; - -.container { - width: 100%; - height: auto; - flex-direction: column; - z-index: 1000; - justify-content: center; - align-items: center; - background: rgb(33 37 40 / 95%); - top: 0px !important; - bottom: 0px !important; - left: 0px !important; - right: 0px !important; -} - -.with-reference-id { - display: flex; - position: fixed; -} -.dark-theme { - background: transparent !important; -} -.light-theme { - background: rgb(33 37 40 / 95%); -} -.user-profile-mode:not(.dark-theme) { - background: #ffffff !important; -} -.user-management:not(.dark-theme) { - background: #ffffff !important; -} - -.without-reference-id { - display: block; - position: static; -} - -/* Subscription Center Dialog Styles */ -::ng-deep .subscription-center-dialog { - .mat-dialog-container { - padding: 0 !important; - border-radius: 8px; - overflow: hidden; - width: 900px !important; - height: 700px !important; - max-width: 900px !important; - max-height: 700px !important; - min-width: 900px !important; - min-height: 700px !important; - box-sizing: border-box; - } -} - -::ng-deep .subscription-dialog-backdrop { - background-color: rgba(0, 0, 0, 0.5); -} - -.subscription-preview-button { - display: flex; - justify-content: center; - align-items: center; - padding: 20px; - - button { - min-width: 200px; - } -} diff --git a/apps/proxy-auth/src/app/otp/user-management/user-management.component.html b/apps/proxy-auth/src/app/otp/user-management/user-management.component.html deleted file mode 100644 index 161baabe..00000000 --- a/apps/proxy-auth/src/app/otp/user-management/user-management.component.html +++ /dev/null @@ -1,669 +0,0 @@ -
    -
    -

    Members

    - - - - -
    - -
    -
    - - Search Member - - -
    -
    - -
    -
    - -
    - - -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    -
    - - - -
    -
    - - - -
    - -
    -
    -
    {{ user.role || 'User' }}
    -
    - -
    -
    - - -

    - Nothing Here, There are no Members to show -

    - - -
    -
    -
    - - - -
    - - - - -
    - -
    -
    - - Search Roles - - -
    -
    - -
    -
    - - -
    - - - - - - - - - - - - - -
    - Role - -
    - {{ element.name }} -
    -
    - Permissions - -
    -
    -
      -
    • - {{ permission.name }} -
    • -
    -
    -
    - No permissions assigned -
    -
    - -
    -
    -
    -

    No roles found

    - - -
    -
    -
    - - - -
    - -
    -
    -
    - - Search Permissions - - -
    -
    - -
    -
    - - -
    - - - - - - - - -
    - Permission - -
    -
    - {{ element.name }} -
    -
    - -
    -
    -
    -

    - No permissions found -

    - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -

    {{ getDialogTitle() }}

    - - -
    - - Role Name - - - Role name is required - - - - Permissions - - - {{ permission.name }} - - - - At least one permission is required - - - - Description - - -
    - - -
    - - Permission Name - - - Permission name is required - - - - - Description - - -
    - - -
    - - Name - - Name is required - - - - Email - - Email is required - - Please enter a valid email - - - - - Mobile Number - - - Please enter a valid mobile number with country code - - Note: Please enter mobile number with country code (e.g., 917***221227) - - - - Role - - - {{ getRoleNameById(addUserForm.get('role')?.value) }} - - -
    -
    {{ role.name }}
    - - {{ role.description }} - -
    -
    -
    -
    - - - Additional Permissions - - - {{ permission.name }}  ({{ permission.description }}) - - - No additional permissions available - - - - At least one permission is required - - -
    -
    - - - - -
    - - -

    Add Permission

    - -
    - - Permission - - - Permission is required - - -
    -
    - - - - -
    - - - -

    {{ currentEditingPermission ? 'Edit Permission' : 'Add Role' }}

    - -
    - -
    - - Role Name - - - Role name is required - - - - - Description - - - Description is required - - - - - Permission - - - {{ permission.name }} - - - - At least one permission is required - - -
    - - -
    - - Select Permission to Edit - - - {{ perm }} - - - - Please select a permission to edit - - - - - Permission Name - - - Permission name is required - - -
    -
    -
    - - - - -
    -
    diff --git a/apps/proxy-auth/src/app/otp/user-management/user-management.component.scss b/apps/proxy-auth/src/app/otp/user-management/user-management.component.scss deleted file mode 100644 index dc5c7a4b..00000000 --- a/apps/proxy-auth/src/app/otp/user-management/user-management.component.scss +++ /dev/null @@ -1,1491 +0,0 @@ -@import url('https://unpkg.com/@angular/material@14.2.7/prebuilt-themes/indigo-pink.css'); - -body { - font-family: Arial, sans-serif; - text-align: center; - background: #f9f9f9; - padding: 20px; -} -* { - font-family: 'DM Sans', sans-serif; -} - -// Danger button styling for confirmation dialog -::ng-deep .btn-danger { - background-color: #dc3545 !important; - color: #ffffff !important; - - &:hover { - background-color: #c82333 !important; - } - - &:focus { - background-color: #c82333 !important; - } -} - -::ng-deep { - proxy-confirm-dialog { - .mat-dialog-actions, - div[mat-dialog-actions], - div.d-flex { - display: flex !important; - justify-content: flex-end !important; - } - - .justify-content-end { - justify-content: flex-end !important; - } - } -} -.w-35 { - width: 35%; -} -.item-container { - max-width: 900px; -} - -.tab-content { - padding: 0; - width: 100%; -} - -// Permissions table section styling -.permissions-table-section { - .table-header-section { - .search-section { - flex: 1; - max-width: 400px; - } - - .add-button-section { - flex-shrink: 0; - } - } -} - -.email-container { - .email-text { - color: #666; - transition: color 0.2s ease; - - &:hover { - color: #666; - } - } -} - -// Roles table styling -.roles-table-container { - margin-top: 20px; -} - -// Column width styling for roles table -.role-column { - width: 25% !important; -} - -.permissions-column { - width: 70% !important; - overflow: visible; // Allow button to show outside cell if needed - position: relative; -} - -.permission-column { - overflow: visible; // Allow button to show outside cell if needed -} - -.role-info { - .role-name { - font-weight: 600; - color: #666; - font-size: 14px; - } - - .role-default { - font-size: 11px; - color: #666; - font-style: italic; - } -} - -.permission-info { - .permission-name { - font-weight: 600; - color: #666; - font-size: 14px; - } - - .permission-default { - font-size: 12px; - color: #666; - font-style: italic; - } -} - -// Permission bullets styling -.permission-bullets { - margin: 0; - padding-left: 16px; - list-style-type: disc; - - .permission-bullet { - margin-bottom: 4px; - font-size: 12px; - color: #555; - line-height: 1.4; - - &:last-child { - margin-bottom: 0; - } - } -} - -// Permissions cell content styling -.permissions-cell-content { - min-height: 40px; // Ensure minimum height for consistent button positioning - padding-right: 60px; // Add padding to prevent button overlap with content -} - -// Hover actions styling -.hover-actions { - opacity: 0; - transition: opacity 0.2s ease; - position: absolute; - top: 6px; - right: 12px; - z-index: 10; - background: #ffffff; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); -} - -.table-row:hover .hover-actions { - opacity: 1; -} - -.container { - padding: 15px 60px; - text-align: left; - position: relative; - min-height: 600px; - height: 100vh; - width: 100%; - z-index: 10; - max-width: 2000px; -} - -.dark-theme { - background: transparent; - color: #ffffff !important; - - ::ng-deep { - body { - background: transparent !important; - } - } - - .button-add { - background-color: transparent !important; - border: 1px solid #ffffff !important; - color: #ffffff !important; - } - - table { - border: 1px solid #ffffff; - - th, - td { - border: 1px solid #ffffff !important; - color: #ffffff !important; - } - - th { - color: #ffffff !important; - background-color: transparent !important; - } - - td { - background-color: transparent !important; - } - } - - .default-table { - border: 1px solid #ffffff !important; - background-color: transparent !important; - - .mat-table { - background-color: transparent !important; - } - - .mat-header-row { - background-color: transparent !important; - } - - .mat-row { - background-color: transparent !important; - } - - .mat-header-cell { - background-color: transparent !important; - color: #ffffff !important; - border-right: 1px solid #ffffff !important; - border-bottom: 1px solid #ffffff !important; - border-left: 1px solid #ffffff !important; - border-top: 1px solid #ffffff !important; - } - - .mat-cell { - background-color: transparent !important; - color: #ffffff !important; - border-right: 1px solid #ffffff !important; - border-bottom: 1px solid #ffffff !important; - border-left: 1px solid #ffffff !important; - } - - .table-header { - background-color: transparent !important; - } - - .table-row { - background-color: transparent !important; - - &:nth-child(even) { - background-color: transparent !important; - } - - &:hover { - background-color: transparent !important; - transform: none !important; - box-shadow: none !important; - } - } - - .table-row:hover .mat-cell { - background-color: transparent !important; - border-right: 1px solid #ffffff !important; - border-bottom: 1px solid #ffffff !important; - border-left: 1px solid #ffffff !important; - border-top: 1px solid #ffffff !important; - } - - .table-row:hover td { - border-right: 1px solid #ffffff !important; - border-bottom: 1px solid #ffffff !important; - border-left: 1px solid #ffffff !important; - border-top: 1px solid #ffffff !important; - } - } - - ::ng-deep { - .mat-elevation-z8 { - background-color: transparent !important; - box-shadow: none !important; - } - - .mat-table { - background-color: transparent !important; - } - - .mat-header-row { - background-color: transparent !important; - } - - .mat-row { - background-color: transparent !important; - - &:nth-child(even) { - background-color: transparent !important; - } - } - } - - .hover-actions { - background: transparent !important; - box-shadow: none !important; - } - - .no-data { - color: #ffffff !important; - } - - .role-info { - .role-name { - color: #ffffff !important; - } - - .role-default { - color: #ffffff !important; - } - } - - .permission-info { - .permission-name { - color: #ffffff !important; - } - - .permission-default { - color: #ffffff !important; - } - } - - .permission-bullets { - .permission-bullet { - color: #ffffff !important; - } - } - - .email-text { - color: #ffffff !important; - } - - .no-permissions-text { - color: #ffffff !important; - } - - .cell-content { - color: #ffffff !important; - } - - ::ng-deep { - .mat-tab-label { - color: #ffffff !important; - - &.mat-tab-label-active { - color: #ffffff !important; - } - } - - .mat-tab-label-content { - color: #ffffff !important; - } - - .mat-tab-group { - .mat-ink-bar { - background-color: #ffffff !important; - } - } - - .mat-ink-bar { - background-color: #ffffff !important; - } - - .mat-form-field { - .mat-form-field-outline { - color: #ffffff !important; - } - - .mat-form-field-outline-thick { - color: #ffffff !important; - } - - .mat-form-field-label { - color: #ffffff !important; - } - - .mat-input-element { - color: #ffffff !important; - - &::placeholder { - color: rgba(255, 255, 255, 0.6) !important; - } - } - - input.mat-input-element, - textarea.mat-input-element { - color: #ffffff !important; - } - } - - .mat-flat-button { - background-color: #1e1e1e !important; - border: 1px solid #ffffff !important; - color: #ffffff !important; - } - - .mat-select-value { - color: #ffffff !important; - } - - .mat-select-arrow { - color: #ffffff !important; - } - - .mat-option { - color: #ffffff !important; - } - - .mat-paginator { - background-color: transparent !important; - color: #ffffff !important; - - .mat-paginator-container { - background-color: transparent !important; - } - - .mat-paginator-page-size-label, - .mat-paginator-range-label { - color: #ffffff !important; - } - - .mat-paginator-navigation-previous, - .mat-paginator-navigation-next, - .mat-paginator-navigation-first, - .mat-paginator-navigation-last { - color: #ffffff !important; - - &:disabled { - color: rgba(255, 255, 255, 0.3) !important; - } - } - - .mat-icon-button { - color: #ffffff !important; - - &:disabled { - color: rgba(255, 255, 255, 0.3) !important; - } - } - - .mat-select-value { - color: #ffffff !important; - } - - .mat-select-arrow { - color: #ffffff !important; - } - - .mat-form-field-appearance-legacy .mat-form-field-label { - color: #ffffff !important; - } - } - - .mat-paginator .mat-select-panel { - background-color: #1e1e1e !important; - border: 1px solid #ffffff !important; - - .mat-option { - background-color: transparent !important; - color: #ffffff !important; - - &:hover { - background-color: transparent !important; - } - - &.mat-selected { - background-color: transparent !important; - } - } - } - } -} -.light-theme { - background: #ffffff !important; -} - -// Users list container styling -.users-list-container { - display: flex; - flex-direction: column; - padding: 16px 0; - min-height: 200px; - - .user-item { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 12px 16px; - // border-radius: 8px; - transition: all 0.2s ease; - cursor: pointer; - - &:hover { - .user-actions { - opacity: 1; - visibility: visible; - } - } - - .user-avatar { - width: 40px; - height: 40px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - flex-shrink: 0; - - .avatar-icon { - font-size: 24px; - width: 24px; - height: 24px; - } - } - - .user-info { - flex: 1; - display: flex; - flex-direction: column; - min-width: 0; - font-family: 'DM Sans', sans-serif; - - .user-name { - font-weight: 500; - font-size: 16px; - line-height: 1.4; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - - .user-email { - font-size: 14px; - line-height: 1.4; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - } - - .user-role-row { - display: flex; - align-items: center; - justify-content: center; - min-width: 100px; - max-width: 150px; - flex-shrink: 0; - font-family: 'DM Sans', sans-serif; - - .user-role { - font-size: 13px; - line-height: 1.4; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: center; - } - } - - .user-actions { - display: flex; - align-items: center; - gap: 8px; - flex-shrink: 0; - opacity: 0; - visibility: hidden; - transition: opacity 0.2s ease, visibility 0.2s ease; - - .edit-btn { - width: 32px; - height: 32px; - opacity: 0.7; - transition: opacity 0.2s ease; - - &:hover { - opacity: 1; - } - - .edit-icon { - font-size: 18px; - width: 18px; - height: 18px; - } - } - - .delete-btn { - width: 32px; - height: 32px; - opacity: 0.7; - transition: opacity 0.2s ease; - - &:hover { - opacity: 1; - } - - .delete-icon { - font-size: 18px; - width: 18px; - height: 18px; - } - } - } - } - - // border-bottom: 1px solid #e0e0e0; - - // Light theme styles - Clean list view - &.light-theme { - .user-item { - background-color: #ffffff; - border: none; - border-bottom: 1px solid #e0e0e0; - border-radius: 0; - padding: 16px; - - &:hover { - background-color: #f5f5f5; - } - - &:last-child { - border-bottom: none; - } - - .user-avatar { - background-color: #f5f5f5; - color: #757575; - width: 48px; - height: 48px; - } - - .user-info { - font-family: 'DM Sans', sans-serif; - - .user-name { - color: #212528; - font-weight: 500; - font-size: 16px; - } - - .user-email { - color: #666666; - font-size: 14px; - } - } - - .user-role-row { - font-family: 'DM Sans', sans-serif; - - .user-role { - color: #888888; - font-size: 13px; - } - } - - .user-actions { - .edit-btn { - color: #1976d2; - - .edit-icon { - color: #1976d2; - } - - &:hover { - background-color: rgba(25, 118, 210, 0.1); - } - } - - .delete-btn { - color: #d32f2f; - - .delete-icon { - color: #d32f2f; - } - - &:hover { - background-color: rgba(211, 47, 47, 0.1); - } - } - } - } - } - - // Dark theme styles - Chip/Card view - &.dark-theme { - .user-item { - background-color: #3f4346; - // border-radius: 12px; - padding: 18px 16px; - margin: 0; - border-bottom: 1px solid gray; - // border-bottom: 1px solid #e0e0e0; // subtle bottom divider - transition: background-color 0.2s ease; - - &:hover { - background-color: #000000 !important; - border-color: #8f9396; - - // Ensure all child elements maintain visibility on black background - .user-avatar, - .user-info, - .user-role-row, - .user-actions { - background-color: transparent; - } - } - - .user-avatar { - background-color: #212528; - color: #c1c5c8; - width: 40px; - height: 40px; - } - - .user-info { - font-family: 'DM Sans', sans-serif; - - .user-name { - color: #d5d9dc; - font-weight: 500; - font-size: 16px; - } - - .user-email { - color: #c1c5c8; - font-size: 14px; - } - } - - .user-role-row { - font-family: 'DM Sans', sans-serif; - - .user-role { - color: #a0a4a8; - font-size: 13px; - } - } - - .user-actions { - .edit-btn { - color: #64b5f6; - - .edit-icon { - color: #64b5f6; - } - - &:hover { - background-color: rgba(100, 181, 246, 0.2); - } - } - - .delete-btn { - color: #ff6b6b; - - .delete-icon { - color: #ff6b6b; - } - - &:hover { - background-color: rgba(255, 107, 107, 0.2); - } - } - } - } - } - - .no-data { - padding: 40px 16px; - text-align: center; - } -} -.form { - display: flex; - flex-direction: column; -} - -table { - border-collapse: collapse; - margin-top: 10px; - box-shadow: none !important; -} -th, -td { - border: 1px solid #ddd; - padding: 10px; - text-align: left; - padding: 14px; -} -td.mat-cell { - padding: 10px; -} -th { - color: #000000; - font-weight: 600; - height: 22px; - padding-left: 12px !important; -} -td { - font-size: 12px; - height: 22px; - color: #434242; -} -.no-data { - text-align: center; - font-size: medium; - font-weight: 700; - margin-top: 30px; -} - -@media (max-width: 1024px) { - .container { - padding: 15px; - width: 100%; - } - - .full-width { - max-width: 100%; - } - - table { - font-size: 14px; - } - - th, - td { - padding: 8px; - } -} - -@media (max-width: 768px) { - .container { - padding: 10px; - width: 100%; - } - - .table-container { - overflow-x: auto; - } - - table { - font-size: 12px; - } - - th, - td { - padding: 6px; - } - - .toggle-btn, - .modal-buttons button { - font-size: 14px; - padding: 8px; - } -} - -@media (max-width: 480px) { - .container { - padding: 8px; - } - - .table-container { - width: 100%; - overflow-x: auto; - } - - table { - font-size: 12px; - } - - .modal-content { - width: 90%; - padding: 20px; - } - - .toggle-btn, - .modal-buttons button { - font-size: 12px; - padding: 6px; - } -} -.button-add { - background-color: #000000; - color: #ffffff; -} - -// Edit button styles -.button-edit { - background-color: transparent !important; -} - -.button-edit-light { - border: 1px solid #000000 !important; - color: #000000 !important; - - &:hover { - background-color: rgba(0, 0, 0, 0.04) !important; - } -} - -// Remove button styles -.button-remove { - background-color: transparent !important; -} - -.button-remove-light { - border: 1px solid #dc3545 !important; - color: #dc3545 !important; - - &:hover { - background-color: rgba(220, 53, 69, 0.04) !important; - } -} - -.full-width { - width: 100%; -} - -// Search bar styling -.search-container { - flex: 1; - max-width: 600px; - - .search-field { - .mat-form-field-wrapper { - padding-bottom: 0; - } - - .mat-form-field-outline { - border-radius: 8px; - } - - .mat-input-element { - font-size: 14px; - } - } -} - -// Enhanced table styling -.default-table { - border-radius: 8px; - overflow: visible; // Allow buttons to show outside table boundaries - - .mat-header-cell { - font-weight: 600; - font-size: 14px; - color: var(--color-table-head, #374151); - background-color: var(--color-table-head-bg, #f9fafb); - border-bottom: 2px solid var(--color-table-head-border, #e5e7eb); - padding: 16px 12px; - text-align: left; - vertical-align: middle; - } - - .mat-cell { - padding: 8px 12px; - border-bottom: 1px solid var(--color-table-cell-border, #e5e7eb); - color: var(--color-table-cell, #374151); - font-size: 14px; - vertical-align: middle; - text-align: left; - } - - .table-row { - transition: all 0.2s ease-in-out; - cursor: pointer; - - .cell-content { - .actions { - opacity: 0; - transition: opacity 0.2s ease-in-out; - - .edit-btn { - font-size: 12px; - padding: 4px 12px; - min-width: auto; - height: 28px; - line-height: 20px; - } - } - } - - &:hover { - background-color: var(--color-table-hover, #f3f4f6); - transform: translateY(-1px); - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - - .cell-content .actions { - opacity: 1; - } - } - - &:nth-child(even) { - background-color: var(--color-table-even, #ffffff); - } - - &:nth-child(even):hover { - background-color: var(--color-table-hover, #f3f4f6); - } - } - - .table-header { - background-color: var(--color-table-head-bg, #f9fafb); - } -} - -// Column width utilities -.width-md-100 { - width: 100px; - min-width: 100px; - max-width: 100px; -} - -.width-md-150 { - width: 40px; - min-width: 40px; - max-width: 40px; -} - -.width-md-200 { - width: 25px; - min-width: 25px; - max-width: 25px; -} - -.width-md-300 { - width: 300px; - min-width: 300px; - max-width: 300px; -} - -// Text alignment utilities -.text-left { - text-align: left !important; -} - -.text-center { - text-align: center !important; -} - -.text-right { - text-align: right !important; -} - -// Role text and tooltip styling -.role-text { - // cursor: help; - text-decoration: underline; - text-decoration-style: dotted; - text-decoration-color: #666; - - &:hover { - color: var(--color-primary, #1976d2); - } -} -.color-white { - color: #ffffff !important; -} - -// Custom tooltip styling -::ng-deep { - .permissions-tooltip, - .email-tooltip { - background-color: rgba(0, 0, 0, 0.9) !important; - color: #ffffff !important; - font-size: 12px !important; - // max-width: 250px !important; - white-space: pre-line !important; - border-radius: 4px !important; - padding: 10px !important; - line-height: 1.4 !important; - text-align: left !important; - - .mat-tooltip { - white-space: pre-line !important; - } - } -} - -.position-relative { - position: relative; -} - -// Role option styling in dropdown -::ng-deep { - .role-select-panel { - min-width: 350px !important; - max-width: 500px !important; - width: auto !important; - } - - .mat-select-panel.role-select-panel { - min-width: 350px !important; - max-width: 500px !important; - width: auto !important; - } - - .role-select-panel .mat-option { - min-height: auto !important; - height: auto !important; - padding: 12px 16px !important; - white-space: normal !important; - overflow: visible !important; - line-height: 1.5 !important; - } - - .role-select-panel .mat-option-text { - overflow: visible !important; - text-overflow: clip !important; - white-space: normal !important; - } - - .cdk-overlay-pane.permission-select-panel { - height: auto !important; // Ensure proper z-index stacking - } - - // Apply height: auto only to permission selects (for dialogs) - .cdk-overlay-connected-position-bounding-box.permission-select-bounding-box, - .cdk-overlay-connected-position-bounding-box:has(.mat-select-panel.permission-select-panel) { - height: auto !important; - } - - // Explicitly ensure paginator selects never get height: auto - .cdk-overlay-connected-position-bounding-box.paginator-select-bounding-box { - height: unset !important; - min-height: unset !important; - max-height: unset !important; - } - // Fallback for all mat-select panels - .mat-select-panel { - min-width: 350px !important; - } - - .mat-option { - min-height: auto !important; - height: auto !important; - padding: 12px 16px !important; - white-space: normal !important; - overflow: visible !important; - line-height: 1.5 !important; - } - - .mat-option-text { - overflow: visible !important; - text-overflow: clip !important; - white-space: normal !important; - } -} - -.role-option-content { - display: flex; - flex-direction: column; - // gap: 2px; - padding: 4px 0; - width: 100%; - max-width: 100%; - box-sizing: border-box; - - .role-name { - font-weight: 600; - font-size: 14px; - color: #333; - word-break: break-word; - } - - .role-permissions { - display: flex; - flex-wrap: wrap; - gap: 6px; - align-items: flex-start; - width: 100%; - max-width: 100%; - box-sizing: border-box; - overflow: visible; - - .permission-tag { - display: inline-flex; - align-items: center; - padding: 4px 10px; - background-color: #f0f0f0; - border-radius: 12px; - font-size: 11px; - color: #666; - white-space: nowrap; - max-width: 180px; - overflow: hidden; - text-overflow: ellipsis; - box-sizing: border-box; - flex-shrink: 1; - min-width: 0; - } - - .expand-permissions-btn { - display: inline-flex; - align-items: center; - padding: 4px 10px; - background-color: #e3f2fd; - border-radius: 12px; - font-size: 11px; - color: #1976d2; - font-weight: 600; - cursor: pointer; - white-space: nowrap; - transition: background-color 0.2s ease; - flex-shrink: 0; - box-sizing: border-box; - - &:hover { - background-color: #bbdefb; - } - - &.view-less-btn { - background-color: #fff3e0; - color: #f57c00; - - &:hover { - background-color: #ffe0b2; - } - } - } - } -} - -// Dark theme styles for role options -.dark-theme { - .role-option-content { - .role-name { - color: #ffffff !important; - } - - .role-permissions { - .permission-tag { - background-color: rgba(255, 255, 255, 0.1) !important; - color: #ffffff !important; - border: 1px solid rgba(255, 255, 255, 0.3) !important; - } - - .expand-permissions-btn { - background-color: rgba(255, 255, 255, 0.15) !important; - color: #ffffff !important; - border: 1px solid rgba(255, 255, 255, 0.3) !important; - - &:hover { - background-color: rgba(255, 255, 255, 0.25) !important; - } - - &.view-less-btn { - background-color: rgba(255, 152, 0, 0.2) !important; - color: #ff9800 !important; - border: 1px solid rgba(255, 152, 0, 0.4) !important; - - &:hover { - background-color: rgba(255, 152, 0, 0.3) !important; - } - } - } - } - } - - ::ng-deep { - .mat-option { - color: #ffffff !important; - - &.mat-active { - background-color: rgba(255, 255, 255, 0.1) !important; - } - - &:hover { - background-color: rgba(255, 255, 255, 0.1) !important; - } - } - } -} - -::ng-deep { - .dark-dialog { - .mat-dialog-container { - background-color: #1e1e1e !important; - color: #ffffff !important; - // border: 1px solid #ffffff !important; - } - .input-field { - border: 1px solid #ffffff !important; - } - .mat-form-field { - .mat-form-field-outline { - color: #ffffff !important; - } - - .mat-form-field-outline-thick { - color: #ffffff !important; - } - - .mat-form-field-label { - color: #ffffff !important; - } - - .mat-input-element { - color: #ffffff !important; - - &::placeholder { - color: rgba(255, 255, 255, 0.6) !important; - } - } - - input.mat-input-element, - textarea.mat-input-element { - color: #ffffff !important; - } - - .mat-hint { - color: #ffffff !important; - } - } - - .mat-flat-button { - background-color: #1e1e1e !important; - border: 1px solid #ffffff !important; - color: #ffffff !important; - } - - .mat-select-value { - color: #ffffff !important; - } - - .mat-select-arrow { - color: #ffffff !important; - } - } -} - -// Select panel styles for dark dialog - using body class for reliable targeting -::ng-deep { - // When dark-dialog-open class exists on body, style select panels in overlay - body.dark-dialog-open { - .cdk-overlay-container { - .cdk-overlay-pane { - .mat-select-panel.permission-select-panel, - .mat-select-panel.role-select-panel { - background-color: #1e1e1e !important; - background: #1e1e1e !important; - - .mat-option { - background-color: #1e1e1e !important; - background: #1e1e1e !important; - color: #ffffff !important; - - .mat-option-text, - span, - * { - color: #ffffff !important; - } - - &:hover, - &.mat-active { - background-color: rgba(255, 255, 255, 0.1) !important; - background: rgba(255, 255, 255, 0.1) !important; - } - - &.mat-selected { - background-color: rgba(255, 255, 255, 0.15) !important; - background: rgba(255, 255, 255, 0.15) !important; - } - } - } - } - } - } - - // More specific targeting - directly target the overlay pane - body.dark-dialog-open .cdk-overlay-container .cdk-overlay-pane { - .mat-select-panel.permission-select-panel, - .mat-select-panel.role-select-panel { - background-color: #1e1e1e !important; - background: #1e1e1e !important; - - .mat-option { - background-color: #1e1e1e !important; - background: #1e1e1e !important; - color: #ffffff !important; - - .mat-option-text, - span, - * { - color: #ffffff !important; - } - - &:hover, - &.mat-active { - background-color: rgba(255, 255, 255, 0.1) !important; - background: rgba(255, 255, 255, 0.1) !important; - } - - &.mat-selected { - background-color: rgba(255, 255, 255, 0.15) !important; - background: rgba(255, 255, 255, 0.15) !important; - } - } - } - } -} -.w-45 { - width: 45%; -} - -// Skeleton Loading Styles -.skeleton-item { - pointer-events: none; -} - -.skeleton-avatar { - width: 40px; - height: 40px; - border-radius: 50%; - background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; -} - -.skeleton-text { - border-radius: 4px; - background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; -} - -.skeleton-name { - width: 120px; - height: 16px; - margin-bottom: 6px; -} - -.skeleton-email { - width: 180px; - height: 14px; -} - -.skeleton-role { - width: 80px; - height: 14px; -} - -.skeleton-button { - width: 60px; - height: 32px; - border-radius: 4px; - background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; -} - -@keyframes shimmer { - 0% { - background-position: 200% 0; - } - 100% { - background-position: -200% 0; - } -} - -// Dark theme skeleton styles -.dark-theme { - .skeleton-avatar, - .skeleton-text, - .skeleton-button { - background: linear-gradient(90deg, #3a3a3a 25%, #4a4a4a 50%, #3a3a3a 75%); - background-size: 200% 100%; - animation: shimmer 1.5s infinite; - } -} - -.hidden { - display: none !important; -} - -.mobile-number-field { - @media (max-width: 600px) { - margin-bottom: 16px; - } - @media (max-width: 380px) { - margin-bottom: 30px; - } -} diff --git a/apps/proxy-auth/src/app/otp/user-management/user-management.component.ts b/apps/proxy-auth/src/app/otp/user-management/user-management.component.ts deleted file mode 100644 index d0515b93..00000000 --- a/apps/proxy-auth/src/app/otp/user-management/user-management.component.ts +++ /dev/null @@ -1,1261 +0,0 @@ -import { - Component, - Input, - OnInit, - OnDestroy, - ViewChild, - TemplateRef, - AfterViewInit, - ViewEncapsulation, -} from '@angular/core'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { MatTableDataSource } from '@angular/material/table'; -import { MatPaginator, PageEvent } from '@angular/material/paginator'; -import { MatSort } from '@angular/material/sort'; -import { select, Store } from '@ngrx/store'; -import { IAppState } from '../store/app.state'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { otpActions } from '../store/actions'; -import { debounceTime, distinctUntilChanged, Observable, Subject, takeUntil } from 'rxjs'; -import { - addUserData, - companyUsersData, - companyUsersDataInProcess, - deleteUserData, - permissionCreateData, - permissionData, - roleCreateData, - rolesData, - updateCompanyUserData, - updatePermissionData, - updateRoleData, - updateUserPermissionData, - updateUserRoleData, -} from '../store/selectors'; -import { isEqual } from 'lodash'; -import { UserData, Role } from '../model/otp'; -import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; - -@Component({ - selector: 'proxy-user-management', - templateUrl: './user-management.component.html', - styleUrls: ['./user-management.component.scss'], -}) -export class UserManagementComponent extends BaseComponent implements OnInit, AfterViewInit, OnDestroy { - @Input() public userToken: string; - @Input() public pass: string; - @Input() public theme: string; - @Input() public exclude_role_ids: any[] = []; - @Input() public include_role_ids: any[] = []; - @Input() public isHidden: boolean = false; - @ViewChild('addUserDialog') addUserDialog!: TemplateRef; - @ViewChild('editPermissionDialog') editPermissionDialog!: TemplateRef; - @ViewChild('addPermissionDialog') addPermissionDialog!: TemplateRef; - @ViewChild(MatPaginator) paginator!: MatPaginator; - @ViewChild(MatSort) sort!: MatSort; - @ViewChild('rolesPaginator') rolesPaginator!: MatPaginator; - @ViewChild('permissionsPaginator') permissionsPaginator!: MatPaginator; - private addUserDialogRef: any; - private editPermissionDialogRef: any; - private addPermissionDialogRef: any; - public getRoles$: Observable; - public getPermissions$: Observable; - public getCompanyUsers$: Observable; - public getRoleCreate$: Observable; - public getPermissionCreate$: Observable; - public addUserData$: Observable; - public updateCompanyUserData$: Observable; - public updatePermissionData$: Observable; - public updateRoleData$: Observable; - public deleteUserData$: Observable; - public updateUserRoleData$: Observable; - public updateUserPermissionData$: Observable; - public roles: any[] = []; - public permissions: any[] = []; - public displayedColumns: string[] = ['name', 'email', 'role']; - public dataSource = new MatTableDataSource([]); - public searchTerm: string = ''; - public filteredData: UserData[] = []; - private searchSubject = new Subject(); - - // Roles table properties - public rolesDisplayedColumns: string[] = ['role', 'permissions']; - public rolesDataSource = new MatTableDataSource([]); - public roleSearchTerm: string = ''; - public filteredRolesData: any[] = []; - public defaultRoles: any; - - // Permissions table properties - public permissionsDisplayedColumns: string[] = ['permission']; - public permissionsDataSource = new MatTableDataSource([]); - public permissionSearchTerm: string = ''; - public filteredPermissionsData: any[] = []; - public emailVisibility: { [key: number]: boolean } = {}; - public expandedRoles: { [key: number]: boolean } = {}; - public addUserForm: FormGroup; - public editPermissionForm: FormGroup; - public addPermissionForm: FormGroup; - public addRoleForm: FormGroup; - public addPermissionTabForm: FormGroup; - public isEditRole: boolean = false; - public isEditPermission: boolean = false; - public isEditUser: boolean = false; - public currentEditingUser: UserData | null = null; - public currentEditingPermission: UserData | null = null; - public userData: any[] = []; - public userId: any; - public canRemoveUser: boolean = false; - public canEditUser: boolean = false; - public canAddUser: boolean = false; - public totalUsers: number = 0; - public currentPageIndex: number = 0; - public currentPageSize: number = 50; - public isUsersLoading: boolean = true; - public skipSkeletonLoading: boolean = false; - private openAddUserDialogHandler = this.addUser.bind(this); - private showUserManagementHandler = this.showUserManagement.bind(this); - private hideUserManagementHandler = this.hideUserManagement.bind(this); - constructor(private fb: FormBuilder, private dialog: MatDialog, private store: Store) { - super(); - this.getRoles$ = this.store.pipe(select(rolesData), distinctUntilChanged(isEqual), takeUntil(this.destroy$)); - this.getPermissions$ = this.store.pipe( - select(permissionData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.getCompanyUsers$ = this.store.pipe( - select(companyUsersData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.getRoleCreate$ = this.store.pipe( - select(roleCreateData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.getPermissionCreate$ = this.store.pipe( - select(permissionCreateData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - - this.addUserData$ = this.store.pipe( - select(addUserData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.updateCompanyUserData$ = this.store.pipe( - select(updateCompanyUserData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.updatePermissionData$ = this.store.pipe( - select(updatePermissionData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.updateRoleData$ = this.store.pipe( - select(updateRoleData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.updateUserRoleData$ = this.store.pipe( - select(updateUserRoleData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - this.updateUserPermissionData$ = this.store.pipe( - select(updateUserPermissionData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - - this.addUserForm = this.fb.group({ - name: ['', Validators.required], - email: ['', [Validators.required, Validators.email]], - mobileNumber: ['', [Validators.pattern(/^(\+?[1-9]\d{1,14}|[0-9]{10})$/)]], - role: [''], - permission: [[]], - }); - - // Subscribe to role changes to update permissions - this.addUserForm - .get('role') - ?.valueChanges.pipe(takeUntil(this.destroy$)) - .subscribe((roleId) => { - this.onRoleChange(roleId); - }); - - this.editPermissionForm = this.fb.group({ - roleName: ['', Validators.required], - description: [''], - permission: [[], Validators.required], - selectedPermission: [''], - permissionName: [''], - }); - this.addPermissionForm = this.fb.group({ - permission: ['', Validators.required], - description: [''], - }); - - // New form groups for tabs - this.addRoleForm = this.fb.group({ - roleName: ['', Validators.required], - description: [''], - permission: [[], Validators.required], - }); - - this.addPermissionTabForm = this.fb.group({ - permission: ['', Validators.required], - description: [''], - }); - this.deleteUserData$ = this.store.pipe( - select(deleteUserData), - distinctUntilChanged(isEqual), - takeUntil(this.destroy$) - ); - } - - ngOnInit(): void { - // Add event listeners for show/hide user management - window.addEventListener('showUserManagement', this.showUserManagementHandler); - window.addEventListener('hideUserManagement', this.hideUserManagementHandler); - - this.searchSubject - .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)) - .subscribe((searchTerm) => { - this.getCompanyUsers(searchTerm); - }); - - this.store.pipe(select(companyUsersDataInProcess), takeUntil(this.destroy$)).subscribe((isLoaded) => { - this.isUsersLoading = !isLoaded; - }); - - this.getRoles$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.roles = res.data?.data; - this.defaultRoles = res.data?.default_roles; - this.filteredRolesData = [...this.roles]; - this.rolesDataSource.data = this.filteredRolesData; - } - }); - this.getPermissions$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.permissions = res.data.data; - this.filteredPermissionsData = [...this.permissions]; - this.permissionsDataSource.data = this.filteredPermissionsData; - } - }); - this.getCompanyUsers$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.totalUsers = res.data?.totalEntityCount || 0; - this.canRemoveUser = res.data?.permissionToRemoveUser; - this.canAddUser = res.data?.permissionToAddUser; - this.canEditUser = res.data?.permissionToEditUser; - this.userData = res.data?.users || []; - this.dataSource.data = this.userData; - - // Update pagination state from API response - const pageNo = res.data?.pageNo; - const itemsPerPage = res.data?.itemsPerPage; - if (pageNo !== undefined) { - this.currentPageIndex = pageNo - 1; // API is 1-based, paginator is 0-based - } - if (itemsPerPage !== undefined) { - this.currentPageSize = parseInt(itemsPerPage, 10) || 10; - } - } - }); - this.addUserData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getCompanyUsers(); - } - }); - this.getRoleCreate$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getRoles(); - // Force form refresh after role creation - this.refreshFormData(); - } - }); - this.getPermissionCreate$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getPermissions(); - // Force form refresh after permission creation - this.refreshFormData(); - } - }); - this.updatePermissionData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getPermissions(); - // Force form refresh after permission update - this.refreshFormData(); - } - }); - this.updateRoleData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getRoles(); - // Force form refresh after role update - this.refreshFormData(); - } - }); - this.updateCompanyUserData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getCompanyUsers(); - this.skipSkeletonLoading = false; - } - }); - // this.deleteUserData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - // if (res) { - - // // this.getCompanyUsers(); - // } - // }); - this.updateUserRoleData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getCompanyUsers(); - } - }); - this.updateUserPermissionData$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.getCompanyUsers(); - } - }); - this.getCompanyUsers(); - this.getRoles(); - this.getPermissions(); - - // Ensure form is initialized - if (!this.addUserForm) { - this.addUserForm = this.fb.group({ - name: ['', Validators.required], - email: ['', [Validators.required, Validators.email]], - mobileNumber: ['', [Validators.required, Validators.pattern(/^[0-9]{10}$/)]], - role: ['', Validators.required], - }); - } - - if (!this.editPermissionForm) { - this.editPermissionForm = this.fb.group({ - roleName: ['', Validators.required], - description: ['', Validators.required], - permission: [[], Validators.required], - selectedPermission: ['', Validators.required], - permissionName: ['', Validators.required], - }); - } - - // Initialize dataSource with userData - this.filteredData = [...this.userData]; - this.dataSource.data = this.filteredData; - - // Listen for window event to open add user dialog - window.addEventListener('openAddUserDialog', this.openAddUserDialogHandler); - } - - ngAfterViewInit(): void { - // Note: Do NOT assign paginator to dataSource for server-side pagination - // this.dataSource.paginator = this.paginator; // Removed - using server-side pagination - this.dataSource.sort = this.sort; - this.rolesDataSource.paginator = this.rolesPaginator; - this.permissionsDataSource.paginator = this.permissionsPaginator; - - // Set up observer to detect paginator select opens - this.setupPaginatorSelectObserver(); - } - - ngOnDestroy(): void { - // Remove window event listeners - window.removeEventListener('openAddUserDialog', this.openAddUserDialogHandler); - window.removeEventListener('showUserManagement', this.showUserManagementHandler); - window.removeEventListener('hideUserManagement', this.hideUserManagementHandler); - - // Close all open dialogs when navigating away - if (this.addUserDialogRef) { - this.addUserDialogRef.close(); - } - if (this.editPermissionDialogRef) { - this.editPermissionDialogRef.close(); - } - if (this.addPermissionDialogRef) { - this.addPermissionDialogRef.close(); - } - - // Remove body class if it was added - document.body.classList.remove('dark-dialog-open'); - - // Clean up the paginator select observer - if ((this as any)._paginatorSelectObserver) { - (this as any)._paginatorSelectObserver.disconnect(); - (this as any)._paginatorSelectObserver = null; - } - super.ngOnDestroy(); - } - - public showUserManagement(): void { - this.isHidden = false; - } - - public hideUserManagement(): void { - this.isHidden = true; - } - - public editUser(user: UserData, index: number): void { - this.skipSkeletonLoading = true; - this.isEditUser = true; - this.isEditRole = false; - this.isEditPermission = false; - this.currentEditingUser = user; - const roleId = this.getRoleIdByName(user.role); - - // Get permission IDs for the user's additional permissions - const userPermissionIds = this.getPermissionIdsByName(user.additionalpermissions || []); - - // Set all form values at once to avoid triggering role change during initial setup - this.addUserForm.patchValue({ - name: user.name, - email: user.email, - mobileNumber: (user as any).mobile || '', - role: roleId || user.role, - permission: userPermissionIds, - }); - - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - - // Add body class for dark theme select panel styling - if (this.theme === 'dark') { - document.body.classList.add('dark-dialog-open'); - this.addUserDialogRef.afterClosed().subscribe(() => { - document.body.classList.remove('dark-dialog-open'); - }); - } - - // Add body class for dark theme select panel styling - if (this.theme === 'dark') { - document.body.classList.add('dark-dialog-open'); - this.addUserDialogRef.afterClosed().subscribe(() => { - document.body.classList.remove('dark-dialog-open'); - }); - } - } - - public deleteUser(user: any, index: number): void { - const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent, { - width: '400px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - }); - - const componentInstance = dialogRef.componentInstance; - componentInstance.title = 'Remove User'; - componentInstance.confirmationMessage = `Are you sure you want to remove ${user.name}?`; - componentInstance.confirmButtonText = 'Remove'; - componentInstance.cancelButtonText = 'Cancel'; - componentInstance.confirmButtonColor = ''; - componentInstance.confirmButtonClass = 'mat-flat-button btn-danger confirm-dialog'; - - dialogRef.afterClosed().subscribe((action) => { - if (action === 'yes') { - const userId = (user as any).user_id; - this.userData = this.userData.filter((u: any) => u.user_id !== userId); - this.dataSource.data = [...this.userData]; - this.totalUsers = Math.max(0, this.totalUsers - 1); - this.store.dispatch(otpActions.deleteUser({ companyId: userId, authToken: this.userToken })); - } - }); - } - - public getPermissionsTooltip(user: UserData): string { - let tooltipText = ''; - - if (user && user.permissions && user.permissions.length > 0) { - const permissionsText = user.permissions.join('\n• '); - tooltipText = `Permissions:\n• ${permissionsText}`; - } else { - tooltipText = 'No permissions assigned'; - } - - if (user && user.additionalpermissions && user.additionalpermissions.length > 0) { - const additionalPermissionsText = user.additionalpermissions.join('\n+ '); - tooltipText += `\n\nAdditional Permissions:\n+ ${additionalPermissionsText}`; - } - - return tooltipText; - } - - public applyFilter(): void { - this.searchSubject.next(this.searchTerm); - } - - public clearSearch(): void { - this.searchTerm = ''; - this.applyFilter(); - } - - public maskEmail(email: string): string { - if (!email || !email.includes('@')) { - return email; - } - - const [localPart, domain] = email.split('@'); - - if (localPart.length <= 2) { - // For very short usernames, show first character and mask the rest - return `${localPart[0]}***@${domain}`; - } else if (localPart.length <= 4) { - // For short usernames, show first 2 characters - return `${localPart.substring(0, 2)}***@${domain}`; - } else { - // For longer usernames, show first 2 and last 1 character - const firstPart = localPart.substring(0, 2); - const lastPart = localPart.substring(localPart.length - 1); - const maskedPart = '*'.repeat(Math.max(3, localPart.length - 3)); - return `${firstPart}${maskedPart}${lastPart}@${domain}`; - } - } - - public getEmailDisplay(email: string, index: number): string { - return this.isEmailVisible(index) ? email : this.maskEmail(email); - } - - public isEmailVisible(index: number): boolean { - return this.emailVisibility[index] || false; - } - - public toggleEmailVisibility(index: number): void { - this.emailVisibility[index] = !this.emailVisibility[index]; - } - - public getRoleIdByName(roleName: string): number | undefined { - if (!this.roles || !Array.isArray(this.roles)) { - return undefined; - } - - const role = this.roles.find((role) => role.name === roleName); - return role?.id; - } - - public getRoleNameById(roleId: number): string { - if (!this.roles || !Array.isArray(this.roles) || !roleId) { - return ''; - } - - const role = this.roles.find((role) => role.id === roleId); - return role?.name || ''; - } - - public onRoleChange(roleId: number): void { - if (!roleId) { - // If no role selected, clear permissions - this.addUserForm.get('permission')?.setValue([]); - return; - } - - // Find the selected role - const selectedRole = this.roles.find((role) => role.id === roleId); - if (selectedRole && selectedRole.c_permissions) { - // Get permission IDs for the role's permissions - const rolePermissionIds = selectedRole.c_permissions.map((p: any) => p.id); - this.addUserForm.get('permission')?.setValue(rolePermissionIds); - } else { - // If role has no permissions, clear the permission field - this.addUserForm.get('permission')?.setValue([]); - } - } - - public getPermissionIdsByName(permissionNames: string[]): number[] { - return permissionNames - .map((permissionName) => { - const permission = this.permissions.find((p) => p.name === permissionName); - return permission?.id; - }) - .filter((id) => id !== undefined) as number[]; - } - - public getPermissionNamesByIds(permissionIds: number[]): string[] { - return permissionIds - .map((permissionId) => { - const permission = this.permissions.find((p) => p.id === permissionId); - return permission?.name; - }) - .filter((name) => name !== undefined) as string[]; - } - - public addUser(): void { - this.isEditUser = false; - this.isEditRole = false; - this.isEditPermission = false; - this.currentEditingUser = null; - this.addUserForm.reset(); - - // Set default role for new user - if (this.defaultRoles?.default_member_role) { - this.addUserForm.patchValue({ - role: this.defaultRoles.default_member_role, - }); - } - - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - - // Add body class for dark theme select panel styling - if (this.theme === 'dark') { - document.body.classList.add('dark-dialog-open'); - this.addUserDialogRef.afterClosed().subscribe(() => { - document.body.classList.remove('dark-dialog-open'); - }); - } - - // Add body class for dark theme select panel styling - if (this.theme === 'dark') { - document.body.classList.add('dark-dialog-open'); - this.addUserDialogRef.afterClosed().subscribe(() => { - document.body.classList.remove('dark-dialog-open'); - }); - } - - // Add body class for dark theme select panel styling - if (this.theme === 'dark') { - document.body.classList.add('dark-dialog-open'); - this.addUserDialogRef.afterClosed().subscribe(() => { - document.body.classList.remove('dark-dialog-open'); - }); - } - } - - public closeDialog(): void { - if (this.addUserDialogRef) { - this.addUserDialogRef.close(); - } - // Remove body class when dialog closes - document.body.classList.remove('dark-dialog-open'); - // Reset all edit flags - this.isEditUser = false; - this.isEditRole = false; - this.isEditPermission = false; - this.currentEditingUser = null; - this.currentEditingPermission = null; - } - - public saveUser(): void { - if (this.addUserForm.valid) { - const formValue = this.addUserForm.value; - const selectedRole = formValue.role ? this.getRoleById(formValue.role) : null; - const roleName = selectedRole?.name || formValue.role || 'User'; - - if ((this.isEditUser || this.isEditRole) && this.currentEditingUser) { - // Update existing user - const userIndex = this.userData.findIndex((u) => u.userId === this.currentEditingUser!.userId); - if (userIndex !== -1) { - const originalMobile = (this.currentEditingUser as any).mobile || ''; - const newMobile = formValue.mobileNumber || ''; - - // Build user object with only changed fields - const userPayload: any = { - id: (this.currentEditingUser as any).user_id, - name: formValue.name, - }; - - // Only include mobile if it has changed - if (originalMobile !== newMobile) { - userPayload.mobile = newMobile; - } - - const rolePayload = { - id: userPayload.id, - role_id: formValue.role, - }; - const permissionPayload = { - id: userPayload.id, - cpermissions: formValue.permission, - }; - this.store.dispatch(otpActions.updateUserRole({ payload: rolePayload, authToken: this.userToken })); - this.store.dispatch( - otpActions.updateUserPermission({ payload: permissionPayload, authToken: this.userToken }) - ); - } - } else { - // Add new user - const newUser: UserData = { - userId: (this.userData.length + 1).toString().padStart(3, '0'), - name: formValue.name, - email: formValue.email, - mobileNumber: formValue.mobileNumber || '', - role: roleName, - permissions: this.getDefaultPermissions(roleName), - }; - const payload = { - user: { - name: newUser.name, - email: newUser.email, - mobile: newUser.mobileNumber, - }, - role_id: formValue.role, - }; - - this.store.dispatch(otpActions.addUser({ payload, authToken: this.userToken })); - } - - // Update dataSource to reflect changes - this.dataSource.data = [...this.userData]; - this.closeDialog(); - } - } - - public getRoleById(roleId: number): Role | undefined { - return this.roles.find((role) => role.id === roleId); - } - - public getVisiblePermissions(role: any): any[] { - if (!role || !role.c_permissions || role.c_permissions.length === 0) { - return []; - } - const isExpanded = this.expandedRoles[role.id] || false; - return isExpanded ? role.c_permissions : role.c_permissions.slice(0, 3); - } - - public getDefaultPermissions(role: string): string[] { - switch (role) { - case 'Admin': - return ['Full Access', 'User Management', 'System Settings', 'Reports']; - case 'Manager': - return ['User Management', 'Reports', 'View Settings']; - case 'User': - return ['Read Only', 'View Reports']; - default: - return ['Read Only']; - } - } - - public editUserPermission(user: UserData): void { - this.currentEditingPermission = user; - this.editPermissionForm.patchValue({ - roleName: user.role, - description: `Description for ${user.role} role`, - permission: user.permissions, - selectedPermission: '', - permissionName: '', - }); - this.editPermissionDialogRef = this.dialog.open(this.editPermissionDialog, { - width: '500px', - disableClose: false, - }); - } - - public onPermissionSelected(selectedPermission: string): void { - this.editPermissionForm.patchValue({ - permissionName: selectedPermission, - }); - } - - public closePermissionDialog(): void { - if (this.editPermissionDialogRef) { - this.editPermissionDialogRef.close(); - } - } - - public savePermission(): void { - if (this.editPermissionForm.valid) { - const formValue = this.editPermissionForm.value; - - if (this.currentEditingPermission) { - // Update existing user's permission name - const userIndex = this.userData.findIndex((u) => u.userId === this.currentEditingPermission!.userId); - - if (userIndex !== -1) { - // Find and replace the selected permission with the new name - const updatedPermissions = this.userData[userIndex].permissions.map((perm) => - perm === formValue.selectedPermission ? formValue.permissionName : perm - ); - - this.userData[userIndex] = { - ...this.userData[userIndex], - permissions: updatedPermissions, - }; - } - } else { - // Add new role (create a new user with the role) - const newUser: UserData = { - userId: (this.userData.length + 1).toString().padStart(3, '0'), - name: ` ${formValue.roleName}`, - email: `user${this.userData.length + 1}@example.com`, - mobileNumber: '0000000000', - role: formValue.roleName, - permissions: formValue.permission, - }; - - this.userData.push(newUser); - this.store.dispatch( - otpActions.createRole({ - name: formValue.roleName, - permissions: formValue.permission, - authToken: this.userToken, - }) - ); - } - - this.closePermissionDialog(); - } - } - - public addRole(): void { - this.isEditRole = true; - this.isEditPermission = false; - this.currentEditingUser = null; - this.addRoleForm.reset(); - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - } - - public addPermission(): void { - this.addPermissionDialogRef = this.dialog.open(this.addPermissionDialog, { - width: '500px', - disableClose: false, - }); - } - - public closeAddPermissionDialog(): void { - this.addPermissionDialogRef.close(); - } - - public saveAddPermission(): void {} - - // New methods for tab forms - public saveAddRole(): void { - if (this.addRoleForm.valid) { - const formValue = this.addRoleForm.value; - - // Convert permission IDs to permission names - const permissionNames = this.getPermissionNamesByIds(formValue.permission); - - if (this.isEditRole && this.currentEditingUser) { - // Update existing role - this.store.dispatch( - otpActions.updateRole({ - payload: { - id: (this.currentEditingUser as any).id, - name: formValue.roleName, - cpermissions: formValue.permission, - }, - authToken: this.userToken, - }) - ); - // TODO: Implement role update logic - } else { - // Add new role - this.store.dispatch( - otpActions.createRole({ - name: formValue.roleName, - permissions: permissionNames, - authToken: this.userToken, - }) - ); - } - - this.addRoleForm.reset(); - this.closeDialog(); - } - } - - public saveAddPermissionTab(): void { - if (this.addPermissionTabForm.valid) { - const formValue = this.addPermissionTabForm.value; - - if (this.isEditPermission && this.currentEditingPermission) { - // Update existing permission - this.store.dispatch( - otpActions.updatePermission({ - payload: { - id: (this.currentEditingPermission as any).id, - name: formValue.permission, - }, - authToken: this.userToken, - }) - ); - } else { - // Add new permission - this.store.dispatch( - otpActions.createPermission({ - name: formValue.permission, - - authToken: this.userToken, - }) - ); - } - - this.addPermissionTabForm.reset(); - this.closeDialog(); - } - } - public getCompanyUsers(search?: string): void { - const pageSize = this.paginator?.pageSize || this.currentPageSize; - const pageIndex = this.paginator?.pageIndex || this.currentPageIndex; - const searchTerm = search?.trim() || undefined; - this.store.dispatch( - otpActions.getCompanyUsers({ - authToken: this.userToken, - itemsPerPage: pageSize, - pageNo: pageIndex, - search: searchTerm, - exclude_role_ids: this.exclude_role_ids, - include_role_ids: this.include_role_ids, - }) - ); - } - - public onUsersPageChange(event: PageEvent): void { - this.currentPageIndex = event.pageIndex; - this.currentPageSize = event.pageSize; - const searchTerm = this.searchTerm?.trim() || undefined; - // API expects 1-based page number - this.store.dispatch( - otpActions.getCompanyUsers({ - authToken: this.userToken, - itemsPerPage: event.pageSize, - pageNo: event.pageIndex, - search: searchTerm, - }) - ); - } - public getRoles(): void { - const pageSize = this.rolesPaginator?.pageSize || 1000; - this.store.dispatch(otpActions.getRoles({ authToken: this.userToken, itemsPerPage: pageSize })); - } - - public onRolesPageChange(event: PageEvent): void { - this.store.dispatch(otpActions.getRoles({ authToken: this.userToken, itemsPerPage: event.pageSize })); - } - public getPermissions(): void { - const pageSize = 1000; - this.store.dispatch(otpActions.getPermissions({ authToken: this.userToken, itemsPerPage: pageSize })); - } - - public refreshFormData(): void { - // Force change detection to update multiselect options - setTimeout(() => { - // Trigger change detection by updating the arrays - this.permissions = [...this.permissions]; - this.roles = [...this.roles]; - - // Update filtered data as well - this.filteredPermissionsData = [...this.permissions]; - this.filteredRolesData = [...this.roles]; - - // Update data sources - this.permissionsDataSource.data = this.filteredPermissionsData; - this.rolesDataSource.data = this.filteredRolesData; - }, 100); - } - - // Role management methods - public applyRoleFilter(): void { - if (!this.roleSearchTerm || this.roleSearchTerm.trim() === '') { - this.filteredRolesData = [...this.roles]; - } else { - const searchLower = this.roleSearchTerm.toLowerCase().trim(); - this.filteredRolesData = this.roles.filter( - (role) => - role.name.toLowerCase().includes(searchLower) || - (role.c_permissions && - role.c_permissions.some((permission: any) => - permission.name.toLowerCase().includes(searchLower) - )) - ); - } - this.rolesDataSource.data = this.filteredRolesData; - } - - public openAddRoleDialog(): void { - // Open the existing add role dialog - this.addRole(); - } - - public editRole(role: any, index: number): void { - // Set the current editing role - this.currentEditingUser = role; - this.isEditRole = true; - this.isEditPermission = false; - this.isEditUser = false; - - // Get permission IDs from the role's permissions - const permissionIds = role.c_permissions ? role.c_permissions.map((p: any) => p.id) : []; - // Open the add user dialog (which contains the role form) - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - - // Populate the addRoleForm with the role data after dialog is opened - setTimeout(() => { - // Ensure permissions are loaded before setting the form values - if (this.permissions && this.permissions.length > 0) { - this.addRoleForm.patchValue({ - roleName: role.name, - description: `Description for ${role.name} role`, - permission: permissionIds, - }); - - // Verify the form was updated correctly - } else { - // Retry after a longer delay if permissions are not loaded - setTimeout(() => { - this.addRoleForm.patchValue({ - roleName: role.name, - description: `Description for ${role.name} role`, - permission: permissionIds, - }); - }, 500); - } - }, 100); - } - - // Permission management methods - public applyPermissionFilter(): void { - if (!this.permissionSearchTerm || this.permissionSearchTerm.trim() === '') { - this.filteredPermissionsData = [...this.permissions]; - } else { - const searchLower = this.permissionSearchTerm.toLowerCase().trim(); - this.filteredPermissionsData = this.permissions.filter((permission) => - permission.name.toLowerCase().includes(searchLower) - ); - } - this.permissionsDataSource.data = this.filteredPermissionsData; - } - - public openAddPermissionDialog(): void { - this.isEditPermission = true; - this.isEditRole = false; - this.currentEditingPermission = null; - this.addPermissionTabForm.reset(); - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - } - - public editPermission(permission: any, index: number): void { - this.currentEditingPermission = permission; - this.isEditPermission = true; - this.isEditRole = false; - - this.addPermissionTabForm.patchValue({ - permission: permission.name, - description: `Description for ${permission.name} permission`, - }); - - this.addUserDialogRef = this.dialog.open(this.addUserDialog, { - width: '500px', - panelClass: this.theme === 'dark' ? ['dark-dialog'] : [], - disableClose: false, - }); - } - - // Dialog helper methods - public getDialogTitle(): string { - if (this.isEditPermission) { - return this.currentEditingPermission ? 'Edit Permission' : 'Add New Permission'; - } else if (this.isEditRole) { - return this.currentEditingUser ? 'Edit Role' : 'Add New Role'; - } else if (this.isEditUser) { - return 'Edit member'; - } else { - return 'Add New member'; - } - } - - public getSaveAction(): void { - if (this.isEditPermission) { - this.saveAddPermissionTab(); - } else if (this.isEditRole) { - this.saveAddRole(); - } else if (this.isEditUser) { - this.saveUser(); - } else { - this.saveUser(); - } - } - - public getFormInvalid(): boolean { - if (this.isEditPermission) { - return this.addPermissionTabForm.invalid; - } else if (this.isEditRole) { - return this.addRoleForm.invalid; - } else if (this.isEditUser) { - return this.addUserForm.invalid; - } else { - return this.addUserForm.invalid; - } - } - - public getSaveButtonText(): string { - if (this.isEditPermission) { - return this.currentEditingPermission ? 'Update Permission' : 'Add Permission'; - } else if (this.isEditRole) { - return this.currentEditingUser ? 'Update Role' : 'Add Role'; - } else if (this.isEditUser) { - return 'Update member'; - } else { - return 'Add member'; - } - } - - public getAvailableAdditionalPermissions(): any[] { - if (!this.currentEditingUser) { - return []; - } - - // Get role permissions - const rolePermissions = this.getRolePermissions(); - const rolePermissionNames = rolePermissions.map((p) => p.name); - - // Get permissions that are NOT part of the role - const availablePermissions = this.permissions.filter( - (permission) => !rolePermissionNames.includes(permission.name) - ); - - return availablePermissions; - } - - private getRolePermissions(): any[] { - if (!this.currentEditingUser) { - return []; - } - const userRole = this.roles.find((role) => role.name === this.currentEditingUser.role); - if (!userRole || !userRole.c_permissions) { - return []; - } - - return userRole.c_permissions; - } - - public onPermissionSelectOpenedChange(isOpen: boolean): void { - if (isOpen) { - // Use setTimeout to ensure the CDK overlay is created - setTimeout(() => { - // Find all CDK overlay panes - const overlayPanes = document.querySelectorAll('.cdk-overlay-pane'); - overlayPanes.forEach((pane: Element) => { - // Check if this pane contains the permission-select-panel - const hasPermissionPanel = pane.querySelector('.mat-select-panel.permission-select-panel'); - if (hasPermissionPanel && !pane.classList.contains('permission-select-panel')) { - pane.classList.add('permission-select-panel'); - } - }); - }, 0); - } else { - // Optionally remove the class when closed - const overlayPanes = document.querySelectorAll('.cdk-overlay-pane.permission-select-panel'); - overlayPanes.forEach((pane: Element) => { - const hasPermissionPanel = pane.querySelector('.mat-select-panel.permission-select-panel'); - if (!hasPermissionPanel) { - pane.classList.remove('permission-select-panel'); - } - }); - } - } - - private setupPaginatorSelectObserver(): void { - const overlayContainer = document.querySelector('.cdk-overlay-container'); - if (overlayContainer) { - const observer = new MutationObserver((mutations) => { - mutations.forEach((mutation) => { - mutation.addedNodes.forEach((node) => { - if (node.nodeType === 1) { - const element = node as Element; - // Check if this is a bounding-box that was just added - if (element.classList.contains('cdk-overlay-connected-position-bounding-box')) { - this.checkAndMarkPaginatorSelect(element); - } else { - // Check if bounding-box was added inside this element - const boundingBox = element.querySelector( - '.cdk-overlay-connected-position-bounding-box' - ); - if (boundingBox) { - this.checkAndMarkPaginatorSelect(boundingBox); - } - } - } - }); - }); - }); - - observer.observe(overlayContainer, { - childList: true, - subtree: true, - }); - - // Store observer for cleanup - (this as any)._paginatorSelectObserver = observer; - } - } - - private checkAndMarkPaginatorSelect(box: Element): void { - const selectPanel = box.querySelector('.mat-select-panel'); - - if (selectPanel) { - // Check if it's a permission-select-panel (has panelClass="permission-select-panel") - const hasPermissionPanel = selectPanel.classList.contains('permission-select-panel'); - - if (hasPermissionPanel) { - // Mark as permission select for height: auto - if (!box.classList.contains('permission-select-bounding-box')) { - box.classList.add('permission-select-bounding-box'); - } - } else { - // If not a permission panel, check if it's from a paginator - const paginators = document.querySelectorAll('mat-paginator'); - let isFromPaginator = false; - - paginators.forEach((paginator) => { - // Check all possible ways to identify paginator selects - const selectTrigger = paginator.querySelector('.mat-select-trigger'); - const pageSizeSelect = paginator.querySelector('.mat-paginator-page-size mat-select'); - - if (selectTrigger || pageSizeSelect) { - const trigger = selectTrigger || pageSizeSelect; - if (trigger) { - const ariaOwns = trigger.getAttribute('aria-owns'); - - // Check if this panel matches the paginator's select - if (ariaOwns && selectPanel.id) { - if ( - selectPanel.id === ariaOwns || - selectPanel.id.includes(ariaOwns) || - ariaOwns.includes(selectPanel.id) - ) { - isFromPaginator = true; - } - } - - // Also check by looking at the parent structure - if (!isFromPaginator) { - const pageSizeElement = paginator.querySelector('.mat-paginator-page-size'); - if (pageSizeElement && pageSizeElement.contains(trigger as Node)) { - // This is likely a paginator select - isFromPaginator = true; - } - } - } - } - }); - - // Add class immediately if it's from paginator - if (isFromPaginator && !box.classList.contains('paginator-select-bounding-box')) { - box.classList.add('paginator-select-bounding-box'); - } - } - } - } -} diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.html b/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.html deleted file mode 100644 index 9376e13f..00000000 --- a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.html +++ /dev/null @@ -1,10 +0,0 @@ -
    -

    Confirm Action

    -
    -

    Are you sure you want to leave this company?

    -
    -
    - - -
    -
    diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.scss b/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.scss deleted file mode 100644 index e4f6df68..00000000 --- a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.scss +++ /dev/null @@ -1,99 +0,0 @@ -// ViewEncapsulation.None — styles are global, scoped by panel class or wrapper class. - -// ── DIALOG SURFACE — dark theme ─────────────────────────────────────────────── -// .confirm-dialog-dark is added via dialogRef.addPanelClass() on .cdk-overlay-pane -// so it sits above .mat-mdc-dialog-container, letting us override the surface bg. - -.confirm-dialog-dark { - .mdc-dialog__surface, - .mat-mdc-dialog-surface { - background-color: #1e1e20 !important; - border: 1px solid rgba(255, 255, 255, 0.1) !important; - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6) !important; - } - .mat-dialog-container { - background-color: dimgray; - } -} - -// ── INNER CONTENT — shared ───────────────────────────────────────────────────── - -.confirm-dialog-wrap { - padding: 4px; - - [mat-dialog-title] { - font-size: 16px; - font-weight: 700; - letter-spacing: -0.2px; - } - - [mat-dialog-content] p { - font-size: 14px; - line-height: 1.6; - margin: 0; - } - - [mat-dialog-actions] { - padding-bottom: 4px; - } - - .btn-dlg-cancel, - .btn-dlg-leave { - border-radius: 7px !important; - font-size: 13px !important; - font-weight: 600 !important; - } - - // ── LIGHT ── - &.light { - [mat-dialog-title] { - color: #111827; - } - [mat-dialog-content] { - color: #374151; - } - - .btn-dlg-cancel { - color: #374151 !important; - border-color: #d1d5db !important; - background: #ffffff !important; - &:hover { - border-color: #9ca3af !important; - } - } - .btn-dlg-leave { - background-color: #dc2626 !important; - color: #ffffff !important; - &:hover { - background-color: #b91c1c !important; - } - } - } - - // ── DARK ── - &.dark { - [mat-dialog-title] { - color: #ffffff; - } - [mat-dialog-content] { - color: #c5c5ca; - } - - .btn-dlg-cancel { - color: #e5e7eb !important; - border-color: rgba(255, 255, 255, 0.35) !important; - background: transparent !important; - &:hover { - border-color: rgba(255, 255, 255, 0.65) !important; - color: #ffffff !important; - } - } - .btn-dlg-leave { - background-color: #c0392b !important; - color: #ffffff !important; - &:hover { - background-color: #e74c3c !important; - } - } - } -} diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.ts b/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.ts deleted file mode 100644 index ff85d030..00000000 --- a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Component, Inject, ViewEncapsulation } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { select, Store } from '@ngrx/store'; -import { leaveCompany } from '../../store/actions/otp.action'; -import { Observable } from 'rxjs'; -import { leaveCompanySuccess } from '../../store/selectors'; -import { IAppState } from '../../store/app.state'; - -@Component({ - selector: 'proxy-confirmation-dialog', - templateUrl: './user-dialog.component.html', - styleUrls: ['./user-dialog.component.scss'], - encapsulation: ViewEncapsulation.None, -}) -export class ConfirmationDialogComponent { - deleteCompany$: Observable; - theme: string; - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: { companyId: any; authToken: string; theme: string }, - private store: Store - ) { - this.deleteCompany$ = this.store.pipe(select(leaveCompanySuccess)); - this.theme = data.theme; - if (this.theme === 'dark') { - this.dialogRef.addPanelClass('confirm-dialog-dark'); - } - } - - confirmleave() { - this.store.dispatch( - leaveCompany({ - companyId: this.data.companyId, - authToken: this.data.authToken, - }) - ); - - this.deleteCompany$.pipe().subscribe((res) => { - if (res) { - window.parent.postMessage( - { type: 'proxy', data: { event: 'userLeftCompany', companyId: this.data.companyId } }, - '*' - ); - this.dialogRef.close('confirmed'); - } - }); - } - - closeDialog(action: string): void { - this.dialogRef.close(action); - } -} diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.module.ts b/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.module.ts deleted file mode 100644 index 19be6788..00000000 --- a/apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatButtonModule } from '@angular/material/button'; -import { ConfirmationDialogComponent } from '../user-dialog/user-dialog.component'; -import { OtpService } from '../../service/otp.service'; - -@NgModule({ - declarations: [ConfirmationDialogComponent], - imports: [CommonModule, MatDialogModule, MatButtonModule], - exports: [ConfirmationDialogComponent, MatDialogModule], - providers: [OtpService], -}) -export class UserDialogModule {} diff --git a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.html b/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.html deleted file mode 100644 index 0d47758e..00000000 --- a/apps/proxy-auth/src/app/otp/user-profile/user-profile.component.html +++ /dev/null @@ -1,260 +0,0 @@ -
    - -
    -
    -
    -
    - - - - -
    -
    -
    User Details
    -
    Manage your personal information
    -
    -
    - - -
    - - -
    -
    -
    {{ previousName || 'U' | slice: 0:2 | uppercase }}
    - -
    -
    -
    {{ previousName || 'User' }}
    -
    {{ clientForm.get('email')?.value }}
    -
    - - - - - {{ (userDetails$ | async)?.c_companies?.length || 0 }} Organizations -
    -
    -
    - - -
    -
    -
    - - - - -
    -
    -
    Full Name
    -
    {{ previousName }}
    -
    -
    -
    -
    - - - - -
    -
    -
    Mobile
    -
    - {{ - clientForm.get('mobile')?.value === '--Not Provided--' - ? 'Not provided' - : clientForm.get('mobile')?.value || 'Not provided' - }} -
    -
    -
    -
    -
    - - - - -
    -
    -
    Email Address
    -
    {{ clientForm.get('email')?.value }}
    -
    -
    -
    - - -
    -
    -
    - - Full Name - - Name is required. - Invalid name format. - -
    - -
    - - Mobile - - - -
    - -
    - - Email - - - -
    -
    - - -
    -
    - - -
    -
    -
    -
    - - - - -
    -
    -
    Organizations
    -
    Workspaces you're a member of
    -
    -
    - {{ (userDetails$ | async)?.c_companies?.length || 0 }} total -
    - - - - - - - - - - - - - - -
    Organization -
    -
    - {{ element.name | slice: 0:2 | uppercase }} -
    - - {{ element.name }} - ● Current - -
    -
    Actions - -
    - -

    - Nothing here — there are no companies to show -

    -
    -
    diff --git a/apps/proxy-auth/src/app/shadow-dom-overlay-container.ts b/apps/proxy-auth/src/app/shadow-dom-overlay-container.ts deleted file mode 100644 index a7a4d837..00000000 --- a/apps/proxy-auth/src/app/shadow-dom-overlay-container.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { DOCUMENT } from '@angular/common'; -import { Inject, Injectable } from '@angular/core'; -import { OverlayContainer } from '@angular/cdk/overlay'; -import { Platform } from '@angular/cdk/platform'; - -const CONTAINER_CLASS = 'cdk-overlay-container'; -/** - * Full-viewport overlay container style so positioning is viewport-based when in shadow root. - * z-index is set to 9999 — well above the content z-indices used inside the shadow root - * (send-otp .container = 1000, user-profile/user-management .container = 10). The container - * is also appended as the LAST child of the shadow root so that, even when a content element - * ends up with an equal z-index via the CSS cascade, DOM-order tie-breaking still favours the - * overlay. - */ -const OVERLAY_CONTAINER_STYLE = - 'position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;pointer-events:none!important;z-index:9999!important;'; -/** - * OverlayContainer that: - * - When proxy-auth with shadow root exists (script load): attaches the overlay as the - * **last** child of the shadow root with full-viewport fixed style and a high z-index, - * ensuring MatDialog / MatSnackBar / dropdowns always render above the component content. - * - Otherwise: attaches to document.body (default behaviour). - */ -@Injectable() -export class ShadowDomOverlayContainer extends OverlayContainer { - constructor(@Inject(DOCUMENT) document: Document, _platform: Platform) { - super(document, _platform); - } - - /** - * Before returning the cached container, check whether it is still - * connected to the live document. This can become false when the client - * application does a SPA navigation that removes the custom - * element (and therefore its shadow root) from the DOM. A new - * element is created by initVerification() on the next - * navigation, but the CDK base class would keep returning the old, - * detached container — causing MatDialog / MatSnackBar to render into an - * invisible node. Clearing _containerElement forces _createContainer() - * to run again and attach the overlay to the new shadow root. - */ - override getContainerElement(): HTMLElement { - if (this._containerElement && !this._containerElement.isConnected) { - this._containerElement = null; - } - return super.getContainerElement(); - } - - protected override _createContainer(): void { - if (!this._platform.isBrowser) { - return; - } - - const container = this._document.createElement('div'); - container.classList.add(CONTAINER_CLASS); - - const parent = this._getOverlayParent(); - if (parent !== this._document.body) { - container.setAttribute('style', OVERLAY_CONTAINER_STYLE); - } - parent.appendChild(container); - this._containerElement = container; - } - - private _getOverlayParent(): HTMLElement { - const host = - (this._document.querySelector('proxy-auth:not([data-master])') as HTMLElement | null) ?? - (this._document.querySelector('proxy-auth') as HTMLElement | null); - - if (host?.shadowRoot) { - return host.shadowRoot as unknown as HTMLElement; - } - return this._document.body; - } -} diff --git a/apps/proxy-auth/src/assets/scss/component/_form-field.scss b/apps/proxy-auth/src/assets/scss/component/_form-field.scss deleted file mode 100644 index 50b2558b..00000000 --- a/apps/proxy-auth/src/assets/scss/component/_form-field.scss +++ /dev/null @@ -1,118 +0,0 @@ -// Default theme changes -.mat-form-field { - .mat-form-field-wrapper { - .mat-form-field-subscript-wrapper { - margin-top: 5px; - padding-left: 0px; - .mat-error { - font-size: 12px; - } - } - .mat-form-field-flex { - font-size: 14px; - line-height: 1.225; - .mat-form-field-infix { - .mat-form-field-label-wrapper { - .mat-form-field-label { - color: var(--color-common-slate); - } - } - } - .mat-form-field-infix { - padding: 5px 0 10px 0 !important; - .mat-input-element { - &::-webkit-input-placeholder { - /* Chrome/Opera/Safari */ - color: var(--color-common-grey); - font-weight: normal; - } - &::-moz-placeholder { - /* Firefox 19+ */ - color: var(--color-common-grey); - font-weight: normal; - } - &:-ms-input-placeholder { - /* IE 10+ */ - color: var(--color-common-grey); - font-weight: normal; - } - &:-moz-placeholder { - /* Firefox 18- */ - color: var(--color-common-grey); - font-weight: normal; - } - } - // .mat-form-field-label-wrapper { - // .mat-form-field-required-marker { - // display: none; - // } - // } - &.mat-form-field-appearance-outline { - .mat-form-field-outline { - background-color: var(--color-common-white) !important; - } - } - } - .mat-form-field-flex { - .mat-form-field-outline { - .mat-form-field-outline-start { - border-radius: var(--border-common-radius-4) 0 0 var(--border-common-radius-4); - min-width: var(--border-common-radius-4); - } - .mat-form-field-outline-end { - border-radius: 0 var(--border-common-radius-4) var(--border-common-radius-4) 0; - } - } - } - } - .mat-form-field-hint-wrapper { - .mat-hint { - color: var(--color-common-slate); - font-size: 12px; - line-height: 16px; - } - } - } - - &.no-space { - .mat-form-field-wrapper { - padding-bottom: 0px !important; - } - } -} - -.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, -.mat-form-field-appearance-outline.mat-form-field-can-float - .mat-input-server:focus - + .mat-form-field-label-wrapper - .mat-form-field-label { - transform: translateY(-15px) scale(0.7) !important; -} - -.mat-form-field-appearance-outline .mat-form-field-label { - top: 18px !important; -} - -/* Firefox hide */ -input[matinput][type='number'] { - -moz-appearance: textfield; -} -/* Chrome, Safari, Edge, Opera */ -input[matinput]::-webkit-outer-spin-button, -input[matinput]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -// Material Form Error -.mat-error { - font-size: 12px; -} - -// Used to display only first mat-error -mat-error { - display: none !important; - &:first-child { - display: block !important; - } -} diff --git a/apps/proxy-auth/src/assets/scss/component/_tabs.scss b/apps/proxy-auth/src/assets/scss/component/_tabs.scss deleted file mode 100644 index 29072caf..00000000 --- a/apps/proxy-auth/src/assets/scss/component/_tabs.scss +++ /dev/null @@ -1,24 +0,0 @@ -.user-management-tabs { - .mat-tab-header { - .mat-tab-labels { - .mat-tab-label { - font-weight: 600 !important; - color: var(--color-common-black) !important; - opacity: 1 !important; - &:focus { - color: var(--color-common-black) !important; - } - } - } - } -} - -.nested-tabs { - .mat-tab-header { - .mat-tab-labels { - .mat-tab-label { - font-weight: 500 !important; - } - } - } -} diff --git a/apps/proxy-auth/src/assets/scss/layout/_positions.scss b/apps/proxy-auth/src/assets/scss/layout/_positions.scss deleted file mode 100644 index e2116e0f..00000000 --- a/apps/proxy-auth/src/assets/scss/layout/_positions.scss +++ /dev/null @@ -1,10 +0,0 @@ -.position-relative { - position: relative !important; -} -.position-absolute { - position: absolute !important; -} - -.w-100 { - width: 100% !important; -} diff --git a/apps/proxy-auth/src/environments/env-variables.ts b/apps/proxy-auth/src/environments/env-variables.ts deleted file mode 100644 index 6a1d0c01..00000000 --- a/apps/proxy-auth/src/environments/env-variables.ts +++ /dev/null @@ -1,8 +0,0 @@ -export const envVariables = { - uiEncodeKey: process.env.AUTH_UI_ENCODE_KEY, - uiIvKey: process.env.AUTH_UI_IV_KEY, - apiEncodeKey: process.env.AUTH_API_ENCODE_KEY, - apiIvKey: process.env.AUTH_API_IV_KEY, - sendOtpAuthKey: process.env.SEND_OTP_AUTH_KEY, - hCaptchaSiteKey: process.env.HCAPTCHA_SITE_KEY, -}; diff --git a/apps/proxy-auth/src/intl.scss b/apps/proxy-auth/src/intl.scss deleted file mode 100644 index c036dca9..00000000 --- a/apps/proxy-auth/src/intl.scss +++ /dev/null @@ -1,224 +0,0 @@ -// #phone, -// #init-contact { -// height: 38.73px; -// border: 1px solid #d5d9dc; -// border-radius: 8px; -// font-weight: 400; -// font-size: 14px; -// line-height: 16px; -// color: #3f4346; -// // padding-left: 12px !important; -// // z-index: 9; -// } - -// #phone:focus, -// #init-contact:focus { -// border-color: transparent; -// outline: 2px solid #1e75ba !important; -// } -// // .iti__selected-flag { -// // font-weight: 400; -// // font-size: 14px; -// // line-height: 16px; -// // } - -// .iti { -// display: block !important; -// } - -// // .iti .dropdown-menu.country-dropdown { -// // border-top-left-radius: 0px; -// // border-top-right-radius: 0px; -// // border-color: #c7cace; -// // margin-top: 0px; -// // padding-top: 0px; -// // padding-bottom: 0px; - -// // overflow: hidden; -// // } - -// .iti .iti__country-list { -// box-shadow: none; -// font-size: 14px; -// margin-left: 0; -// width: 290px; -// max-height: 250px; -// } -// // .iti__flag-container.open + input { -// // border-bottom-left-radius: 0px; -// // border-bottom-right-radius: 0px; -// // } - -// // .iti .search-container input { -// // font-size: 14px; -// // border-color: #c7cace; -// // border-radius: 0; -// // padding: 5px 10px; -// // } - -// // .iti .search-container input:focus { -// // outline: none; -// // } -// .iti__country { -// white-space: nowrap; -// overflow: hidden !important; -// text-overflow: ellipsis; -// padding: 10px 10px !important; -// color: #3f4346 !important; -// font-weight: 500 !important; -// .iti__flag-box { -// margin-right: 12px; -// } -// &:hover, -// &.iti__highlight { -// background-color: #d5e0f8 !important; -// } -// } -// // .iti .iti__country-list { -// // border-radius: 0px; -// // } -// // .iti { -// // display: flex !important; -// // } -// // .iti__flag-container { -// // position: relative; -// // top: -1px; -// // left: 1px !important; -// // } -// // .iti__selected-flag { -// // // &:hover, -// // // &:focus { -// // // outline: 1px solid #3498db; -// // // } -// // font-weight: 400; -// // font-size: 14px; -// // line-height: 16px; -// // // border: 1px solid #d5d9dc; -// // // border-radius: 8px; -// // // background-color: transparent !important; -// // height: 36px; -// // } - -// // @media screen and (max-width: 479px) { -// // .iti .iti__country-list { -// // width: 88.3vw; -// // } -// // } - -// // ngx-intl-tel-input input { -// // height: 44px; -// // margin-bottom: 20px; -// // padding: 10px; -// // border-style: solid; -// // border-width: 1px; -// // border-color: #c7cace; -// // border-radius: 4px; -// // font-size: 18px; -// // } - -// // ngx-intl-tel-input.ng-invalid.ng-touched input { -// // border: 1px solid #c0392b; -// // } - -// // ngx-intl-tel-input input:hover { -// // // box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.24); -// // } - -// // ngx-intl-tel-input input:focus { -// // outline: none !important; -// // // border-color: #3498db !important; -// // box-shadow: 0 0 0 0 #000; -// // } - -// // ngx-intl-tel-input input::-webkit-input-placeholder { -// // color: #bac2c7; -// // } - -// // ngx-intl-tel-input input:-ms-input-placeholder { -// // color: #bac2c7; -// // } - -// // ngx-intl-tel-input input::-ms-input-placeholder { -// // color: #bac2c7; -// // } - -// // ngx-intl-tel-input input::placeholder { -// // color: #bac2c7; -// // } - -// // ngx-intl-tel-input input[disabled] { -// // background-color: #e5eaf1; -// // } - -// // #phone, -// .selected-dial-code { -// font-weight: 400; -// font-size: 14px; -// } -// // #phone { -// // border-color: #d5d9dc !important; -// // border-radius: 8px !important; -// // } -// .selected-dial-code { -// color: #8f9396; -// } -// .dropdown-menu { -// &.country-dropdown { -// width: 291px !important; -// border-radius: 8px 8px 0px 0px !important; -// border-color: #d5d9dc !important; -// ul { -// width: 100%; -// } -// } -// } - -// // .iti__flag { -// // background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags.png'); -// // } - -// // @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { -// // .iti__flag { -// // background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags@2x.png'); -// // } -// // } -// // .iti__dial-code { -// // color: #3f4346; -// // } -// .invalid-input { -// outline: 2px solid #cc5229; -// } -// * { -// scrollbar-width: thin; -// } - -// /* Works on Chrome/Edge/Safari */ -// *::-webkit-scrollbar { -// width: 6px; -// height: 6px; -// } - -// /* Track */ -// ::-webkit-scrollbar-track { -// border-radius: 4px; -// background: rgb(217 217 217 / 60%); -// } - -// /* Handle */ -// ::-webkit-scrollbar-thumb { -// background: rgb(182 182 182 / 80%); -// border-radius: 4px; -// } - -// /* Handle on hover */ -// ::-webkit-scrollbar-thumb:hover { -// background: rgb(182 182 182 / 90%); -// } - -// // Country Dropdown search design changes -// // .search-container { -// // margin: 6px; -// // input { -// // height: 36px; -// // } -// // } diff --git a/apps/proxy-auth/src/main.element.ts b/apps/proxy-auth/src/main.element.ts deleted file mode 100644 index aa82f6db..00000000 --- a/apps/proxy-auth/src/main.element.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { ElementModule } from './app/element.module'; -import { environment } from './environments/environment'; -import 'zone.js'; -import 'zone.js/dist/webapis-shadydom.js'; // For webcomponents compatibility -import '@webcomponents/custom-elements/src/native-shim'; -import '@webcomponents/custom-elements/custom-elements.min'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(ElementModule) - .catch((err) => console.log(err)); diff --git a/apps/proxy-auth/src/main.ts b/apps/proxy-auth/src/main.ts deleted file mode 100644 index 207c6dde..00000000 --- a/apps/proxy-auth/src/main.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(AppModule) - .catch((err) => console.error(err)); diff --git a/apps/proxy-auth/src/otp-global.scss b/apps/proxy-auth/src/otp-global.scss deleted file mode 100644 index fe218982..00000000 --- a/apps/proxy-auth/src/otp-global.scss +++ /dev/null @@ -1,376 +0,0 @@ -.otp-verification-dialog { - width: 380px; - min-height: 350px; - font-size: 15px; - color: #ffffff; - text-align: center; - display: inherit; - flex-direction: column; - align-items: inherit; - // transition: all 0.5s ease; - box-shadow: 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024, 0 9px 46px 8px #0000001f; - background: #ffffff; - color: #000000de; - z-index: 999999 !important; - border-radius: 10px; - padding: 25px 32px; - justify-content: center; - position: relative; - overflow-y: auto; - @media only screen and (max-width: 768px) { - width: 90% !important; - height: 80%; - display: flex; - align-items: center; - justify-content: center; - .close-dialog { - svg path { - fill: white; - } - } - } - &.animation-container { - -webkit-animation: login-zoom 2s; - animation: login-zoom 2s; - animation-fill-mode: both; - } - &.register-user { - width: 600px; - z-index: 9999999 !important; - } - &.dark-theme { - background-color: #616161 !important; - color: #ffffff !important; - } - - .otp-verification-header { - position: relative; - .otp-verification-title { - font-weight: 500; - font-size: 20px; - line-height: 24px; - text-align: center; - color: #3f4346; - margin-top: 0px; - margin-bottom: 24px; - } - } - .otp-verification-content { - display: flex; - flex-direction: column; - overflow: visible; - - &.button-gap { - gap: 8px; - } - - .otp-mode { - font-weight: 400; - font-size: 14px; - color: #3f4346; - margin-bottom: 24px; - .mat-radio-button { - margin-right: 14px; - .mat-radio-ripple { - width: 26px !important; - height: 26px !important; - left: calc(50% - 13px); - top: calc(50% - 15px); - } - .mat-radio-container, - .mat-radio-outer-circle, - .mat-radio-inner-circle { - width: 16px !important; - height: 16px !important; - } - } - } - .otp-verification-sub-title { - font-weight: 400; - font-size: 14px; - line-height: 16px; - text-align: center; - color: #3f4346; - margin-bottom: 16px; - margin-top: 0px; - .input-email { - max-width: 290px; - display: block; - } - } - .resend-otp { - font-weight: 400; - font-size: 12px; - line-height: 16px; - text-align: center; - color: #5d6164; - display: flex; - align-items: center; - justify-content: center; - padding-top: 24px; - a { - color: #1157a6 !important; - font-weight: 500; - padding: 0px 4px; - font-size: 12px; - } - .mat-button-disabled { - pointer-events: none; - color: #c1c5c8 !important; - } - } - } - .mat-progress-bar { - position: absolute; - width: 372px; - top: 0px; - &.mat-progress-bar { - border-radius: 8px 8px 0px 0px; - @media screen and (max-width: 700px) { - border-radius: 0px; - } - } - .mat-progress-bar-fill::after { - background-color: #1157a6 !important; - } - @media screen and (max-width: 700px) { - width: 100%; - } - } -} -.otp-verification-footer { - // margin-top: 64px; - font-weight: 400; - font-size: 12px; - color: #8f9396; - display: flex; - align-items: flex-end; - justify-content: center; - // background-color: #3f4346; - // border-radius: 8px; - // padding: 6px 8px; - position: fixed; - left: 28px; - bottom: 28px; - img { - margin-left: 8px; - } - @media only screen and (max-width: 768px) { - text-align: center; - width: 80%; - } -} - -.layer { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(33, 37, 40, 0.7); -} - -// .mat-form-field-wrapper { -// margin: 0px !important; -// } -// .mat-form-field-appearance-outline { -// .mat-form-field-infix { -// padding: 1.2em 0 0.8em 0 !important; -// border-top: 0px solid transparent !important; -// font-size: 14px; -// font-weight: 400; -// color: #3f4346; -// .mat-input-element { -// &::-webkit-input-placeholder { -// /* Chrome/Opera/Safari */ -// color: #8f9396; -// font-weight: 400; -// } -// &::-moz-placeholder { -// /* Firefox 19+ */ -// color: #8f9396; -// font-weight: 400; -// } -// &:-ms-input-placeholder { -// /* IE 10+ */ -// color: #8f9396; -// font-weight: 400; -// } -// &:-moz-placeholder { -// /* Firefox 18- */ -// color: #8f9396; -// font-weight: 400; -// } -// } -// } -// .mat-form-field-flex { -// .mat-form-field-outline { -// .mat-form-field-outline-start { -// border-radius: 4px 0 0 4px; -// min-width: 8px; -// } -// .mat-form-field-outline-end { -// border-radius: 0 4px 4px 0; -// } -// } -// } -// } - -.disabled { - pointer-events: none; -} - -// Utility Classes -.overflow-dotted { - white-space: nowrap; - overflow: hidden !important; - text-overflow: ellipsis; -} - -@keyframes login-zoom { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -.animation-complete { - opacity: 0; - transform: scale(0.6); -} -.subscription-dialog { - min-height: 350px; - font-size: 20px; - color: #ffffff; - text-align: center; - display: inherit; - flex-direction: column; - align-items: inherit; - // transition: all 0.5s ease; - box-shadow: 0 11px 15px -7px #0003, 0 24px 38px 3px #00000024, 0 9px 46px 8px #0000001f; - background: #ffffff; - color: #000000de; - z-index: 999999 !important; - border-radius: 10px; - justify-content: center; - position: relative; - overflow-y: auto; - @media only screen and (max-width: 768px) { - width: 90% !important; - height: 80%; - display: flex; - align-items: center; - justify-content: center; - .close-dialog { - svg path { - fill: white; - } - } - } - &.animation-container { - -webkit-animation: login-zoom 2s; - animation: login-zoom 2s; - animation-fill-mode: both; - } - &.register-user { - width: 600px; - z-index: 9999999 !important; - } - - .otp-verification-header { - position: relative; - .otp-verification-title { - font-weight: 500; - font-size: 20px; - line-height: 24px; - text-align: center; - color: #3f4346; - margin-top: 0px; - margin-bottom: 24px; - } - } - .otp-verification-content { - display: flex; - flex-direction: column; - overflow: visible; - - &.button-gap { - gap: 8px; - } - - .otp-mode { - font-weight: 400; - font-size: 14px; - color: #3f4346; - margin-bottom: 24px; - .mat-radio-button { - margin-right: 14px; - .mat-radio-ripple { - width: 26px !important; - height: 26px !important; - left: calc(50% - 13px); - top: calc(50% - 15px); - } - .mat-radio-container, - .mat-radio-outer-circle, - .mat-radio-inner-circle { - width: 16px !important; - height: 16px !important; - } - } - } - .otp-verification-sub-title { - font-weight: 400; - font-size: 14px; - line-height: 16px; - text-align: center; - color: #3f4346; - margin-bottom: 16px; - margin-top: 0px; - .input-email { - max-width: 290px; - display: block; - } - } - .resend-otp { - font-weight: 400; - font-size: 12px; - line-height: 16px; - text-align: center; - color: #5d6164; - display: flex; - align-items: center; - justify-content: center; - padding-top: 24px; - a { - color: #1157a6 !important; - font-weight: 500; - padding: 0px 4px; - font-size: 12px; - } - .mat-button-disabled { - pointer-events: none; - color: #c1c5c8 !important; - } - } - } - .mat-progress-bar { - position: absolute; - width: 372px; - top: 0px; - &.mat-progress-bar { - border-radius: 8px 8px 0px 0px; - @media screen and (max-width: 700px) { - border-radius: 0px; - } - } - .mat-progress-bar-fill::after { - background-color: #1157a6 !important; - } - @media screen and (max-width: 700px) { - width: 100%; - } - } -} diff --git a/apps/proxy-auth/src/polyfills.ts b/apps/proxy-auth/src/polyfills.ts deleted file mode 100644 index 08506f78..00000000 --- a/apps/proxy-auth/src/polyfills.ts +++ /dev/null @@ -1,59 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - -declare global { - interface Window { - initVerification: any; - intlTelInput: any; - } -} diff --git a/apps/proxy-auth/src/styles.scss b/apps/proxy-auth/src/styles.scss deleted file mode 100644 index ff9a1376..00000000 --- a/apps/proxy-auth/src/styles.scss +++ /dev/null @@ -1,268 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -@use '@angular/material' as mat; -@import '~@angular/material/prebuilt-themes/indigo-pink.css'; - -/* Layout*/ -@import 'assets/scss/layout/positions.scss'; -@import 'assets/scss/layout/display.scss'; -@import 'assets/scss/layout/spacing.scss'; - -/* Components*/ -@import 'assets/scss/component/form-field'; -@import 'assets/scss/component/tabs'; - -:root { - --color-common-dark: #000000; - --color-common-slate: #333333; - --color-common-rock: #5d6164; - --color-common-grey: #333333; - --color-common-cloud: #c1c5c8; - --color-common-smoke: #d5d9dc; - --color-common-white: #ffffff; - --color-common-black: #000000; - --border-common-radius-4: 4px; - --border-common-radius-8: 8px; - --font-size-11: 11px; - --font-size-12: 12px; - --font-size-14: 14px; - --font-size-16: 16px; - --font-size-18: 18px; - --font-size-24: 24px; - --font-size-28: 28px; - --font-size-30: 30px; - --font-size-36: 36px; -} - -// Theme -$custom-blue: ( - 50: #e6f2fb, - 100: #a4cff0, - 200: #74b5e9, - 300: #3794df, - 400: #2286d4, - 500: #1e75ba, - 600: #1a64a0, - 700: #155485, - 800: #11436b, - 900: #0d3351, - A100: #d8eeff, - A200: #72c1ff, - A400: #1b92ef, - A700: #1c84d6, - contrast: ( - // 50: $dark-primary-text, - // 100: $dark-primary-text, - // 200: $dark-primary-text, - // 300: $dark-primary-text, - 400: #ffffff, - 500: #ffffff, - 600: #ffffff, - 700: #ffffff, - 800: #ffffff, - 900: #ffffff, - // A100: $dark-primary-text, - // A200: $dark-primary-text, - A400: #ffffff, - A700: #ffffff, - ), -); - -$primary: mat.define-palette($custom-blue); -$accent: mat.define-palette($custom-blue); -$warn: mat.define-palette(mat.$red-palette); - -$theme: mat.define-light-theme( - ( - color: ( - primary: $primary, - accent: $accent, - warn: $warn, - ), - ) -); - -/* -// Include all theme styles for the components. -*/ - -/* You can add global styles to this file, and also import other style files */ -html, -body { - margin: 0; - width: 100vw; - height: 100vh; - overflow-x: hidden; - // background-color: black; -} - -*, -proxy-auth, -.iti__country-list { - font-family: 'Inter', sans-serif; - -webkit-font-smoothing: antialiased; -} - -* { - box-sizing: border-box; -} - -.error-snackbar { - background-color: #cc5229 !important; - color: #ffffff !important; - - .mat-simple-snackbar-action .mat-button, - .mat-mdc-snack-bar-action .mat-mdc-button, - .mat-button, - .mat-mdc-button, - .mat-icon { - color: #ffffff !important; - } -} -.success-snackbar { - background-color: #008000 !important; - color: #ffffff !important; - - .mat-simple-snackbar-action .mat-button, - .mat-mdc-snack-bar-action .mat-mdc-button, - .mat-button, - .mat-mdc-button, - .mat-icon { - color: #ffffff !important; - } -} -.mat-snack-bar-container { - margin: 4px !important; - border-radius: 8px; - min-height: 36px; - padding: 10px 16px; - .mat-simple-snackbar-content { - font-size: 14px; - color: #ffffff; - } -} -.default-snackbar { - .mat-simple-snackbar-action .mat-button { - color: #ffffff !important; - background-color: var(--color-email-primary) !important; - } -} - -.common-btn { - &.mat-button { - color: #000000 !important; - .mat-button-focus-overlay { - background-color: #000000 !important; - } - } -} - -.default-table { - background-color: #ffffff; - box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); - border: 1px solid #e0e0e0; - width: 100%; - border-collapse: separate; - border-spacing: 0; - box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); - border-radius: 8px; - overflow: hidden; - - thead { - tr:first-child { - th:first-child { - border-top-left-radius: 8px; - } - th:last-child { - border-top-right-radius: 8px; - } - } - } - - tbody { - tr:last-child { - td:first-child { - border-bottom-left-radius: 8px; - } - td:last-child { - border-bottom-right-radius: 8px; - } - } - } - - th, - td { - padding: 10px; - text-align: left; - border: 1px solid #dddddd; - border-right-width: 0; - border-bottom-width: 0; - } - - th:last-child, - td:last-child { - border-right-width: 1px; - } - - tr:last-child td { - border-bottom-width: 1px; - } - - th { - background: #f4f4f4; - color: #333333; - border-color: #e0e0e0; - font-weight: 800; - } - - td { - color: #434242; - border-color: #e0e0e0; - } - - tr:hover { - background-color: rgba(0, 0, 0, 0.04); - } - - .action-column { - width: 300px; - } -} -.fw-bold { - font-weight: bold; -} - -// ── Dark dropdown panel (Angular Material 14 legacy: mat-select-panel, mat-option) ── -// panelClass="org-dark-select-panel" is used e.g. in organization-details timezone select. -// Overlay is in .cdk-overlay-container; legacy panel uses .mat-select-panel, .mat-option. -.cdk-overlay-container .mat-select-panel.org-dark-select-panel { - background: #2a2a2a !important; -} - -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option { - color: rgba(255, 255, 255, 0.87) !important; - background: transparent; -} - -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option .mat-option-text, -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option span, -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option * { - color: rgba(255, 255, 255, 0.87) !important; -} - -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option:hover:not(.mat-option-disabled), -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option.mat-active { - background: rgba(255, 255, 255, 0.08) !important; -} - -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option.mat-selected:not(.mat-option-disabled) { - background: rgba(25, 118, 210, 0.25) !important; -} - -.cdk-overlay-container - .mat-select-panel.org-dark-select-panel - .mat-option.mat-selected:not(.mat-option-disabled) - .mat-option-text, -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option.mat-selected:not(.mat-option-disabled) span, -.cdk-overlay-container .mat-select-panel.org-dark-select-panel .mat-option.mat-selected:not(.mat-option-disabled) * { - color: #64b5f6 !important; -} diff --git a/apps/proxy-auth/tsconfig.element.json b/apps/proxy-auth/tsconfig.element.json deleted file mode 100644 index b4cb2ed9..00000000 --- a/apps/proxy-auth/tsconfig.element.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "declaration": true, - "outDir": "../out-tsc/app", - "types": [] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": false, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "files": ["src/main.element.ts"], - "include": ["/src/**/*.d.ts"] -} diff --git a/apps/proxy/.browserslistrc b/apps/proxy/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/apps/proxy/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/apps/proxy/.eslintrc.json b/apps/proxy/.eslintrc.json deleted file mode 100644 index 3381ce96..00000000 --- a/apps/proxy/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/apps/proxy/src/app/app-firebase.module.ts b/apps/proxy/src/app/app-firebase.module.ts deleted file mode 100644 index ad44cc88..00000000 --- a/apps/proxy/src/app/app-firebase.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AngularFireAuthModule } from '@angular/fire/compat/auth'; -import { NgModule } from '@angular/core'; -import { environment } from '../environments/environment'; -import { AngularFirestoreModule } from '@angular/fire/compat/firestore'; -import { AngularFireModule } from '@angular/fire/compat'; - -@NgModule({ - imports: [ - AngularFireAuthModule, - AngularFireModule.initializeApp(environment.firebaseConfig), - AngularFirestoreModule, - ], - exports: [AngularFireAuthModule], -}) -export class AppFirebaseModule {} diff --git a/apps/proxy/src/app/app.module.ts b/apps/proxy/src/app/app.module.ts deleted file mode 100644 index 0ac48bea..00000000 --- a/apps/proxy/src/app/app.module.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - -import { AppComponent } from './app.component'; -import { RouterModule } from '@angular/router'; -import { appRoutes } from './app.routes'; -import { AppFirebaseModule } from './app-firebase.module'; -import { UiPrimeNgToastModule } from '@proxy/ui/prime-ng-toast'; -import { StoreModule } from '@ngrx/store'; -import { loginsReducer } from './auth/ngrx/store/login.state'; -import { reducers, EffectModule } from './ngrx'; -import { clearStateMetaReducer } from './ngrx/store/app.state'; -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { LogInEffectsModule } from './auth/ngrx/effects/login-effects.module'; -import { ServicesProxyAuthModule } from '@proxy/services/proxy/auth'; -import { ProxyBaseUrls } from '@proxy/models/root-models'; -import { environment } from '../environments/environment'; -import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field'; -import { MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog'; -import { ErrorInterceptor } from '@proxy/services/interceptor/errorInterceptor'; -import { VersionCheckServiceModule } from '@proxy/service'; -import { MAT_TOOLTIP_DEFAULT_OPTIONS } from '@angular/material/tooltip'; -import { ServicesProxyRootModule } from '@proxy/services/proxy/root'; - -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - AppFirebaseModule, - BrowserAnimationsModule, - RouterModule.forRoot(appRoutes, { initialNavigation: 'enabledBlocking' }), - UiPrimeNgToastModule, - StoreModule.forRoot(reducers, { metaReducers: [clearStateMetaReducer] }), - EffectModule, - StoreModule.forFeature('auth', loginsReducer), - HttpClientModule, - LogInEffectsModule, - ServicesProxyAuthModule, - VersionCheckServiceModule, - ServicesProxyRootModule, - ], - providers: [ - { provide: ProxyBaseUrls.FirebaseConfig, useValue: environment.firebaseConfig }, - { - provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, - useValue: { - appearance: 'outline', - floatLabel: 'auto', - }, - }, - { - provide: ProxyBaseUrls.IToken, - useValue: { - token: null, - companyId: null, - }, - }, - { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }, - { - provide: MAT_DIALOG_DEFAULT_OPTIONS, - useValue: { - autoFocus: false, - hasBackdrop: true, - disableClose: true, - restoreFocus: false, - }, - }, - { - provide: ProxyBaseUrls.BaseURL, - useValue: environment.baseUrl, - }, - { - provide: ProxyBaseUrls.ProxyLogsUrl, - useValue: environment.baseUrl, - }, - { - provide: MAT_TOOLTIP_DEFAULT_OPTIONS, - useValue: { - disableTooltipInteractivity: true, - }, - }, - ], - bootstrap: [AppComponent], -}) -export class AppModule {} diff --git a/apps/proxy/src/app/auth/auth.module.ts b/apps/proxy/src/app/auth/auth.module.ts deleted file mode 100644 index 17feb521..00000000 --- a/apps/proxy/src/app/auth/auth.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { AuthComponent } from './auth.component'; -import { RouterModule, Routes } from '@angular/router'; -import { MatCardModule } from '@angular/material/card'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { ServicesProxyAuthModule } from '@proxy/services/proxy/auth'; -import { MatIconModule } from '@angular/material/icon'; - -const routes: Routes = [ - { - path: '', - component: AuthComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [AuthComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - ReactiveFormsModule, - MatCardModule, - MatButtonModule, - UiLoaderModule, - ServicesProxyAuthModule, - MatIconModule, - ], - exports: [RouterModule], -}) -export class AuthModule {} diff --git a/apps/proxy/src/app/auth/ngrx/effects/login-effects.module.ts b/apps/proxy/src/app/auth/ngrx/effects/login-effects.module.ts deleted file mode 100755 index 0a379731..00000000 --- a/apps/proxy/src/app/auth/ngrx/effects/login-effects.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ModuleWithProviders, NgModule } from '@angular/core'; -import { EffectsModule } from '@ngrx/effects'; -import { LogInEffects } from './login.effects'; -import { ServicesLoginModule } from '@proxy/services/login'; - -@NgModule({ - imports: [EffectsModule.forFeature([LogInEffects]), ServicesLoginModule], - exports: [EffectsModule], -}) -export class LogInEffectsModule { - public static forFeature(): ModuleWithProviders { - return { - ngModule: LogInEffectsModule, - providers: [], - }; - } -} diff --git a/apps/proxy/src/app/chatbot/chatbot.component.ts b/apps/proxy/src/app/chatbot/chatbot.component.ts deleted file mode 100644 index 22b1ea76..00000000 --- a/apps/proxy/src/app/chatbot/chatbot.component.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-chatbot', - template: `

    `, -}) -export class ChatbotComponent {} diff --git a/apps/proxy/src/app/client.module.ts b/apps/proxy/src/app/client.module.ts deleted file mode 100644 index 5b2a9bef..00000000 --- a/apps/proxy/src/app/client.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule, Routes } from '@angular/router'; - -const routes: Routes = [ - { - path: 'registration', - loadChildren: () => import('./registration/registration.module').then((p) => p.RegistrationModule), - }, -]; - -@NgModule({ - declarations: [], - imports: [CommonModule, RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class ClientModule {} diff --git a/apps/proxy/src/app/create-project/create-project.component.scss b/apps/proxy/src/app/create-project/create-project.component.scss deleted file mode 100644 index 4d565ede..00000000 --- a/apps/proxy/src/app/create-project/create-project.component.scss +++ /dev/null @@ -1,9 +0,0 @@ -.project { - height: 100vh; -} -.link { - color: var(--color-link-color); -} -.forward-url { - margin-top: 12px; -} diff --git a/apps/proxy/src/app/create-project/create-project.module.ts b/apps/proxy/src/app/create-project/create-project.module.ts deleted file mode 100644 index 37fb461c..00000000 --- a/apps/proxy/src/app/create-project/create-project.module.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CreateProjectComponent } from './create-project.component'; -import { RouterModule, Routes } from '@angular/router'; -import { MatStepperModule } from '@angular/material/stepper'; -import { MatIconModule } from '@angular/material/icon'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { MatListModule } from '@angular/material/list'; -import { MatSelectModule } from '@angular/material/select'; -import { MatInputModule } from '@angular/material/input'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { ReactiveFormsModule } from '@angular/forms'; -import { UiCopyButtonModule } from '@proxy/ui/copy-button'; -import { LogsService } from '@proxy/services/proxy/logs'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { CreateProjectService, ServicesProxyCreateProjectModule } from '@proxy/services/proxy/create-project'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { DirectivesMarkAllAsTouchedModule } from '@proxy/directives/mark-all-as-touched'; - -const routes: Routes = [ - { - path: '', - component: CreateProjectComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [CreateProjectComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - MatStepperModule, - MatIconModule, - MatCardModule, - MatButtonModule, - MatListModule, - MatSelectModule, - MatInputModule, - MatCheckboxModule, - MatCardModule, - ReactiveFormsModule, - UiCopyButtonModule, - ServicesProxyCreateProjectModule, - MatAutocompleteModule, - MatTooltipModule, - DirectivesMarkAllAsTouchedModule, - ], - providers: [CreateProjectService], - exports: [RouterModule], -}) -export class CreateProjectModule {} diff --git a/apps/proxy/src/app/dashboard/dashboard.component.html b/apps/proxy/src/app/dashboard/dashboard.component.html deleted file mode 100644 index 8a5d8c31..00000000 --- a/apps/proxy/src/app/dashboard/dashboard.component.html +++ /dev/null @@ -1,26 +0,0 @@ -
    -
    -
    - rocket_launch -
    -

    Coming Soon

    -

    We're working hard to bring you something amazing.

    -

    - Our dashboard is under construction. Stay tuned for powerful analytics and insights. -

    -
    -
    - analytics - Analytics -
    -
    - insights - Insights -
    -
    - trending_up - Reports -
    -
    -
    -
    diff --git a/apps/proxy/src/app/dashboard/dashboard.component.scss b/apps/proxy/src/app/dashboard/dashboard.component.scss deleted file mode 100644 index 4e0df208..00000000 --- a/apps/proxy/src/app/dashboard/dashboard.component.scss +++ /dev/null @@ -1,125 +0,0 @@ -:host { - display: flex; - width: 100%; - height: 100%; -} - -.coming-soon-container { - display: flex; - align-items: center; - justify-content: center; - flex: 1; - width: 100%; - min-height: calc(100vh - 64px); - padding: 40px 20px; - background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f1f5f9 100%); - margin: 0; -} - -.coming-soon-content { - text-align: center; - max-width: 600px; - animation: fadeInUp 0.8s ease-out; -} - -.icon-wrapper { - display: inline-flex; - align-items: center; - justify-content: center; - width: 120px; - height: 120px; - border-radius: 50%; - background: linear-gradient(135deg, var(--color-dark-accent) 0%, #15b8a0 100%); - margin-bottom: 32px; - animation: pulse 2s infinite; -} - -.coming-soon-icon { - font-size: 56px !important; - width: 56px !important; - height: 56px !important; - color: #ffffff; -} - -.coming-soon-title { - font-size: 48px; - font-weight: 700; - color: var(--color-dark-primary); - margin: 0 0 16px 0; - letter-spacing: -1px; -} - -.coming-soon-subtitle { - font-size: 20px; - color: #0d9b89; - margin: 0 0 12px 0; - font-weight: 500; -} - -.coming-soon-description { - font-size: 16px; - color: #64748b; - margin: 0 0 40px 0; - line-height: 1.6; -} - -.coming-soon-features { - display: flex; - justify-content: center; - gap: 32px; - flex-wrap: wrap; -} - -.feature-item { - display: flex; - flex-direction: column; - align-items: center; - gap: 8px; - padding: 20px 24px; - background: #ffffff; - border-radius: 12px; - border: 1px solid #e2e8f0; - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); - transition: all 0.3s ease; - - &:hover { - background: rgba(25, 230, 206, 0.08); - border-color: var(--color-dark-accent); - transform: translateY(-4px); - box-shadow: 0 10px 20px -5px rgba(25, 230, 206, 0.2); - } - - .feature-icon { - font-size: 32px !important; - width: 32px !important; - height: 32px !important; - color: var(--color-dark-accent); - } - - span { - font-size: 14px; - color: var(--color-dark-primary); - font-weight: 500; - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes pulse { - 0%, - 100% { - box-shadow: 0 0 0 0 rgba(25, 230, 206, 0.4); - } - 50% { - box-shadow: 0 0 0 20px rgba(25, 230, 206, 0); - } -} diff --git a/apps/proxy/src/app/dashboard/dashboard.component.ts b/apps/proxy/src/app/dashboard/dashboard.component.ts deleted file mode 100644 index 0f14f966..00000000 --- a/apps/proxy/src/app/dashboard/dashboard.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; -import { BaseComponent } from '@proxy/ui/base-component'; - -@Component({ - selector: 'proxy-dashboard', - templateUrl: './dashboard.component.html', - styleUrls: ['./dashboard.component.scss'], -}) -export class DashboardComponent extends BaseComponent { - constructor() { - super(); - } -} diff --git a/apps/proxy/src/app/dashboard/dashborad.module.ts b/apps/proxy/src/app/dashboard/dashborad.module.ts deleted file mode 100644 index 3373fda9..00000000 --- a/apps/proxy/src/app/dashboard/dashborad.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { RouterModule, Routes } from '@angular/router'; -import { DashboardComponent } from './dashboard.component'; -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatIconModule } from '@angular/material/icon'; - -const routes: Routes = [ - { - path: '', - component: DashboardComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [DashboardComponent], - imports: [CommonModule, RouterModule.forChild(routes), MatIconModule], -}) -export class DashboardModule {} diff --git a/apps/proxy/src/app/features/create-feature/create-feature.component.html b/apps/proxy/src/app/features/create-feature/create-feature.component.html deleted file mode 100644 index 45197411..00000000 --- a/apps/proxy/src/app/features/create-feature/create-feature.component.html +++ /dev/null @@ -1,2281 +0,0 @@ -
    - -
    - - -
    -
    - - -
    - -

    {{ (featureDetails$ | async)?.name }}

    - -
    -
    -
    - -

    Add New Blocks

    -
    -
    - - - - Block Name -
    - -
    - - -
    -
    -
    - - Configure Method -
    - -
    - - -
    -
    -
    - - - Authorization Setup -
    - -
    - - -
    -
    -
    - - - Branding -
    - -
    - - - -
    -
    -
    - - - - - Integration Choice -
    - -
    - - -
    -
    -
    - - - Organization Details -
    - - - -
    - - -
    -
    -
    - - - Billable Metrics / Items -
    - - -
    - -
    -
    -
    - - Payment Details -
    - - -
    - -
    -
    -
    - - - Create Plan -
    - -
    - -
    -
    -
    - - - Plans Overview & Subscription Snippet -
    -
    - -
    - -
    - - -
    -
    -
    -
    - - - Design & code -
    - -
    - - -
    -
    -
    -
    - - - -
    - - - - - - - -
    - -
    -
    -
    - -
    - -
    - -
    -
    -
    - -
    - - -
    - -
    -
    -
    - -
    - - -
    -
    - - - - -
    - -
    - -
    -
    -
    - -
    - - - - - -
    - {{ event.value }} - {{ event.description }} -
    -
    -
    -
    -
    -

    Sample Response:

    - -
    - -
    {{ event.sampleResponse | json }}
    -
    -
    -
    -
    - -
    - event_note -

    No events available

    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    - {{ type.icon }} -

    {{ type.name }}

    - -
    -
    -
    -
    - -
    -

    Give a name of your Block

    -
    - - - - -
    - - - -
    -
    - -
    -
    -

    Services

    - - -
    - {{ service.name }} - - - error - - -
    - navigate_next -
    -
    -
    - -
    - -
    -
    -
    - - -
    -
    - -
    - -

    Credentials

    - -
    -
    - -
    -
    -
    -
    - -

    Configurations

    - -
    -
    - -
    -
    -
    -
    - - Callback URL - - - - - Enable Service - - -
    -
    -
    -
    -
    - - -
    -

    {{ getSelectedServiceName() }}

    - -
    - - - - - - - -
    - - -
    - - - - - - - - - - - - - - - - - - - - -
    Method{{ row.name }}Toggle - - - (default) - Configure - -
    -
    No methods available
    -
    -

    - Note: By default, 36Blocks credentials will be used, and the consent screen or Sender ID - will display the 36Blocks name. You can update these with your own credentials and branding anytime after - the block is created. -

    -
    -
    - - -
    -
    - -
    - -

    - {{ featureForm.get('brandingDetails.title')?.value }} -

    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    - Are you a new user? - {{ featureForm.get('brandingDetails.sign_up_button_text')?.value }} -

    -
    -
    - - - -
    - - Email or Phone - - - - - Password - - - - -
    -
    - - - -
    -
    - Or continue with -
    -
    -
    - -
    - - - - - -
    -
    - - - -
    - - - - -
    -
    -
    - - -
    -
    -
    - - - - - - -
    - Block new user sign-ups: - - -
    -
    -
    - -
    -
    - - -
    -

    - Note: JSON format you will receive after login as JWT in Authorization key -

    -
    -
    -
    - -
    -
    -
    - - -
    - - -
    -
    - Note: The social login button will be displayed in a dialog/modal by default.
    - To integrate this button into your website or application UI, please add a div with the ID like this - -
    -
    - - -
    -
    - - -
    - -
    -
    - - -
    -
    -

    Webhook URL

    - -

    Method

    - - -

    Trigger Events

    - - - Select Trigger Events - - - {{ option.label }} - - - - -
    -
    -
    - - - - {{ fieldConfig?.label }} * - - - - - {{ item }} - - - - - - - - - - add Add New - {{ fieldConfig?.label }} - - - {{ option.label }} - - - - - - - - - - - - - info - - - - - - info - - - - - -
    - - - - - -
    - {{ fieldConfig?.hint }} - - - info - - - -
    -
    - - - -
    -
    - - - {{ customError }} - {{ label }} is required. - Min required length is 3 - Start and End spaces are not allowed - Min value required is {{ minError?.min }} - Max value allowed is {{ maxError?.max }} - - Min required length is {{ minLengthError?.requiredLength }} - - - Max allowed length is {{ maxLengthError?.requiredLength }} - - - {{ patternErrorText ?? 'Enter valid ' + label }} - - Atleast One Value is Required - - - - -
    -
    Integration Choice
    -
    -
    -
    -

    {{ service.name }}

    - - - - - error - - - - - -
    -
    -
    -
    -
    - - -
    -
    Organization Details
    -

    Note: These details will be shown on the invoice..

    -
    -
    - -
    - - -
    -
    - -
    -
    -
    -
    - - Callback URL - - - - - Enable Service - -
    -
    -
    -
    -
    -
    - - -
    -
    Billable Metrics / Items
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name - - {{ element.name }} - - Code - - {{ element.code }} - - - Type - {{ element.recurring ? 'Recurring' : 'Metered' }} - Aggregation - {{ getAggregationLabel(element?.aggregation_type) }} - Action - - -
    -
    No Record Found
    -
    - -
    -
    -
    -
    - - -
    -
    Payment Details
    -
    -

    Note: These details will be can be filled later.

    -
    -
    - -
    - -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - - -
    -
    Create Plan
    -
    -
    -
    - -
    - -
    -

    Plan Details

    -
    - - - -
    -
    - - - - - Charges - - -
    - - - -
    - -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - -
    Metric - {{ - getBillableMetricName( - charge.billable_metric_id || - charge.lago_billable_metric_code - ) || 'N/A' - }} - Max Limit - {{ charge.max_limit || 'N/A' }} - Actions - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    - - -
    -
    Created Plans
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name - - {{ element.name }} - - Code - - {{ element.code }} - - - Billing Period - {{ element.interval }} - Price - {{ element.amount_cents / 100 }} - Currency - {{ element.amount_currency }} - Status - {{ getAggregationLabel(element?.aggregation_type) }} - Action - - -
    -
    - No plans Found -
    -
    - - -
    -
    -
    -
    - - -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    Name - {{ tax.name }} - Code - {{ tax.code }} - Rate - {{ tax.rate }} - Action - -
    -
    - No taxes Found -
    -
    -
    -
    - - -
    -
    -

    Services

    - - - -
    Billable Metric
    - navigate_next -
    - - - -
    Plans
    - navigate_next -
    - - -
    Payment Details
    - navigate_next -
    - -
    Taxes
    - navigate_next -
    -
    -
    - - -
    -
    - -
    -

    Plans

    - -
    - - -
    -

    Billable Metric

    - -
    -
    -

    Payment Details

    - -
    -
    -

    Taxes

    - -
    -
    -
    -
    -
    - - -
    - -
    -

    Customize your login UI

    - -
    - - - Enter URL - - Upload file - info - - -
    - - Logo URL - - -
    - - - - {{ logoFileInput.files?.[0]?.name || 'Logo selected' }} - - -
    - - - - - - - - - - - - - - - - -
    -
    - Show the social login as a icon: - - -
    - -
    - Show Create Account For New User: - - -
    - -
    - - - {{ - featureForm.get('brandingDetails.light_theme_primary_color')?.value || '#000000' - }} - (Light theme) -
    - -
    - - - {{ - featureForm.get('brandingDetails.dark_theme_primary_color')?.value || '#ffffff' - }} - (Dark theme) -
    - -
    - - - {{ - featureForm.get('brandingDetails.button_color')?.value || '#19E6CE' - }} -
    - -
    - - - {{ - featureForm.get('brandingDetails.button_hover_color')?.value || '#19E6CE' - }} -
    - -
    - - - {{ - featureForm.get('brandingDetails.button_text_color')?.value || '#000000' - }} -
    -
    -
    - -
    -
    -
    - - -
    -
    - -
    -
    -
    diff --git a/apps/proxy/src/app/features/create-feature/create-feature.component.scss b/apps/proxy/src/app/features/create-feature/create-feature.component.scss deleted file mode 100644 index ec3b75a5..00000000 --- a/apps/proxy/src/app/features/create-feature/create-feature.component.scss +++ /dev/null @@ -1,980 +0,0 @@ -@import '../../../styles.scss'; -.features-layout { - display: grid; - grid-gap: 16px; - grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); - .feature-card { - height: 160px; - } -} -.code-snippet-view { - transition: min-height 0.2s linear; - max-width: 700px; -} - -.active { - background-color: var(--color-dark-accent-light) !important; - border-color: var(--color-dark-accent) !important; -} - -.service-list { - width: 250px; -} - -.configure-method-dialog-content { - max-height: 65vh; - overflow-y: auto; -} - -// Show Configure column edit button only on row hover -.configure-methods-table { - tr.mat-row, - tr.mat-mdc-row { - .mat-column-configure button { - opacity: 0; - transition: opacity 0.15s ease; - } - &:hover .mat-column-configure button { - opacity: 1; - } - } - th { - font-size: var(--font-size-common-14) !important; - } -} - -// Fix table borders -.default-table { - .mat-mdc-row { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - - &:last-child { - border-bottom: 1px solid rgba(0, 0, 0, 0.12); - } - } - - .mat-mdc-header-row { - border-bottom: 2px solid rgba(0, 0, 0, 0.12); - } - - .mat-mdc-cell, - .mat-mdc-header-cell { - border-right: 1px solid rgba(0, 0, 0, 0.12); - - &:last-child { - border-right: none; - } - } -} -.organization-details-form { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 24px; - align-items: start; - - @media (max-width: 768px) { - grid-template-columns: 1fr; - gap: 16px; - } - - // Make textarea fields span full width - .mat-form-field { - &.full-width { - grid-column: 1 / -1; - } - } - - // Ensure proper spacing between form fields - .mat-form-field { - margin-bottom: 16px; - - &:last-child { - margin-bottom: 0; - } - } - - .heading { - font-size: 16px; - line-height: 20px; - font-weight: 600; - } - // Style for textarea specifically - textarea { - width: 100%; - resize: vertical; - min-height: 50px; - } -} - -// Single form layout with sections -.single-form-layout { - .form-section { - .form-grid { - grid-template-columns: repeat(2, 1fr); - - @media (max-width: 768px) { - grid-template-columns: 1fr; - gap: 16px; - } - - // Make textarea fields span full width - .mat-form-field { - &.full-width { - grid-column: 1 / -1; - } - } - - // Ensure proper spacing between form fields - .mat-form-field { - margin-bottom: 16px; - - &:last-child { - margin-bottom: 0; - } - } - - // Style for textarea specifically - textarea { - width: 100%; - resize: vertical; - min-height: 80px; - } - } - } -} - -// Charges card styling -.charges-card { - margin-top: 24px; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); - border: 2px solid #e0e0e0; - border-radius: 12px; - background-color: #fafafa; - - .charges-title { - font-size: 1.2rem; - font-weight: 700; - color: #1976d2; - margin: 0; - text-transform: uppercase; - letter-spacing: 0.5px; - } - - mat-card-header { - border-radius: 12px 12px 0 0; - } - - .form-grid { - grid-template-columns: repeat(2, 1fr); - } - - .button-group { - display: flex; - align-items: center; - gap: 8px; - margin-top: 16px; - - @media (max-width: 768px) { - grid-template-columns: 1fr; - gap: 16px; - } - - // Make textarea fields span full width - .mat-form-field { - &.full-width { - grid-column: 1 / -1; - } - } - - // Ensure proper spacing between form fields - .mat-form-field { - margin-bottom: 16px; - - &:last-child { - margin-bottom: 0; - } - } - - // Style for textarea specifically - textarea { - width: 100%; - resize: vertical; - min-height: 80px; - } - } - - // Add subtle animation on load - animation: slideInUp 0.5s ease-out; - - // Charges table styling - .charges-table-container { - margin-top: 24px; - border: 1px solid #e0e0e0; - border-radius: 8px; - overflow: hidden; - width: 100% !important; - max-width: 100% !important; - display: block; - - .charges-table { - width: 100% !important; - min-width: 100% !important; - max-width: 100% !important; - table-layout: fixed; - - .mat-mdc-header-row { - background-color: #f5f5f5; - - .mat-mdc-header-cell { - font-weight: 600; - color: #333; - border-bottom: 2px solid #e0e0e0; - } - } - - .mat-mdc-row { - &:nth-child(even) { - background-color: #fafafa; - } - - &:hover { - background-color: #f0f0f0; - } - - .mat-mdc-cell { - border-bottom: 1px solid #e0e0e0; - padding: 12px 16px; - } - } - - .mat-column-metric { - width: 40%; - padding-left: 16px; - word-wrap: break-word; - white-space: normal; - } - - .mat-column-model { - width: 30%; - word-wrap: break-word; - white-space: normal; - } - - .mat-column-minAmount { - width: 20%; - text-align: right; - padding-right: 16px; - } - - .mat-column-actions { - width: 10%; - text-align: center; - - button { - transition: all 0.2s ease; - - &:hover { - transform: scale(1.1); - } - } - } - } - } -} - -// Animation keyframes -@keyframes slideInUp { - from { - opacity: 0; - transform: translateY(20px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -// Global Material table overrides for full width -::ng-deep .charges-table { - width: 100% !important; - - .mat-mdc-table { - width: 100% !important; - min-width: 100% !important; - table-layout: fixed !important; - } - - .mat-mdc-header-row, - .mat-mdc-row { - width: 100% !important; - display: table-row !important; - } - - .mat-mdc-header-cell, - .mat-mdc-cell { - display: table-cell !important; - vertical-align: middle !important; - word-wrap: break-word !important; - overflow-wrap: break-word !important; - } - - // Ensure all cells take their allocated space - .mat-column-metric { - width: 40% !important; - } - - .mat-column-model { - width: 30% !important; - } - - .mat-column-minAmount { - width: 20% !important; - } - - .mat-column-actions { - width: 10% !important; - } -} - -// Charges table box styling - direct container styling -.charges-table-container { - margin-top: 24px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - border: 1px solid #e0e0e0; - border-radius: 8px; - background-color: #ffffff; - overflow: hidden; - - // Add a header section - &::before { - content: 'Charges List'; - display: block; - background-color: #f8f9fa; - border-bottom: 1px solid #e0e0e0; - padding: 16px 20px; - font-size: 1.1rem; - font-weight: 600; - color: #333; - margin: 0; - } - - .charges-table { - width: 100% !important; - min-width: 100% !important; - table-layout: fixed; - margin: 0; - - .mat-mdc-header-row { - background-color: #f5f5f5; - - .mat-mdc-header-cell { - font-weight: 600; - color: #333; - border-bottom: 2px solid #e0e0e0; - } - } - - .mat-mdc-row { - &:nth-child(even) { - background-color: #fafafa; - } - - &:hover { - background-color: #f0f0f0; - } - - .mat-mdc-cell { - border-bottom: 1px solid #e0e0e0; - padding: 12px 16px; - } - } - - .mat-column-metric { - width: 40% !important; - padding-left: 16px; - word-wrap: break-word; - white-space: normal; - } - - .mat-column-model { - width: 30% !important; - word-wrap: break-word; - white-space: normal; - } - - .mat-column-minAmount { - width: 20% !important; - text-align: right; - padding-right: 16px; - } - - .mat-column-actions { - width: 10% !important; - text-align: center; - - button { - transition: all 0.2s ease; - - &:hover { - transform: scale(1.1); - } - } - } - } - .add-plan-edit { - height: calc(100vh - 650px); - overflow: auto; - } -} - -// Info icon styling -.info-icon { - color: var(--color-common-primary, #1976d2); - font-size: 17px; - opacity: 0.7; - transition: opacity 0.2s ease-in-out; - position: absolute; - right: 4px; - top: 4px; - z-index: 1; - - &:hover { - opacity: 1; - } -} - -// Ensure form field has relative positioning for absolute icon -::ng-deep .mat-form-field { - position: relative; -} - -.overflow-table { - height: calc(100vh - 350px); -} -.full-width-chip { - grid-column: 1 / -1; -} - -// Event Catalog Container -.event-catalog-container { - padding: 16px; - - overflow-y: auto; -} - -// Webhook Events Accordion Styling -.webhook-events-accordion { - .mat-expansion-panel { - margin-bottom: 8px; - } - - ::ng-deep .mat-expansion-panel-header { - height: auto !important; - padding: 12px 16px !important; - } - - ::ng-deep .mat-expansion-panel-header-title { - flex-grow: 1; - } - - .event-header-content { - display: flex; - flex-direction: column; - gap: 4px; - - .event-name { - font-weight: 700; - font-size: 15px; - color: #111827; - } - - .event-description { - font-size: 13px; - color: #6b7280; - font-weight: 400; - } - } -} - -// Sample Response Code Block -.sample-response-container { - .response-label { - color: #333; - font-size: 13px; - margin-bottom: 12px; - font-weight: 500; - } - - .code-block { - background-color: #000000; - color: #ffffff; - padding: 16px; - border-radius: 8px; - overflow-x: auto; - font-family: 'Consolas', 'Monaco', 'Courier New', monospace; - font-size: 12px; - line-height: 1.6; - max-height: 350px; - overflow-y: auto; - margin: 0; - - code { - white-space: pre-wrap; - word-break: break-word; - } - } -} -.code-snippet-view { - min-width: 500px; - max-width: 800px; -} -.bg-dark { - background-color: #616161 !important; - color: #ffffff !important; -} -.text-link { - color: #007bff !important; -} - -// Preview input field styling -.preview-input-field { - input { - border: none; - outline: none; - background: transparent; - width: 100%; - - &::placeholder { - color: #000; - opacity: 1; - } - } -} -.rounded-16 { - border-radius: 16px !important; -} - -// Custom toggle group styling -.custom-toggle-group { - display: inline-flex; - border-radius: 8px; - overflow: hidden; - border: 1px solid #e0e0e0; - background-color: #f5f5f5; - - .custom-toggle-btn { - padding: 8px 20px; - font-size: 13px; - font-weight: 500; - border: none; - background-color: transparent; - color: #666; - cursor: pointer; - transition: all 0.2s ease; - outline: none; - - &:not(:last-child) { - border-right: 1px solid #e0e0e0; - } - - &:hover:not(.active) { - background-color: #ebebeb; - } - - &.active { - background-color: #fff; - color: var(--color-common-primary, #1976d2); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - } - } -} - -.dark-theme-login { - ::ng-deep .mat-form-field { - .mat-form-field-outline { - background-color: #616161 !important; - color: #ffffff !important; - } - .mat-form-field-outline-thick { - color: #ffffff !important; - } - .mat-form-field-outline-start, - .mat-form-field-outline-gap, - .mat-form-field-outline-end { - border-color: #ffffff !important; - } - .mat-form-field-flex { - background-color: #616161 !important; - } - - .mat-input-element { - background-color: #616161 !important; - color: #ffffff !important; - } - } -} -.width-md-400 { - width: 350px !important; -} - -.social-login-icon-box { - border: 1px solid #e0e0e0; - border-radius: 8px; - padding: 12px 16px; - display: flex; - align-items: center; - justify-content: center; - - img { - width: 20px; - height: 20px; - } -} - -// Auth option buttons (Continue with Google, etc.) -.auth-option-btn { - width: 85%; - height: 44px; - border: 1px solid #7d7c7c !important; - border-radius: 8px !important; - font-size: 14px; - font-weight: 600; - background-color: #fff !important; - display: flex; - align-items: center; - justify-content: center; - - &.dark-theme { - background-color: transparent !important; - border-color: #ffffff !important; - } -} - -.auth-option-content { - display: flex; - align-items: center; - justify-content: flex-start; - width: 180px; -} - -.auth-option-icon { - height: 24px; - width: 24px; - min-width: 24px; - margin-right: 12px; - - &.dark-theme { - filter: invert(1); - } -} - -.auth-option-text { - white-space: nowrap; - - &.dark-theme { - color: #ffffff; - } -} - -.mat-step-header .mat-step-icon-selected, -.mat-step-header .mat-step-icon-state-done, -.mat-step-header .mat-step-icon-state-edit { - background-color: var(--color-dark-accent) !important; - color: #171c26 !important; -} -// Template Choice Cards -.template-choice-container { - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 24px; - max-width: 900px; - - @media (max-width: 768px) { - grid-template-columns: 1fr; - } -} - -.template-card { - position: relative; - background: #ffffff; - border: 1px solid #e5e7eb; - border-radius: 16px; - padding: 32px 24px 24px; - cursor: pointer; - transition: all 0.3s ease; - display: flex; - flex-direction: column; - - &:hover { - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08); - transform: translateY(-2px); - } - - // Active state for default template card (green theme) - &--default.active { - border: 2px solid #22c55e; - box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.15), 0 8px 24px rgba(34, 197, 94, 0.12); - background: linear-gradient(180deg, rgba(34, 197, 94, 0.03) 0%, #ffffff 100%); - } - - // Active state for custom mapping card (blue theme) - &--custom.active { - border: 2px solid #3b82f6; - box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15), 0 8px 24px rgba(59, 130, 246, 0.12); - background: linear-gradient(180deg, rgba(59, 130, 246, 0.03) 0%, #ffffff 100%); - } - - .recommended-badge { - position: absolute; - top: -12px; - left: 24px; - background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); - color: #ffffff; - padding: 6px 14px; - border-radius: 20px; - font-size: 12px; - font-weight: 600; - letter-spacing: 0.3px; - } - - &__icon { - width: 56px; - height: 56px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - margin: 0 auto 20px; - - mat-icon { - font-size: 28px; - width: 28px; - height: 28px; - } - - &--green { - background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%); - color: #16a34a; - } - - &--blue { - background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); - color: #2563eb; - } - } - - &__title { - font-size: 20px; - font-weight: 700; - color: #111827; - text-align: center; - margin: 0 0 8px; - } - - &__subtitle { - font-size: 14px; - color: #6b7280; - text-align: center; - margin: 0 0 24px; - line-height: 1.5; - } - - &__features { - list-style: none; - padding: 0; - margin: 0 0 24px; - flex-grow: 1; - - li { - display: flex; - align-items: center; - gap: 10px; - padding: 8px 0; - font-size: 14px; - color: #374151; - - .check-icon { - font-size: 20px; - width: 20px; - height: 20px; - color: #22c55e; - - &--blue { - color: #3b82f6; - } - } - } - } - - &__templates-info { - background: #f9fafb; - border-radius: 12px; - padding: 16px; - margin-bottom: 20px; - - .templates-label { - font-size: 13px; - font-weight: 600; - color: #6b7280; - margin: 0 0 12px; - } - - .template-item { - display: flex; - align-items: center; - gap: 10px; - padding: 6px 0; - font-size: 14px; - color: #374151; - - mat-icon { - font-size: 18px; - width: 18px; - height: 18px; - color: #9ca3af; - } - } - - .more-templates { - font-size: 13px; - color: #9ca3af; - margin: 8px 0 0; - } - } - - &__setup-time { - display: flex; - align-items: center; - gap: 12px; - background: #eff6ff; - border-radius: 12px; - padding: 16px; - margin-bottom: 20px; - - mat-icon { - font-size: 24px; - width: 24px; - height: 24px; - color: #3b82f6; - } - - div { - display: flex; - flex-direction: column; - } - - .setup-label { - font-size: 13px; - font-weight: 600; - color: #1e40af; - } - - .setup-value { - font-size: 14px; - color: #3b82f6; - } - } - - &__button { - width: 100%; - padding: 12px 20px; - font-weight: 600; - border-radius: 8px; - display: flex; - align-items: center; - justify-content: center; - gap: 8px; - - mat-icon { - font-size: 20px; - width: 20px; - height: 20px; - } - - &--green { - background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%) !important; - color: #ffffff !important; - - &:hover { - background: linear-gradient(135deg, #16a34a 0%, #15803d 100%) !important; - } - } - - &--outline { - border: 1px solid #d1d5db; - color: #3b82f6; - background: transparent; - - &:hover { - background: #f9fafb; - border-color: #3b82f6; - } - } - } -} - -// Branding step: apply border radius to all preview elements (variable --branding-border-radius set on .auth-credentials) -.auth-credentials { - border-radius: var(--branding-border-radius, 8px) !important; - // mat-form-field and other elements use --border-common-radius-4; override with branding radius - --border-common-radius-4: var(--branding-border-radius, 8px); -} -.auth-credentials .branding-preview-btn { - background-color: var(--branding-button-color, #19e6ce) !important; - color: var(--branding-button-text-color, #000000) !important; - border-radius: var(--branding-border-radius, 8px) !important; -} -.auth-credentials .branding-preview-btn:hover { - background-color: var(--branding-button-hover-color, #19e6ce) !important; -} -.auth-credentials .auth-option-btn { - border-radius: var(--branding-border-radius, 8px) !important; -} -.auth-credentials .social-login-icon-box { - border-radius: var(--branding-border-radius, 8px) !important; -} - -// Email or Phone & Password fields in preview: apply user's border radius to outline -::ng-deep .auth-credentials .branding-preview-input .mdc-text-field--outlined { - --mdc-outlined-text-field-container-shape: var(--branding-border-radius, 8px) !important; -} -::ng-deep .auth-credentials .branding-preview-input .mdc-notched-outline .mdc-notched-outline__leading { - border-top-left-radius: var(--branding-border-radius, 8px) !important; - border-bottom-left-radius: var(--branding-border-radius, 8px) !important; -} -::ng-deep .auth-credentials .branding-preview-input .mdc-notched-outline .mdc-notched-outline__trailing { - border-top-right-radius: var(--branding-border-radius, 8px) !important; - border-bottom-right-radius: var(--branding-border-radius, 8px) !important; -} -::ng-deep .auth-credentials .branding-preview-input .mdc-notched-outline .mdc-notched-outline__notch { - border-top-left-radius: var(--branding-border-radius, 8px) !important; - border-top-right-radius: var(--branding-border-radius, 8px) !important; -} - -.branding-preview-logo { - max-height: 48px; - max-width: 160px; - object-fit: contain; -} - -.branding-step-content { - min-height: 400px; -} - -// Use app green theme for logo radio buttons (instead of default blue) -::ng-deep .branding-logo-radio { - .mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__outer-circle, - .mat-mdc-radio-button .mdc-radio__outer-circle { - border-color: var(--color-dark-accent) !important; - } - .mat-mdc-radio-button.mat-mdc-radio-checked .mdc-radio__inner-circle { - border-color: var(--color-dark-accent) !important; - background-color: var(--color-dark-accent) !important; - } - .mat-mdc-radio-button .mdc-radio__background::before { - background-color: var(--color-dark-accent) !important; - } -} -.mat-tab-body-wrapper { - height: 100%; -} diff --git a/apps/proxy/src/app/features/create-feature/create-feature.module.ts b/apps/proxy/src/app/features/create-feature/create-feature.module.ts deleted file mode 100644 index 554ff593..00000000 --- a/apps/proxy/src/app/features/create-feature/create-feature.module.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule, Routes } from '@angular/router'; -import { MatCardModule } from '@angular/material/card'; -import { ReactiveFormsModule, FormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { MatIconModule } from '@angular/material/icon'; -import { CreateFeatureComponent } from './create-feature.component'; -import { ServicesProxyFeaturesModule } from '@proxy/services/proxy/features'; -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatStepperModule } from '@angular/material/stepper'; -import { MatListModule } from '@angular/material/list'; -import { MatChipsModule } from '@angular/material/chips'; -import { MarkdownModule } from 'ngx-markdown'; -import { MatTabsModule } from '@angular/material/tabs'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; -import { UiCopyButtonModule } from '@proxy/ui/copy-button'; -import { MatTableModule } from '@angular/material/table'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatSelectModule } from '@angular/material/select'; -import { HttpClientModule } from '@angular/common/http'; -import { SimpleDialogComponent } from './simple-dialog/simple-dialog.component'; -import { CreatePlanDialogComponent } from './create-plan-dialog/create-plan-dialog.component'; -import { CreateTaxDialogComponent } from './create-tax-dialog/create-tax-dialog.component'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatRadioModule } from '@angular/material/radio'; - -const routes: Routes = [ - { - path: '', - component: CreateFeatureComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [CreateFeatureComponent, SimpleDialogComponent, CreatePlanDialogComponent, CreateTaxDialogComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - ReactiveFormsModule, - FormsModule, - MatInputModule, - MatFormFieldModule, - MatIconModule, - MatCardModule, - MatButtonModule, - UiLoaderModule, - MatStepperModule, - MatListModule, - ServicesProxyFeaturesModule, - MatChipsModule, - MarkdownModule.forRoot(), - MatTabsModule, - MatSlideToggleModule, - UiCopyButtonModule, - MatTableModule, - MatDialogModule, - MatSelectModule, - HttpClientModule, - MatTooltipModule, - MatExpansionModule, - MatRadioModule, - ], - exports: [RouterModule], -}) -export class CreateFeatureModule {} diff --git a/apps/proxy/src/app/features/feature/feature.component.html b/apps/proxy/src/app/features/feature/feature.component.html deleted file mode 100644 index 77e29876..00000000 --- a/apps/proxy/src/app/features/feature/feature.component.html +++ /dev/null @@ -1,156 +0,0 @@ -
    - -
    -

    Features

    - -
    - - -
    -
    -

    - The "Features" component in the Proxy Server is a dynamic tool that offers versatile authentication and - subscription plan options. It supports various authentication methods like OTP and social logins (e.g., Google, - Microsoft) while providing flexible subscription plans. Users benefit from enhanced security, cost-efficient - resource allocation, and a user-friendly dashboard for easy configuration. -

    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name - - {{ element.name }} - - Reference Id - -
    - - {{ - element.reference_id?.length > 15 - ? (element.reference_id | slice: 0:10) + - '...' + - (element.reference_id | slice: -5) - : element.reference_id - }} - - -
    -
    -
    Method - {{ - element.method?.name - }} - Type - {{ - element.feature?.name - }} - - -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    diff --git a/apps/proxy/src/app/features/features.module.ts b/apps/proxy/src/app/features/features.module.ts deleted file mode 100644 index eb87625a..00000000 --- a/apps/proxy/src/app/features/features.module.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { RouterModule, Routes } from '@angular/router'; -import { NgModule } from '@angular/core'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { MatInputModule } from '@angular/material/input'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { CommonModule } from '@angular/common'; -import { UiComponentsSearchModule } from '@proxy/ui/search'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTableModule } from '@angular/material/table'; -import { UiNoRecordFoundModule } from '@proxy/ui/no-record-found'; -import { UiMatPaginatorGotoModule } from '@proxy/ui/mat-paginator-goto'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { FeatureComponent } from './feature/feature.component'; -import { MatStepperModule } from '@angular/material/stepper'; -import { MatListModule } from '@angular/material/list'; -import { ServicesProxyFeaturesModule } from '@proxy/services/proxy/features'; -import { DirectivesSkeletonModule } from '@proxy/directives/skeleton'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { UiCopyButtonModule } from '@proxy/ui/copy-button'; -import { UiConfirmDialogModule } from '@proxy/ui/confirm-dialog'; -// Component -const routes: Routes = [ - { - path: '', - component: FeatureComponent, - pathMatch: 'full', - }, - { - path: 'create', - loadChildren: () => import('./create-feature/create-feature.module').then((p) => p.CreateFeatureModule), - }, - { - path: 'manage/:id', - loadChildren: () => import('./create-feature/create-feature.module').then((p) => p.CreateFeatureModule), - }, -]; - -@NgModule({ - declarations: [FeatureComponent], - imports: [ - FormsModule, - CommonModule, - RouterModule.forChild(routes), - MatCardModule, - MatButtonModule, - MatInputModule, - ReactiveFormsModule, - MatFormFieldModule, - MatIconModule, - MatTableModule, - UiNoRecordFoundModule, - UiMatPaginatorGotoModule, - UiComponentsSearchModule, - MatStepperModule, - MatListModule, - ServicesProxyFeaturesModule, - DirectivesSkeletonModule, - MatTooltipModule, - UiLoaderModule, - UiCopyButtonModule, - UiConfirmDialogModule, - ], - exports: [RouterModule], -}) -export class FeaturesModule {} diff --git a/apps/proxy/src/app/layout/layout.component.html b/apps/proxy/src/app/layout/layout.component.html deleted file mode 100644 index b77e0ec5..00000000 --- a/apps/proxy/src/app/layout/layout.component.html +++ /dev/null @@ -1,121 +0,0 @@ -
    -
    -
    -
    - apps -
    - - {{ (clientSettings$ | async)?.client?.name }} - - {{ - clientsMenuTrigger?.menuOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down' - }} - - - - - - - - - - - - -
    -
    - -
    - - - - -
    -
    - - -
    -
    - -
    - -
    -
    - - -
    -
    diff --git a/apps/proxy/src/app/layout/layout.component.scss b/apps/proxy/src/app/layout/layout.component.scss deleted file mode 100644 index 42cb7759..00000000 --- a/apps/proxy/src/app/layout/layout.component.scss +++ /dev/null @@ -1,144 +0,0 @@ -@import '../../assets/scss/utils/mixins/common-utils'; - -:host { - display: flex; - width: 100%; - height: 100vh; - .mat-drawer { - transition: 200ms all; - height: 100%; - width: 246px; - z-index: 9; - box-shadow: none !important; - border-right: 1px solid var(--color-common-border); - background-color: var(--color-dark-primary); - &-content { - .mat-drawer-header { - &-title { - padding: 12px 0px 12px 12px; - color: var(--color-dark-accent); - } - } - &.mat-drawer-toggle-btn-hover { - .mat-drawer-toggle-btn { - display: none; - @include media-breakpoint-down('desktop') { - display: block; - } - } - &:hover { - .mat-drawer-toggle-btn { - display: block; - } - } - } - .mat-drawer-nav { - flex: 1; - overflow: overlay; - @supports not (overflow: overlay) { - overflow: auto; - } - } - } - @include media-breakpoint-down('desktop') { - position: fixed; - z-index: 999; - top: 0; - bottom: 0; - } - } - .app-main-container { - flex: 1; - display: flex; - flex-direction: column; - overflow: hidden; - .component-render-container { - position: relative; - flex: 1; - z-index: 1; - .component-render-container-inner { - position: absolute; - top: 0; - right: 0; - left: 0; - bottom: 0; - overflow: auto; - } - } - @include media-breakpoint-down('desktop') { - padding-left: 55px; - } - } - .collapsed-sidebar { - .mat-drawer { - width: 56px; - overflow: hidden; - position: fixed; - z-index: 999; - // @media only screen and (max-width: 660px) { - // width: 0px; - // } - - &-header { - flex-direction: column; - &-subtitle { - display: none !important; - } - } - } - .app-main-container { - padding-left: 55px; - // @media only screen and (max-width: 620px) { - // padding-left: 0px; - // } - } - } -} -/*Footer*/ -.mat-drawer-footer { - button { - width: 100%; - text-align: left; - display: flex; - align-items: center; - padding: 12px 14px; - border-radius: 0px !important; - } - - h4.b-d-header { - color: var(--color-whatsApp-primary); - padding: 8px 22px; - font-size: 18px; - font-weight: 500; - margin: 0; - } - - h6.username { - line-height: 1.5; - font-size: 15px; - white-space: nowrap; - width: 140px; - overflow: hidden; - text-overflow: ellipsis; - } - - .company-name { - font-weight: 100; - white-space: nowrap; - width: 140px; - overflow: hidden; - text-overflow: ellipsis; - line-height: 1.5; - } - - .profile-avatar { - width: 28px; - height: 28px; - border-radius: 50%; - margin-right: 16px; - } -} -#ChatbotContainer { - height: 100vh; - width: 100%; -} diff --git a/apps/proxy/src/app/layout/layout.module.ts b/apps/proxy/src/app/layout/layout.module.ts deleted file mode 100644 index 517b86b7..00000000 --- a/apps/proxy/src/app/layout/layout.module.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { LayoutRoutingModule } from './layout-routing.module'; -import { LayoutComponent } from './layout.component'; -import { MainLeftSideNavComponent } from './main-left-side-nav/main-left-side-nav.component'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatIconModule } from '@angular/material/icon'; -import { MatListModule } from '@angular/material/list'; -import { MatSidenavModule } from '@angular/material/sidenav'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatExpansionModule } from '@angular/material/expansion'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { UiVirtualScrollModule } from '@proxy/ui/virtual-scroll'; -import { ScrollingModule } from '@angular/cdk/scrolling'; - -@NgModule({ - declarations: [LayoutComponent, MainLeftSideNavComponent], - imports: [ - CommonModule, - LayoutRoutingModule, - MatMenuModule, - MatListModule, - MatButtonModule, - MatIconModule, - MatDividerModule, - MatSidenavModule, - MatToolbarModule, - MatExpansionModule, - MatTooltipModule, - UiVirtualScrollModule, - ScrollingModule, - ], -}) -export class LayoutModule {} diff --git a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.html b/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.html deleted file mode 100644 index 903ced67..00000000 --- a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.html +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss b/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss deleted file mode 100644 index f6948435..00000000 --- a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.scss +++ /dev/null @@ -1,36 +0,0 @@ -@import '../../../assets/scss/utils/mixins/common-utils'; -.default-drawer { - .mat-nav-list { - padding-top: 0px; - .mat-list-item { - height: 40px !important; - cursor: pointer !important; - color: var(--new-color-common-muted) !important; - .mat-list-item-content { - padding: 0px 0px 0px 16px; - } - &.mat-list-item-disabled { - background-color: var(--color-common-silver); - pointer-events: none; - opacity: 0.7; - } - .mat-line { - font-size: 14px !important; - font-weight: 400; - &.menu-svg-icon { - svg { - path { - fill: var(--color-common-slate); - } - } - } - } - @include sideNavHoverActiveState( - var(--color-dark-accent), - var(--color-dark-accent-light), - var(--color-dark-primary), - var(--color-dark-muted) - ); - } - } -} diff --git a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts b/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts deleted file mode 100644 index 76a8692b..00000000 --- a/apps/proxy/src/app/layout/main-left-side-nav/main-left-side-nav.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { BaseComponent } from '@proxy/ui/base-component'; - -@Component({ - selector: 'proxy-main-left-side-nav', - templateUrl: './main-left-side-nav.component.html', - styleUrls: ['./main-left-side-nav.component.scss'], -}) -export class MainLeftSideNavComponent extends BaseComponent { - @Input() public isSideNavOpen: boolean; - constructor() { - super(); - } -} diff --git a/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html b/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html deleted file mode 100755 index 329c76b0..00000000 --- a/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.html +++ /dev/null @@ -1,52 +0,0 @@ -
    - - -
    -

    Logs Details

    - -
    - - - -
    - - - - - - - - - - - -
    -
    - - - {{ title }} - - -
    
    -        
    -
    -
    - - - - diff --git a/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts b/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts deleted file mode 100755 index da17ea42..00000000 --- a/apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Component, Inject, OnDestroy } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ILogDetailRes } from '@proxy/models/logs-models'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { Observable } from 'rxjs'; - -@Component({ - selector: 'proxy-log-details-side-dialog', - templateUrl: './log-details-side-dialog.component.html', - styleUrls: ['./log-details-side-dialog.component.scss'], -}) -export class LogsDetailsSideDialogComponent extends BaseComponent implements OnDestroy { - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) - public data: { - logData$: Observable; - isLoading$: Observable; - logSettings: { [key: string]: boolean }; - } - ) { - super(); - } - - public onCloseDialog(): void { - this.dialogRef.close(); - } - - public ngOnDestroy(): void { - super.ngOnDestroy(); - } -} diff --git a/apps/proxy/src/app/logs/log/log.component.html b/apps/proxy/src/app/logs/log/log.component.html deleted file mode 100644 index 2ddca154..00000000 --- a/apps/proxy/src/app/logs/log/log.component.html +++ /dev/null @@ -1,317 +0,0 @@ -
    - -
    -
    -
    - - Select Project - - - - All - - {{ project.name }} - - - - arrow_drop_down - - - Select Environment - - - - All - - {{ environment.name }} - - - - arrow_drop_down - -
    - -
    -
    - - - -
    -
    -
    -
    - - Select request type - - - All - - {{ - type - }} - - - - Select range type - - None - Response Time - Status Code - - -
    - -
    - - From - - - - Invalid Number - - - From should be less than or equal to To - - - Max {{ maxlengthError.requiredLength }} number are allowed - - - -
    -
    - - To - - - - Invalid Number - - - Max {{ maxlengthError.requiredLength }} number are allowed - - - -
    -
    -
    -
    - -
    - - - -
    -
    -
    - -
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Date/Time - - {{ element?.created_at | date: 'd MMM y' }} - - ({{ element?.created_at | date: 'mediumTime' }}) - Project name - {{ element.project_name }} ({{ element.environment_name }}) - User IP{{ element.user_ip }}Endpoint - {{ element.endpoint }} - Request type{{ element.request_type }}Status code{{ element.status_code }}Response time - {{ element.response_time }} -
    - -
    -
    - -
    -
    -
    diff --git a/apps/proxy/src/app/logs/logs.module.ts b/apps/proxy/src/app/logs/logs.module.ts deleted file mode 100644 index 51b8855c..00000000 --- a/apps/proxy/src/app/logs/logs.module.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { RouterModule, Routes } from '@angular/router'; -import { LogComponent } from './log/log.component'; -import { NgModule } from '@angular/core'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { MatInputModule } from '@angular/material/input'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { CommonModule } from '@angular/common'; -import { UiComponentsSearchModule } from '@proxy/ui/search'; -import { MatSelectModule } from '@angular/material/select'; -import { UiDateRangePickerModule } from '@proxy/date-range-picker'; -import { MatIconModule } from '@angular/material/icon'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatTableModule } from '@angular/material/table'; -import { ServicesProxyLogsModule } from '@proxy/services/proxy/logs'; -import { MatSortModule } from '@angular/material/sort'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDividerModule } from '@angular/material/divider'; -import { UiNoRecordFoundModule } from '@proxy/ui/no-record-found'; -import { DirectivesRemoveCharacterDirectiveModule } from '@proxy/directives/RemoveCharacterDirective'; -import { UiMatPaginatorGotoModule } from '@proxy/ui/mat-paginator-goto'; -import { LogsDetailsSideDialogComponent } from './log-details-side-dialog/log-details-side-dialog.component'; -import { MatDialogModule } from '@angular/material/dialog'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { UiVirtualScrollModule } from '@proxy/ui/virtual-scroll'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; - -const routes: Routes = [ - { - path: '', - component: LogComponent, - data: { title: 'Logs' }, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [LogComponent, LogsDetailsSideDialogComponent], - imports: [ - FormsModule, - CommonModule, - RouterModule.forChild(routes), - MatCardModule, - MatButtonModule, - MatInputModule, - ReactiveFormsModule, - MatFormFieldModule, - MatSelectModule, - MatMenuModule, - MatIconModule, - MatTableModule, - MatMenuModule, - MatSortModule, - MatCheckboxModule, - MatDividerModule, - MatDialogModule, - UiDateRangePickerModule, - ServicesProxyLogsModule, - UiNoRecordFoundModule, - UiMatPaginatorGotoModule, - UiLoaderModule, - UiComponentsSearchModule, - DirectivesRemoveCharacterDirectiveModule, - UiVirtualScrollModule, - MatAutocompleteModule, - ], - exports: [RouterModule], -}) -export class LogsModule {} diff --git a/apps/proxy/src/app/ngrx/effects/effects.module.ts b/apps/proxy/src/app/ngrx/effects/effects.module.ts deleted file mode 100755 index 0f68c343..00000000 --- a/apps/proxy/src/app/ngrx/effects/effects.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { ModuleWithProviders, NgModule } from '@angular/core'; -import { EffectsModule } from '@ngrx/effects'; -import { RootEffects } from './root'; - -@NgModule({ - imports: [CommonModule, EffectsModule.forRoot([RootEffects])], - exports: [EffectsModule], -}) -export class EffectModule { - public static forRoot(): ModuleWithProviders { - return { - ngModule: EffectModule, - providers: [], - }; - } -} diff --git a/apps/proxy/src/app/ngrx/effects/index.ts b/apps/proxy/src/app/ngrx/effects/index.ts deleted file mode 100755 index c2dfa341..00000000 --- a/apps/proxy/src/app/ngrx/effects/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './effects.module'; diff --git a/apps/proxy/src/app/public.module.ts b/apps/proxy/src/app/public.module.ts deleted file mode 100644 index 439dfc83..00000000 --- a/apps/proxy/src/app/public.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -// my-public-module.module.ts - -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule, Routes } from '@angular/router'; -import { ServicesHttpWrapperNoAuthModule } from '@proxy/services/http-wrapper-no-auth'; - -const routes: Routes = [ - { path: '', redirectTo: 'register', pathMatch: 'full' }, - { - path: 'register', - loadChildren: () => import('./register/register.module').then((p) => p.RegisterModule), - }, -]; - -@NgModule({ - declarations: [], - imports: [CommonModule, RouterModule.forChild(routes), ServicesHttpWrapperNoAuthModule], - providers: [], - exports: [RouterModule], -}) -export class PublicModule {} diff --git a/apps/proxy/src/app/register/register.component.html b/apps/proxy/src/app/register/register.component.html deleted file mode 100644 index 01dea9f0..00000000 --- a/apps/proxy/src/app/register/register.component.html +++ /dev/null @@ -1,245 +0,0 @@ -
    - -

    Register

    -
    -

    User Details

    -
    - -
    - - -
    -
    - - - -
    - -
    - - -
    -
    - Note: - Password should contain atleast one Capital Letter, one Small Letter, one Digit and one Symbol -
    - -

    Company Details

    -
    - - - - - - - - -
    -
    - -
    -
    -
    -
    - Have an account - Login Here -
    -
    -
    - - -
    - - {{ label }} - - - - - - - - - - {{ label }} is required. - Min required length is 3 - - Start and End spaces are not allowed - - Min value required is {{ minError?.min }} - - - Max value allowed is {{ maxError?.max }} - - - Min required length is {{ minLengthError?.requiredLength }} - - - Max allowed length is {{ maxLengthError?.requiredLength }} - - - {{ patternError ? patternError : 'Enter valid ' + label }} - - {{ label }} mismatch - - {{ hint }} - - - - - -
    -
    - -
    - - -
    - - Please enter valid mobile number - -
    -
    -
    - - - - - - - - - - - - diff --git a/apps/proxy/src/app/register/register.component.scss b/apps/proxy/src/app/register/register.component.scss deleted file mode 100644 index 4f593e04..00000000 --- a/apps/proxy/src/app/register/register.component.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import '../../assets/scss/utils/mixins/common-utils'; -button { - font-size: 16px; - width: 250px; -} -.reg-form { - min-width: 720px; - @include media-breakpoint-down('tablet') { - min-width: 80%; - .input-wrapper { - flex-direction: column; - } - } -} -.toggle-icon { - top: 12px; - right: 10px; -} diff --git a/apps/proxy/src/app/register/register.module.ts b/apps/proxy/src/app/register/register.module.ts deleted file mode 100644 index 52f536cc..00000000 --- a/apps/proxy/src/app/register/register.module.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { RegisterComponent } from './register.component'; -import { RouterModule, Routes } from '@angular/router'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { DirectivesMarkAllAsTouchedModule } from '@proxy/directives/mark-all-as-touched'; -import { UsersService } from '@proxy/services/proxy/users'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; - -const routes: Routes = [ - { - path: '', - component: RegisterComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [RegisterComponent], - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - MatCardModule, - FormsModule, - MatFormFieldModule, - MatInputModule, - MatButtonModule, - RouterModule.forChild(routes), - DirectivesMarkAllAsTouchedModule, - ], - providers: [UsersService], - exports: [RouterModule], -}) -export class RegisterModule {} diff --git a/apps/proxy/src/app/registration/registration.module.ts b/apps/proxy/src/app/registration/registration.module.ts deleted file mode 100644 index e527bc9b..00000000 --- a/apps/proxy/src/app/registration/registration.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterModule, Routes } from '@angular/router'; -import { RegistrationComponent } from './registration.component'; - -const routes: Routes = [ - { - path: '', - component: RegistrationComponent, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [RegistrationComponent], - imports: [CommonModule, RouterModule.forChild(routes)], - exports: [RouterModule], -}) -export class RegistrationModule {} diff --git a/apps/proxy/src/app/users/management/management.component.html b/apps/proxy/src/app/users/management/management.component.html deleted file mode 100644 index 49c2250f..00000000 --- a/apps/proxy/src/app/users/management/management.component.html +++ /dev/null @@ -1,394 +0,0 @@ -
    -
    -
    Select Block
    -
    - - Select Block - - - {{ feature.name }} - - - Block is required - -
    - -
    -
    Create Roles & Permissions
    - - - -
    -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    Roles -
    - {{ element.role }} -
    -
    Permissions -
      -
    • - {{ permission.name }} -
    • -
    -
    -
    - - - - - - -
    -
    -
    No Record Found
    -
    - - -
    -
    - - -
    -
    -
    - -
    - -
    - - - - - - - - - - - - - - - - - - - -
    Permissions - {{ element.name }} -
    {{ element.description }}
    -
    -
    - - -
    -
    -
    No Record Found
    -
    - - -
    -
    - -
    -
    - - -
    -
    - Note: To integrate the user management component into your website or - application, simply add the script to your page.
    -
    -
    - - -
    -
    -
    -
    - - -
    -

    Default Roles

    - -
    - -
    -

    Default role for creator

    -

    - The role that users are assigned after creating an organization. -

    - - Select default role for creator - - - {{ role.role }} - - - -
    - - -
    -

    Default role for member

    -

    The role that users are assigned as a new organization member.

    - - Select default role for member - - - {{ role.role }} - - - -
    - -
    -

    Hidden roles

    -

    Select the default roles you want to hide from users.

    - - Select roles to hide - - Owner - User - - -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    -
    - - - -
    -

    {{ isEditMode ? 'Edit Role' : 'Add Role' }}

    - -
    - -
    - - Role Name * - - - Role name is required - - - - - Permissions - - - {{ permission.name }} - - - Select one or more permissions - - - - Description - - -
    -
    - - - - -
    - - - -
    -

    {{ isEditPermissionMode ? 'Edit Permission' : 'Add Permission' }}

    - -
    - -
    - - Permission Name * - - - Permission name is required - - - - Description - - -
    -
    - - - - -
    diff --git a/apps/proxy/src/app/users/management/management.component.scss b/apps/proxy/src/app/users/management/management.component.scss deleted file mode 100644 index 8223fa08..00000000 --- a/apps/proxy/src/app/users/management/management.component.scss +++ /dev/null @@ -1,53 +0,0 @@ -.hover-action { - .actions { - opacity: 0; - transition: opacity 0.2s ease-in-out; - display: flex; - gap: 12px; - justify-content: flex-end; - margin-left: auto; - } - - &:hover { - .actions { - opacity: 1; - } - } -} - -// Align actions to right for permissions table as well -.actions { - display: flex; - gap: 12px; - justify-content: flex-end; - margin-left: auto; -} - -// Add small right padding to action cells -td[data-label='Actions'] { - padding-right: 16px !important; -} - -.permissions-list { - list-style-type: disc; - padding-left: 20px; - margin: 0; - - li { - margin-bottom: 4px; - line-height: 1.4; - } -} - -.roles-table { - min-width: 500px; - max-width: 900px; -} -.role-name { - font-weight: 600; - font-size: 14px; - color: #374151; -} -.table-border { - border: 1px solid #e0e0e0; -} diff --git a/apps/proxy/src/app/users/user/user.component.html b/apps/proxy/src/app/users/user/user.component.html deleted file mode 100644 index 3de769b6..00000000 --- a/apps/proxy/src/app/users/user/user.component.html +++ /dev/null @@ -1,220 +0,0 @@ -
    - - - -
    -
    - -
    -
    - - - -
    -
    -
    -
    - - Search By Company Name - - - - Block - - None - - {{ feature.name }} - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Name - - {{ element.name }} - - Email - - {{ element.email }} - - Phone Number - - {{ element.mobile ?? '-' }} - - User ID - - {{ element?.id }} - - - Block Name - - {{ element?.feature_configuration?.name }} - - Last Login - - - {{ element?.last_login_at | date: 'd MMM y' }} - - ({{ element?.last_login_at | date: 'mediumTime' }}) - - Created At - - - {{ element?.created_at | date: 'd MMM y' }} - - ({{ element?.created_at | date: 'mediumTime' }}) - -
    - -
    -
    - -
    -
    -
    - - - - - -
    -
    - - -
    -
    diff --git a/apps/proxy/src/app/users/users.module.ts b/apps/proxy/src/app/users/users.module.ts deleted file mode 100644 index 0fad3512..00000000 --- a/apps/proxy/src/app/users/users.module.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { RouterModule, Routes } from '@angular/router'; -import { NgModule } from '@angular/core'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { MatInputModule } from '@angular/material/input'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { CommonModule } from '@angular/common'; -import { UiComponentsSearchModule } from '@proxy/ui/search'; -import { UiDateRangePickerModule } from '@proxy/date-range-picker'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTableModule } from '@angular/material/table'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { ServicesProxyLogsModule } from '@proxy/services/proxy/logs'; -import { UiNoRecordFoundModule } from '@proxy/ui/no-record-found'; -import { DirectivesRemoveCharacterDirectiveModule } from '@proxy/directives/RemoveCharacterDirective'; -import { UiMatPaginatorGotoModule } from '@proxy/ui/mat-paginator-goto'; -import { UserComponent } from './user/user.component'; -import { ServicesProxyUsersModule } from '@proxy/services/proxy/users'; -import { ServicesProxyFeaturesModule } from '@proxy/services/proxy/features'; -import { DirectivesSkeletonModule } from '@proxy/directives/skeleton'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatTabsModule } from '@angular/material/tabs'; -import { MatSelectModule } from '@angular/material/select'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; -import { UiConfirmDialogModule } from '@proxy/ui/confirm-dialog'; -import { ManagementComponent } from './management/management.component'; -import { MarkdownModule } from 'ngx-markdown'; -import { UiCopyButtonModule } from '@proxy/ui/copy-button'; - -// Components -const routes: Routes = [ - { - path: '', - component: UserComponent, - data: { title: 'User' }, - pathMatch: 'full', - }, -]; - -@NgModule({ - declarations: [UserComponent, ManagementComponent], - imports: [ - FormsModule, - CommonModule, - RouterModule.forChild(routes), - MatCardModule, - MatButtonModule, - MatInputModule, - ReactiveFormsModule, - MatFormFieldModule, - MatTooltipModule, - MatTabsModule, - MatSelectModule, - MatDialogModule, - MatMenuModule, - MatDividerModule, - MatSlideToggleModule, - UiConfirmDialogModule, - MatIconModule, - MatTableModule, - MatPaginatorModule, - UiDateRangePickerModule, - ServicesProxyLogsModule, - UiNoRecordFoundModule, - UiMatPaginatorGotoModule, - UiComponentsSearchModule, - DirectivesRemoveCharacterDirectiveModule, - ServicesProxyUsersModule, - ServicesProxyFeaturesModule, - DirectivesSkeletonModule, - MarkdownModule.forRoot(), - UiCopyButtonModule, - ], - exports: [RouterModule], -}) -export class UsersModule {} diff --git a/apps/proxy/src/assets/scss/base/_default-variables.scss b/apps/proxy/src/assets/scss/base/_default-variables.scss deleted file mode 100644 index b26e66e4..00000000 --- a/apps/proxy/src/assets/scss/base/_default-variables.scss +++ /dev/null @@ -1,120 +0,0 @@ -:root { - // Border - --border-common-radius: 8px; - --border-common-radius-50: 50%; - --border-common-radius-4: 4px; - - // Common Font Weight - --font-weight-normal: normal; - --font-weight-thin: 100; - --font-weight-regular: 400; - --font-weight-medium: 500; - --font-weight-bold: bold; - --font-weight-bolder: bolder; - - --font-family-common: 'DM Sans', sans-serif; - // Common Font Size - --font-size-common-8: 8px; - --font-size-common-10: 10px; - --font-size-common-11: 11px; - --font-size-common-12: 12px; - --font-size-common-13: 13px; - --font-size-common-14: 14px; - --font-size-common-16: 16px; - --font-size-common-18: 18px; - --font-size-common-20: 20px; - --font-size-common-22: 22px; - --font-size-common-24: 24px; - --font-size-common-26: 26px; - --font-size-common-28: 28px; - --font-size-common-30: 30px; - --font-size-common-32: 32px; - --font-size-common-34: 34px; - - // Common color - --color-common-green: #008000; - --color-common-scrollbar: 0, 0, 0; - --color-common-hover: var(--color-common-silver); - - // New design color variables - --color-dark-primary: #171c26; - --color-dark-secondary: #7b879D; - --color-dark-accent: #19E6CE; - --color-dark-accent-light: #19E6CE1A; - --color-dark-muted: #A7AFBE; - --color-dark-light: #F0F2F4; - - // #1 - Hello - --color-hello-primary: #f2ca55; - --color-hello-primary-dark: #8c5d00; - --color-hello-primary-light: rgba(242, 190, 85, 0.17); - - // #2 - Email - --color-email-primary: #cc5229; - --color-email-primary-dark: #8c2e0e; - --color-email-primary-light: rgba(204, 82, 41, 0.12); - --color-email-primary-hover: #af4622; - - // #3 - WhatsApp - --color-whatsApp-primary: #29a653; - --color-whatsApp-primary-dark: #307368; - --color-whatsApp-primary-light: rgba(111, 202, 113, 0.16); - --color-whatsApp-primary-hover: #238b45; - - // #4 - RCS - --color-rcs-primary: #1a73e8; - --color-rcs-primary-dark: #264d99; - --color-rcs-primary-light: rgba(56, 146, 224, 0.12); - - // #5 - Campaign - --color-campaign-primary: #aa50f6; - --color-campaign-primary-dark: #5f388c; - --color-campaign-primary-light: rgba(167, 92, 229, 0.1); - - // #6 - Segmento - --color-segmento-primary: #e55ca1; - --color-segmento-primary-dark: #80335a; - --color-segmento-primary-light: rgba(229, 92, 161, 0.1); - - // #7 - Voice - --color-voice-primary: #696bef; - --color-voice-primary-dark: #3a3ba6; - --color-voice-primary-light: rgba(105, 107, 239, 0.12); - - // #8 - ShortURL - --color-short-url-primary: #de8644; - --color-short-url-primary-dark: #804f13; - --color-short-url-primary-light: rgba(229, 142, 34, 0.12); - - // #9 - Number - --color-number-primary: #24b3b3; - --color-number-primary-dark: #2e7373; - --color-number-primary-light: rgba(102, 221, 221, 0.12); - - // #10 - OTP - --color-otp-primary: #1157a6; - --color-otp-primary-dark: #0a3566; - --color-otp-primary-light: rgba(56, 146, 224, 0.12); - - // #11 Reports - --color-report-primary: #24b3b3; - --color-report-primary-dark: #268080; - --color-report-primary-light: rgba(76, 217, 217, 0.16); - - // #12 Telegram - --color-telegram-primary: #26a5e4; - --color-telegram-primary-dark: #2188ba; - --color-telegram-primary-light: rgba(37, 162, 224, 0.1); - - //grid style variable - --color-common-grid-style: #ffffff; - - // Active Items - --color-menu-common-active-link-background: #3f51b5; - --color-menu-common-active-link-text: #ffffff; - --color-menu-common-active-link-icon: #ffffff; - - --color-menu-common-hover-link-background: #3f51b5; - --color-menu-common-hover-link-text: #ffffff; - --color-menu-common-hover-link-icon: #ffffff; -} diff --git a/apps/proxy/src/assets/scss/base/_reset.scss b/apps/proxy/src/assets/scss/base/_reset.scss deleted file mode 100644 index 6533f57c..00000000 --- a/apps/proxy/src/assets/scss/base/_reset.scss +++ /dev/null @@ -1,69 +0,0 @@ -@use '../../../../../../node_modules/@angular/material/index' as mat; - -*, -*::before, -*::after { - box-sizing: border-box; -} -article, -aside, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section { - display: block; -} - -a { - text-decoration: none; -} -body { - margin: 0; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - text-align: left; - cursor: default; - color: var(--color-common-text); - background-color: var(--color-common-bg); - font-family: var(--font-family-common); - -webkit-text-size-adjust: 100%; -} - -// .mat-form-field-appearance-outline .mat-form-field-flex { -// font-size: 14px; -// // line-height: 1.225; -// } -// .mat-select-arrow-wrapper { -// vertical-align: baseline !important; -// } - -* { - scrollbar-width: thin; - scrollbar-color: mat.get-color-from-palette($new-primary) var(--color-common-bg); -} - -/* Works on Chrome/Edge/Safari */ -*::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -*::-webkit-scrollbar-track { - border-radius: var(--border-common-radius); - background: transparent; -} - -*::-webkit-scrollbar-thumb { - background: rgba(var(--color-common-scrollbar), 0.1); - border-radius: var(--border-common-radius); -} - -/* Handle on hover */ -::-webkit-scrollbar-thumb:hover { - background: rgba(var(--color-common-scrollbar), 0.5); -} diff --git a/apps/proxy/src/assets/scss/component/_buttons.scss b/apps/proxy/src/assets/scss/component/_buttons.scss deleted file mode 100644 index 71c8f767..00000000 --- a/apps/proxy/src/assets/scss/component/_buttons.scss +++ /dev/null @@ -1,326 +0,0 @@ -@use '../../../../../../node_modules/@angular/material/index' as mat; -@import '../theme/theme-colors'; -@import '../utils/mixins/common-utils'; - -$primary-btn-height: 40px; -$secondary-btn-height: 30px; - -.mat-button-base { - &.mat-flat-button, - &.mat-stroked-button, - &.mat-button { - border-radius: var(--border-common-radius-4); - min-width: auto !important; - transition: background-color 200ms cubic-bezier(0.35, 0, 0.25, 1); - line-height: $primary-btn-height; - - &.mat-button-disabled { - background-color: var(--color-button-bg) !important; - } - &.btn-medium { - line-height: $secondary-btn-height !important; - font-size: var(--font-size-common-12); - } - } - // 6. Flat button - &.mat-flat-button { - transition: background-color 200ms cubic-bezier(0.35, 0, 0.25, 1); - background-color: var(--color-dark-accent) !important; - color: var(--color-dark-primary) !important; - // Flat button color variation - &.flat-default { - @include btnHover(var(--color-button-text), var(--color-button-bg), var(--color-button-hover)); - } - &.flat-primary-light { - @include btnHover( - var(--color-common-primary), - var(--color-common-primary-light), - var(--color-common-primary-light-hover) - ); - } - &.flat-primary { - background-color: var(--color-common-primary-light); - color: var(--color-common-primary); - } - &.btn-success { - @include btnHover( - var(--color-common-white), - var(--color-whatsApp-primary), - var(--color-whatsApp-primary-hover), - var(--color-common-white) - ); - } - &.btn-success-light { - @include btnHover( - var(--color-whatsApp-primary), - var(--color-whatsApp-primary-light), - var(--color-whatsApp-primary), - var(--color-common-white) - ); - } - &.btn-danger-light { - @include btnHover( - var(--color-email-primary), - var(--color-email-primary-light), - var(--color-email-primary), - var(--color-common-white) - ); - } - // Hover state - &.mat-primary { - &:hover { - background-color: var(--color-common-primary-dark); - } - } - // Hover state - &.mat-warn { - @include btnHover( - var(--color-common-white), - var(--color-email-primary), - var(--color-email-primary-hover), - var(--color-common-white) - ); - } - // Flat Icon button - &.flat-icon-btn { - padding: 0px 12px; - } - - } - .mat-icon-suffix { - margin-right: calc(12px - 16px); - margin-left: 4px; - } - .mat-icon-prefix { - margin-left: calc(12px - 16px); - margin-right: 4px; - } - - &.mat-button { - @include btnHover(var(--color-button-text), transparent, var(--color-button-bg)); - &.mat-primary { - @include btnHover( - var(--color-common-primary), - transparent, - var(--color-common-primary-light), - var(--color-common-primary) - ); - } - } - &.mat-stroked-button { - line-height: 38px; - &:not(.mat-primary) { - border-color: var(--color-dark-accent) !important; - color: var(--color-dark-accent) !important; - } - &.mat-primary { - border-color: var(--color-primary-color) !important; - @include btnHover(var(--color-common-primary), transparent, var(--color-common-primary-light)); - } - } - &.remove-mat-button-focus-overlay { - .mat-button-focus-overlay { - display: none; - } - } -} - -/* 1. Icon Button */ -.mat-icon-button { - &.icon-btn-md { - @include generateIconBtn(30px, 18px, var(--color-common-text-2)); - } - &.icon-btn-sm { - @include generateIconBtn(20px, 12px, var(--color-common-text-2)); - } - &.mat-primary { - @include iconBtnHover( - var(--color-common-text-2), - var(--color-common-primary-light), - var(--color-common-primary) - ); - } - &.mat-warn { - @include iconBtnHover(var(--color-common-text-2), var(--color-email-primary-light), var(--color-email-primary)); - } - &.mat-success { - @include iconBtnHover( - var(--color-common-text-2), - var(--color-whatsApp-primary-light), - var(--color-whatsApp-primary) - ); - } - &.mat-button-disabled { - opacity: 0.6; - pointer-events: none; - } -} - -.mat-btn-xs { - @media only screen and (max-width: 660px) { - padding-left: 12px; - padding-right: 12px; - .mat-icon { - margin: 0px; - } - } -} - -// Slider -.slider::-webkit-slider-thumb { - background: var(--color-common-primary) !important; -} - -// Toggle Button light theme color - https://prnt.sc/wY6YBUSpVDQF - -.default-toggle-btn { - border-radius: var(--border-common-radius) !important; - border: none !important; - box-shadow: none !important; - .mat-button-toggle { - font-size: var(--font-size-common-14); - border-color: var(--color-common-border); - // min-width: 108px; - // &.mat-button-toggle-appearance-standard { - // background-color: var(--color-button-bg); - // color: var(--color-common-rock) !important; - // font-weight: 500; - // .mat-button-toggle-label-content { - // line-height: 40px !important; - // } - // &.mat-button-toggle-checked { - // background-color: var(--color-common-primary-light); - // color: var(--color-common-primary) !important; - // } - // } - background-color: var(--color-button-bg); - color: var(--color-button-text) !important; - font-weight: 500; - .mat-button-toggle-label-content { - line-height: 40px !important; - } - &.mat-button-toggle-checked { - background-color: var(--color-common-primary); - color: var(--color-common-white) !important; - &:hover { - background-color: var(--color-common-primary-dark); - } - } - &:hover { - background-color: var(--color-button-hover); - } - } - &.icon-type-button { - .mat-button-toggle { - min-width: auto; - } - } -} - -// Toggle Button - https://prnt.sc/ad0qU7tV7Bg5 -.custom-toggle-btn { - border-radius: var(--border-common-radius) !important; - .mat-button-toggle { - font-size: var(--font-size-common-12); - font-weight: 600; - color: var(--color-common-text-2); - border-color: var(--color-common-border); - &.mat-button-toggle-checked { - background-color: var(--color-common-primary) !important; - color: var(--color-common-white) !important; - } - &.mat-button-toggle-appearance-standard { - .mat-button-toggle-label-content { - line-height: 36.5px !important; - } - } - } -} - -// 11. Button size -.mat-btn-md { - min-height: 26px; - line-height: 30px !important; - font-size: var(--font-size-common-12) !important; - &.mat-btn-wran { - border-color: mat.get-color-from-palette($warn) !important; - } -} -.mat-btn-xs { - @media only screen and (max-width: 660px) { - padding-left: 12px !important; - padding-right: 12px !important; - .mat-icon { - margin: 0px; - } - } -} - -// Disabled Action on permission basis -.disabled-action, -button:disabled, -button[disabled], -button:hover:disabled, -button:hover[disabled], -button.mat-btn-md.mat-btn-wran:disabled, -button.mat-btn-md.mat-btn-wran[disabled], -button.mat-btn-md.mat-btn-wran:hover:disabled, -button.mat-btn-md.mat-btn-wran:hover[disabled] { - pointer-events: none; - color: var(--color-common-grey) !important; - border-color: var(--color-common-grey) !important; - .mat-icon { - color: var(--color-common-grey) !important; - } -} - -// 10. Mat slide toggle button design reference - https://prnt.sc/DDH-z4jHnmH5 -.mat-slide-toggle { - &.toggle-slide { - .mat-slide-toggle-content { - color: var(--color-common-white); - } - } - &.mat-checked { - .mat-slide-toggle-bar { - background-color: var(--color-whatsApp-primary-light) !important; - } - .mat-slide-toggle-thumb { - background-color: var(--color-whatsApp-primary) !important; - } - } - &.mat-disabled{ - .mat-slide-toggle-bar{ - background-color: var(--color-common-grey); - } - .mat-slide-toggle-thumb { - background-color: var(--color-common-slate) !important; - } - } -} -.radio-button-custom-style { - .mat-radio-button { - .mat-radio-outer-circle { - border-color: var(--color-dark-accent) !important; - } - - .mat-radio-inner-circle { - background-color: var(--color-dark-accent) !important; - } - } -} -.accent-color { - .material-icons { - &.mat-icon { - &.mat-icon-no-color { - color: var(--color-dark-accent) !important; - &:hover { - color: var(--color-dark-accent) !important; - } - } - } - } -} -.accent-bg-color { - background-color: var(--color-dark-accent) !important; -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_card.scss b/apps/proxy/src/assets/scss/component/_card.scss deleted file mode 100644 index 9ff1aa07..00000000 --- a/apps/proxy/src/assets/scss/component/_card.scss +++ /dev/null @@ -1,68 +0,0 @@ -@import '../utils/mixins/common-utils'; -/* -// Card -*/ -.mat-card { - box-shadow: none !important; - border-radius: var(--border-common-radius) !important; - background-color: var(--color-common-bg) !important; - &.responsive-card { - @include media-breakpoint-down('tablet') { - background-color: transparent !important; - border: none !important; - } - } - &.shadow-none { - box-shadow: none !important; - } - &.outline-card { - border: 1px solid var(--color-common-border); - box-shadow: none !important; - } - @media screen and (max-width: 768px) { - &.transparent-card { - box-shadow: none !important; - background-color: transparent !important; - border-width: 0px !important; - } - } - &.data-analytics-card { - background-color: var(--color-common-graph-bg) !important; - } - - &.default-card { - background-color: var(--color-common-graph-bg) !important; - } - - &.mat-data-card { - padding: 24px 32px; - .mat-data-card-content { - .mat-data-card-value { - padding-left: 32px; - p { - font-weight: 500; - font-size: 14px; - line-height: 16px; - margin-bottom: 4px; - } - h3 { - font-weight: 700; - font-size: 24px; - line-height: 28px; - } - } - } - &.delivered { - color: var(--color-whatsApp-primary) !important; - background-color: var(--color-whatsApp-primary-light) !important; - } - &.suppressed { - background-color: var(--color-short-url-primary-light) !important; - color: var(--color-short-url-primary) !important; - } - &.failed { - background-color: var(--color-email-primary-light) !important; - color: var(--color-email-primary) !important; - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_checkbox.scss b/apps/proxy/src/assets/scss/component/_checkbox.scss deleted file mode 100644 index c2f76827..00000000 --- a/apps/proxy/src/assets/scss/component/_checkbox.scss +++ /dev/null @@ -1,14 +0,0 @@ -.default-checkbox { - font-size: 14px; - line-height: 16px; - color: var(--color-common-text); -} - -// mat-checkbox doesn't get checked unitl we click on label or checkbox even if we have added w-100 -// need to pass full-width-clickable-checkbox class with w-100 to make mat-checkbox fully clickable -.full-width-clickable-checkbox { - .mat-checkbox-layout { - width: 100% !important; - display: inline-block; - } -} diff --git a/apps/proxy/src/assets/scss/component/_filters.scss b/apps/proxy/src/assets/scss/component/_filters.scss deleted file mode 100644 index 5df943f5..00000000 --- a/apps/proxy/src/assets/scss/component/_filters.scss +++ /dev/null @@ -1,62 +0,0 @@ -.filter-menu { - min-width: 400px !important; - max-width: 400px !important; - margin-top: 12px; - @media (max-width: 660px) { - min-width: 80vw !important; - max-width: 80vw !important; - max-height: 70vh; - } - .mat-menu-content { - padding: 0px !important; - .date-picker-row { - padding: 20px 25px 0px 25px; - } - .mat-form-field { - .mat-icon { - width: 16px; - } - } - .action-button { - padding: 20px 25px; - } - } -} - -.client-filter-menu { - min-width: 400px !important; - max-width: 400px !important; - margin-top: 12px; - @media (max-width: 660px) { - min-width: 80vw !important; - max-width: 80vw !important; - max-height: 70vh !important; - overflow-y: hidden !important; - } - .mat-menu-content { - padding: 0px !important; - .date-picker-row { - padding: 25px; - } - .client-filter-content { - @media (max-width: 992px) { - max-height: 58vh; - overflow-y: auto; - } - } - .mat-form-field { - .mat-icon { - width: 16px; - } - } - .action-button { - padding: 20px 25px; - } - } -} - -.column-sort { - .mat-menu-content { - max-height: 600px; - } -} diff --git a/apps/proxy/src/assets/scss/component/_form-field.scss b/apps/proxy/src/assets/scss/component/_form-field.scss deleted file mode 100644 index 3ff5a120..00000000 --- a/apps/proxy/src/assets/scss/component/_form-field.scss +++ /dev/null @@ -1,254 +0,0 @@ -// Default theme changes -.mat-form-field { - .mat-form-field-wrapper { - vertical-align: baseline !important; - - .mat-form-field-flex { - font-size: var(--font-size-common-14); - line-height: 1.225; - .mat-form-field-infix { - .mat-form-field-label-wrapper { - .mat-form-field-label { - color: var(--color-common-slate); - } - } - } - } - .mat-form-field-hint-wrapper { - .mat-hint { - color: var(--color-common-slate); - font-size: 12px; - } - } - } - &.search-form-field:not(.unset-search-width) { - width: 250px; - } -} - -.mat-form-field { - &.mat-form-field-appearance-legacy { - &.mat-legacy-form-field-sm { - .mat-form-field-wrapper { - padding-bottom: 0px; - } - .mat-form-field-infix { - border-top: 0px !important; - padding: 8px 0 4px 0 !important; - max-width: 100%; - // min-width: 100px; - width: 100%; - font-size: 14px; - } - .mat-form-field-suffix { - button { - width: 23px; - height: 23px; - min-height: 23px; - line-height: 23px; - } - } - .mat-form-field-underline { - bottom: 0px !important; - } - .mat-form-field-subscript-wrapper { - top: calc(100% - 5px); - .mat-error { - font-size: var(--font-size-common-12); - } - } - .mat-form-field-label { - top: 1.00125em !important; - } - } - } - &.mat-form-field-disabled { - .mat-form-field-wrapper { - .mat-form-field-flex { - .mat-form-field-outline { - background-color: var(--color-common-silver) !important; - border-radius: var(--border-common-radius-4) !important; - } - } - } - } -} - -// Default form field -.mat-form-field { - .mat-form-field-infix { - padding: 5px 0 10px 0 !important; - .mat-input-element { - &::-webkit-input-placeholder { - /* Chrome/Opera/Safari */ - color: var(--color-common-grey); - font-weight: normal; - } - &::-moz-placeholder { - /* Firefox 19+ */ - color: var(--color-common-grey); - font-weight: normal; - } - &:-ms-input-placeholder { - /* IE 10+ */ - color: var(--color-common-grey); - font-weight: normal; - } - &:-moz-placeholder { - /* Firefox 18- */ - color: var(--color-common-grey); - font-weight: normal; - } - } - .mat-form-field-label-wrapper { - .mat-form-field-required-marker { - display: none; - } - } - &.mat-form-field-appearance-outline { - .mat-form-field-outline { - background-color: var(--color-common-white) !important; - } - } - } - .mat-form-field-flex { - .mat-form-field-outline { - background-color: var(--color-common-white); - .mat-form-field-outline-start { - border-radius: var(--border-common-radius-4) 0 0 var(--border-common-radius-4); - min-width: var(--border-common-radius-4); - } - .mat-form-field-outline-end { - border-radius: 0 var(--border-common-radius-4) var(--border-common-radius-4) 0; - } - } - .mat-form-field-infix { - .mat-select { - .mat-select-trigger { - .mat-select-arrow-wrapper { - transform: translateY(0%); - } - } - } - } - } - input { - &.mat-input-element { - color: var(--color-common-text); - } - } - &.no-padding { - .mat-form-field-wrapper { - padding-bottom: 0px !important; - .mat-form-field-flex { - .mat-form-field-prefix { - color: var(--color-common-grey) !important; - } - } - } - } - // Used to display only first mat-error - mat-error { - display: none !important; - font-size: var(--font-size-common-12); - &:first-child { - display: block !important; - } - } -} - -@-moz-document url-prefix() { - .mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button, - .mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button { - display: inline-block !important; - } -} - -// Disbaled stroked input form field -.mat-form-field-disabled .mat-form-field-underline { - background-image: linear-gradient(to right, rgba(0, 0, 0, 1) 0, rgba(0, 0, 0, 0.42) 33%, #c2c7cc 0) !important; - background-size: 1px 100% !important; - background-repeat: repeat-x !important; -} - -.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label, -.mat-form-field-appearance-outline.mat-form-field-can-float - .mat-input-server:focus - + .mat-form-field-label-wrapper - .mat-form-field-label { - transform: translateY(-15px) scale(0.7) !important; -} - -.mat-form-field-appearance-outline .mat-form-field-label { - top: 18px !important; -} - -.mat-form-field-subscript-wrapper { - padding: 0px !important; - margin-top: 2px !important; - font-size: var(--font-size-common-10); -} - -/* Firefox hide */ -input[matinput][type='number'] { - -moz-appearance: textfield; -} -/* Chrome, Safari, Edge, Opera */ -input[matinput]::-webkit-outer-spin-button, -input[matinput]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} - -.mat-form-field-outside-error { - height: 21.5px; -} - -// Input focus/highlight color -.mat-form-field.mat-focused { - .mat-form-field-ripple { - background-color: var(--color-dark-accent) !important; - } - - .mat-form-field-outline-thick { - color: var(--color-dark-accent) !important; - } - - .mat-form-field-label { - color: var(--color-dark-primary) !important; - } -} - -// MDC Form Field styles (Angular Material 15+) -.mat-mdc-form-field.mat-focused { - .mdc-text-field--outlined:not(.mdc-text-field--disabled) { - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: var(--color-dark-accent) !important; - } - } - - .mdc-text-field--filled:not(.mdc-text-field--disabled) { - .mdc-line-ripple::after { - border-bottom-color: var(--color-dark-accent) !important; - } - } - - .mat-mdc-floating-label { - color: var(--color-dark-primary) !important; - } -} - -// MDC focused outline -.mdc-text-field--focused:not(.mdc-text-field--disabled) { - .mdc-notched-outline__leading, - .mdc-notched-outline__notch, - .mdc-notched-outline__trailing { - border-color: var(--color-dark-accent) !important; - } - - .mdc-floating-label { - color: var(--color-dark-primary) !important; - } -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_loader.scss b/apps/proxy/src/assets/scss/component/_loader.scss deleted file mode 100644 index 1939f086..00000000 --- a/apps/proxy/src/assets/scss/component/_loader.scss +++ /dev/null @@ -1,40 +0,0 @@ -.content-loader { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 999999; - background-color: transparent; - .loading-box { - min-width: 130px; - width: auto; - position: absolute; - left: 50%; - top: 50%; - margin: auto; - z-index: 999; - transform: translate(-50%, -50%); - background-color: var(--color-common-white); - box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), - 0px 1px 14px 0px rgba(0, 0, 0, 0.12); - padding: 6px; - border-radius: 6px; - color: var(--color-common-slate); - display: flex; - justify-content: center; - .mat-progress-spinner { - width: 20px !important; - height: 20px !important; - svg { - width: 20px !important; - height: 20px !important; - } - } - span { - margin-left: 12px; - font-size: 14px; - color: var(--color-common-slate); - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_mat-list.scss b/apps/proxy/src/assets/scss/component/_mat-list.scss deleted file mode 100644 index 67ddf108..00000000 --- a/apps/proxy/src/assets/scss/component/_mat-list.scss +++ /dev/null @@ -1,43 +0,0 @@ -.mat-list{ - &.custom-nav-list{ - .mat-list-item{ - .mat-list-item-content{ - padding: 0px !important; - } - } - } - &.default-list{ - .mat-list-item { - height: 36px; - font-size: 14px; - color: var(--color-common-dark); - cursor: pointer; - margin-bottom: 4px; - &.active{ - background-color: var(--color-common-primary-light); - color: var(--color-common-primary); - } - &:hover{ - background-color: var(--color-common-silver); - } - .mat-list-item-content{ - padding-inline: 8px; - } - } - &.mat-list-sm { - .mat-list-item { - height: 28px; - } - } - } -} -.mat-menu-hover-state{ - .mat-menu-item{ - &.active{ - background-color: var(--color-otp-primary-light); - } - &:not(.active):hover{ - background-color: var(--color-common-bg-lighter); - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_menu.scss b/apps/proxy/src/assets/scss/component/_menu.scss deleted file mode 100644 index 53d5b16c..00000000 --- a/apps/proxy/src/assets/scss/component/_menu.scss +++ /dev/null @@ -1,74 +0,0 @@ -.mat-menu-panel { - border-radius: var(--border-common-radius) !important; -} -.more-menu { - min-height: auto !important; - .mat-menu-item { - font-size: 13px; - line-height: 36px; - height: 36px; - &.mat-menu-item-active { - background-color: var(--color-common-primary-light); - color: var(--color-common-primary) !important; - } - } -} -.form-scrollable { - max-height: calc(100vh - 400px); - overflow-y: auto; - @media only screen and (max-width: 768px) { - max-height: calc(100vh - 250px); - } -} - -.subscription-filter-menu { - min-width: 500px !important; - max-width: 500px !important; - margin-top: 12px; - .mat-form-field { - .mat-form-field-wrapper { - padding-bottom: 14px !important; - .mat-form-field-flex { - .mat-form-field-infix { - .mat-form-field-label-wrapper { - top: -18px; - } - } - } - } - } - .form-scrollable { - max-height: calc(100vh - 400px); - overflow-y: auto; - @media only screen and (max-width: 768px) { - max-height: calc(100vh - 250px); - } - } -} - -.logs-filter-menu, .profile-menu { - min-width: 300px !important; - max-width: 300px !important; - .mat-menu-content { - .mat-form-field { - .mat-form-field-wrapper { - // padding-bottom: 1.34375em !important; - .mat-form-field-label-wrapper { - top: -18px !important; - } - } - } - } -} - -.profile-sub-dropdown { - .mat-menu-item { - padding: 0px 24px; - height: 40px; - line-height: 40px; - font-size: 14px; - } - #scrollableWrapper { - overflow-x: hidden !important; - } -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_modal.scss b/apps/proxy/src/assets/scss/component/_modal.scss deleted file mode 100755 index 715f3400..00000000 --- a/apps/proxy/src/assets/scss/component/_modal.scss +++ /dev/null @@ -1,102 +0,0 @@ -.mat-dialog-container { - padding: 16px 24px !important; - width: 450px !important; - position: relative; - border-radius: var(--border-common-radius) !important; -} - -.mat-dialog-md { - .mat-dialog-container { - width: 100% !important; - } -} - -.mat-dialog { - &.mat-dialog-lg { - .mat-dialog-container { - min-width: 800px !important; - } - } -} - -.rejection-reason-drop + .cdk-overlay-connected-position-bounding-box { - right: 16px !important; -} -.rejection-reason { - min-width: 500px !important; - max-width: 500px !important; - margin-bottom: 10px; - &.voice-file-rejection { - height: 750px !important; - } - .mat-menu-content { - padding-top: 0 !important; - .rejection-reason-header { - padding: 0px 16px; - } - .new-reason-form { - padding: 0px 16px; - top: 0; - z-index: 999; - } - .rejection-list { - overflow-y: auto; - list-style: none; - margin: 0px; - padding: 16px; - .rejection-item { - margin-bottom: 10px; - border: 1px dashed var(--color-common-border); - border-radius: 4px; - padding: 10px; - cursor: pointer !important; - transition: background-color 0.2s cubic-bezier(0.35, 0, 0.25, 1); - &:hover { - background-color: var(--color-sidenav-menu-hover-link-background) !important; - border-color: var(--color-sidenav-menu-hover-link-text); - .title, - .subtitle, - .mat-delete-btn, - .rejection-item-action .mat-icon { - color: var(--color-sidenav-menu-hover-link-text) !important; - } - .rejection-item-action .mat-icon { - color: var(--color-sidenav-menu-hover-link-text); - } - } - &.selected { - background-color: var(--color-sidenav-menu-active-link-background) !important; - border-color: var(--color-sidenav-menu-active-link-text); - .title, - .subtitle, - .mat-delete-btn { - color: var(--color-sidenav-menu-active-link-text) !important; - } - .rejection-item-action .mat-icon { - color: var(--color-sidenav-menu-hover-link-text); - } - } - } - } - } - .bottom-seprator { - padding: 10px; - display: flex; - align-items: center; - justify-content: center; - box-shadow: 13px -6px 13px -7px #00000036; - position: sticky; - bottom: 0; - background-color: var(--color-common-white); - } - .no-record-found { - height: 366px; - display: flex; - align-items: center; - justify-content: center; - } -} - -.mat-dialog-actions { - margin: 0px !important; -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_pagination.scss b/apps/proxy/src/assets/scss/component/_pagination.scss deleted file mode 100644 index fd46a6e7..00000000 --- a/apps/proxy/src/assets/scss/component/_pagination.scss +++ /dev/null @@ -1,120 +0,0 @@ -.mat-paginator { - background: var(--colo-common-bg); - &.default-mat-paginator { - background-color: transparent !important; - .mat-form-field { - .mat-form-field-wrapper { - padding-bottom: 6px !important; - } - } - .mat-paginator-range-label { - @media only screen and (max-width: 768px) { - margin: 0 10px 0 10px; - } - } - } -} - -.cdk-overlay-pane .mat-select-panel-wrap { - margin-top: 0 !important; -} - -// Goto pagination -.mat-paginator-outer-container { - .mat-select-value { - line-height: 16px; - } - .mat-paginator-page-size-label, - .mat-paginator-range-label { - font-size: var(--font-size-common-12); - } - .mat-form-field-wrapper { - .mat-form-field-infix { - padding: 0px 0 10px 0 !important; - } - } -} -.go-to-pagination { - border-top: 1px solid var(--color-table-cell-border); - background-color: var(--color-common-white); - .mat-paginator { - box-shadow: none !important; - border-top: 0px; - .mat-paginator-page-size-label { - @media (max-width: 660px) { - display: none; - } - } - } - .go-to-container { - display: flex; - align-items: baseline; - height: 39px; - margin-top: -3px; - .go-to-label { - margin: 0 4px; - font-size: 12px; - color: var(--color-common-text); - font-family: var(--font-family-common); - @media (max-width: 460px) { - display: none; - } - } - .mat-form-field { - width: 56px; - font-size: 12px; - .mat-form-field-wrapper { - padding-bottom: 0px !important; - .mat-form-field-flex { - font-size: 12px; - .mat-form-field-infix { - padding: 4px 0 10px 0 !important; - - .mat-select-arrow-wrapper { - transform: translateY(-15%) !important; - } - - .mat-select-value-text { - color: var(--color-common-text); - } - } - } - } - } - } - .mat-paginator { - .mat-paginator-container { - @media (max-width: 460px) { - padding-right: 0px; - .mat-paginator-page-size { - margin-right: 0px !important; - } - .mat-paginator-range-label { - margin-right: 0px !important; - } - .mat-paginator-navigation-previous, - .mat-paginator-navigation-next { - width: 30px; - height: 30px; - line-height: 30px; - } - } - } - } -} -// Add class inside Overlay useing provider -.custom-mat-paginator { - .mat-select-panel-wrap { - .mat-select-panel { - border-radius: var(--border-common-radius); - .mat-option { - font-size: var(--font-size-common-11); - } - } - } -} - -.mat-form-field-appearance-outline .mat-form-field-flex { - font-size: var(--font-size-common-14); - line-height: 1.225; -} diff --git a/apps/proxy/src/assets/scss/component/_select-option.scss b/apps/proxy/src/assets/scss/component/_select-option.scss deleted file mode 100644 index d36ff86c..00000000 --- a/apps/proxy/src/assets/scss/component/_select-option.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import '../theme/theme-colors'; - -.cdk-overlay-pane { - .mat-select-panel-wrap { - .mat-select-panel { - .mat-option { - &.mat-selected { - color: var(--color-common-text) !important; - } - } - } - } -} - -// Autocomplete -.mat-autocomplete-panel { - .mat-option{ - font-size: 14px; - height: 40px !important; - line-height: 40px !important; - &:hover{ - background-color: var(--color-common-primary-light) !important; - } - } -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_side-dialog.scss b/apps/proxy/src/assets/scss/component/_side-dialog.scss deleted file mode 100644 index 0f5cc7cf..00000000 --- a/apps/proxy/src/assets/scss/component/_side-dialog.scss +++ /dev/null @@ -1,41 +0,0 @@ -.mat-right-dialog { - position: absolute !important; - right: 0; - top: 0; - height: 100%; - overflow: auto; - box-shadow: -4px 0px 16px #00000059; - &.mat-dialog-lg { - width: 535px; - } - &.mat-dialog-md { - width: 450px; - } - .mat-right-dialog-container { - display: flex; - flex-direction: column; - height: 100%; - } - .mat-dialog-container { - width: 100% !important; - padding: 0px !important; - border-radius: 0px !important; - .mat-right-dialog-container { - .mat-right-dialog-header { - // position: sticky; - // top: 0; - // z-index: 1000; - padding: 8px 16px; - border-bottom: 1px solid var(--color-common-border); - h2 { - font-weight: var(--font-weight-medium); - } - } - .mat-right-dialog-content { - padding: 16px; - overflow-y: scroll; - height: 100%; - } - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_sidenav.scss b/apps/proxy/src/assets/scss/component/_sidenav.scss deleted file mode 100644 index 6727a990..00000000 --- a/apps/proxy/src/assets/scss/component/_sidenav.scss +++ /dev/null @@ -1,33 +0,0 @@ -.default-sidenav { - .mat-nav-list { - padding-top: 0px; - .mat-list-item { - height: 40px !important; - cursor: pointer !important; - color: var(--color-sidenav-menu-link-text) !important; - position: relative; - .mat-icon { - border-radius: 0px !important; - } - .mat-list-item-content { - padding: 0px 0px 0px 16px; - } - &.mat-list-item-disabled { - background-color: transparent; - pointer-events: none; - } - .mat-line { - font-size: 14px !important; - font-weight: 400; - &.menu-svg-icon { - fill: red; - svg { - path { - fill: var(--color-common-slate); - } - } - } - } - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_status.scss b/apps/proxy/src/assets/scss/component/_status.scss deleted file mode 100644 index 8092a9f6..00000000 --- a/apps/proxy/src/assets/scss/component/_status.scss +++ /dev/null @@ -1,42 +0,0 @@ -.status { - padding: 0px 12px; - border-radius: 13px; - font-size: 12px; - text-transform: capitalize; - font-weight: normal; - width: min-content; - display: inline-block; - text-align: center; - height: 24px; - line-height: 24px; - - // Used in unverified, open, status - &.status-default { - background-color: var(--color-common-graph-bg) !important; - color: var(--color-common-rock) !important; - } - // Used in in-progress status - &.status-pending { - color: var(--color-hello-primary-dark) !important; - background-color: var(--color-hello-primary-light) !important; - } - - // Used in submitted delivered - &.status-success { - color: var(--color-whatsApp-primary) !important; - background-color: var(--color-whatsApp-primary-light) !important; - } - // Used in removed, rejected - &.status-failed { - color: var(--color-email-primary) !important; - background-color: var(--color-email-primary-light) !important; - } - &.status-approved { - color: var(--color-common-primary) !important; - background-color: var(--color-common-primary-light) !important; - } - &.status-warning { - color: var(--color-short-url-primary) !important; - background-color: var(--color-short-url-primary-light) !important; - } -} diff --git a/apps/proxy/src/assets/scss/component/_stepper.scss b/apps/proxy/src/assets/scss/component/_stepper.scss deleted file mode 100644 index 292ed764..00000000 --- a/apps/proxy/src/assets/scss/component/_stepper.scss +++ /dev/null @@ -1,74 +0,0 @@ -.mat-stepper-horizontal{ - .mat-horizontal-stepper-wrapper { - height: 100%; - .mat-horizontal-stepper-header { - - // height: 36px; - padding: 16px 12px; - .mat-step-label{ - font-size: var(--font-size-common-12); - color: #3F4346; - font-weight: 500; - padding-top: 8px; - } - } - } - .mat-horizontal-content-container{ - height: 100%; - padding: 0 24px 12px 24px !important; - } - .mat-horizontal-stepper-content{ - height: 100%; - } - // When Label Position set to labelPosition="bottom" in html - &.mat-stepper-label-position-bottom{ - .mat-horizontal-stepper-wrapper { - .mat-horizontal-stepper-header{ - &-container{ - padding: 8px 16px; - .mat-stepper-horizontal-line{ - top: 28px; - } - } - &::before, &::after{ - top: 28px; - } - } - } - } -} - - -.mat-stepper-horizontal, -.mat-stepper-vertical { - .mat-step-icon-selected, - .mat-step-icon-state-done, - .mat-step-icon-state-edit { - background-color: var(--color-dark-accent) !important; - color: var(--color-dark-primary) !important; - } -} - - -// &.mat-stepper-starched { -// .mat-horizontal-stepper-wrapper { -// height: 100%; -// .mat-horizontal-stepper-header { - -// // height: 36px; -// padding: 16px 12px; -// .mat-step-label{ -// font-size: var(--font-size-common-12); -// color: #3F4346; -// font-weight: 500; -// padding-top: 8px; -// } -// } -// } -// .mat-horizontal-content-container{ -// height: 100%; -// } -// .mat-horizontal-stepper-content{ -// height: 100%; -// } -// } \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/component/_table.scss b/apps/proxy/src/assets/scss/component/_table.scss deleted file mode 100644 index d8b872ee..00000000 --- a/apps/proxy/src/assets/scss/component/_table.scss +++ /dev/null @@ -1,275 +0,0 @@ -@import "../../scss/utils/mixins/common-utils"; -.table-scroll { - display: block; - @include media-breakpoint-up('tablet') { - height: calc(100vh - 160px); - overflow-y: auto; - } -} - -.table-wp-scroll { - height: calc(100vh - 180px); - overflow-y: auto; - display: block; -} - -@media (max-width: 660px) { - .header-mobile { - flex-direction: column; - align-items: flex-end !important; - - .search-box { - width: 100%; - - .search-input { - width: 100%; - margin-right: 0px !important; - } - } - } -} - -.table-scroll-pagination { - height: calc(100vh - 112px); - overflow-y: auto; - display: block; -} - -.table-scroll-header { - height: calc(100vh - 170px); - max-height: calc(100vh - 170px); - overflow-y: auto; - display: block; - - .mat-table { - .mat-header-row { - .mat-header-cell { - border-top: 0px !important; - } - } - } -} - -.default-table { - background-color: var(--color-common-bg) !important; - box-shadow: none; - width: 100%; - border-radius: var(--border-common-radius); - &:has(.mat-no-data-row) { - height: 100%; - } - .mat-header-row { - background-color: var(--color-common-bg) !important; - .mat-header-cell { - font-weight: var(--font-weight-bold); - font-size: 12px; - color: var(--color-table-head) !important; - border-bottom-color: var(--color-table-head-border) !important; - &:not(:first-child) { - padding-left: 8px; - } - &:first-child{ - border-top-left-radius: 8px; - } - &:last-child{ - border-top-right-radius: 8px; - } - } - } - .mat-row { - .mat-cell { - font-weight: normal; - font-size: 14px; - color: var(--color-table-cell); - border-bottom-color: var(--color-table-cell-border) !important; - @media only screen and (min-width: 768px) { - padding-left: 8px; - &:last-child { - padding-right: 24px; - } - &:first-child { - padding-left: 24px; - } - } - &:not { - &:first-of-type { - padding-left: 8.8px; - } - } - } - - &.highlight { - background-color: var(--color-common-bg-lighter); - } - &:hover:not(.mat-no-data-row) { - background: var(--color-common-silver); - } - &.mat-no-data-row { - .mat-cell { - padding: 0px; - } - } - &.last-child { - .mat-cell { - border-bottom: 0px; - } - } - &.hover-action{ - .actions { - opacity: 0; - } - @media (hover: hover) { - &:hover{ - .actions { - opacity: 1; - } - } - } - @media (hover: none) { - .actions{ - opacity: 1; - } - } - } - } -} - -@media screen and (max-width: 768px) { - .mat-table { - background-color: transparent !important; - &.responsive-table { - background-color: transparent; - .mat-row { - box-shadow: 0 0 5px rgb(0 0 0 / 10%); - display: block; - min-height: 30px; - height: auto; - border-radius: 5px; - margin-bottom: 16px; - background-color: var(--color-common-white); - border: 1px solid var(--color-common-border); - &:not(.mat-no-data-row) { - display: grid; - grid-template-columns: auto auto; - } - .mat-cell { - flex: 1; - display: flex; - align-items: center; - overflow: hidden; - word-wrap: break-word; - min-height: inherit; - - border-bottom: 1px solid var(--color-table-cell-border); - display: block; - text-align: left; - font-weight: 500; - height: auto; - padding: 6px 8px; - display: grid; - font-size: 12px; - &:before { - content: attr(data-label); - float: left; - text-transform: uppercase; - font-weight: 500; - font-size: 10px; - color: var(--color-common-rock); - } - &:last-child { - border-bottom: 0; - } - &:nth-child(even) { - text-align: right; - // &:after { - // content: attr(data-label); - // float: left; - // text-transform: uppercase; - // font-weight: 500; - // font-size: 10px; - // color: var(--color-common-rock); - // } - // &:before { - // display: none; - // } - } - &.action-column-m { - height: 62px; - } - &.justify-content-end { - justify-content: end; - } - &.justify-content-start { - justify-content: flex-start; - } - } - } - .mat-footer-row { - display: flex; - align-items: center; - box-sizing: border-box; - min-height: 30px; - height: auto; - .mat-footer-cell { - flex: 1; - display: flex; - align-items: center; - overflow: hidden; - word-wrap: break-word; - min-height: inherit; - } - } - .mat-header-row { - display: flex; - align-items: center; - box-sizing: border-box; - min-height: 48px; - height: auto; - .mat-header-cell { - flex: 1; - display: flex; - align-items: center; - overflow: hidden; - word-wrap: break-word; - min-height: inherit; - &:first-child { - padding-left: 8px; - } - } - } - - thead { - display: none; - } - } - } -} - -.v-align-middle { - vertical-align: middle; -} -.v-align-top { - vertical-align: top; -} - -// Expandable table Ex: template table -.expandable-table { - .mat-row { - &:not(.expandable-row-table) { - cursor: pointer; - .mat-cell { - border-bottom-width: 0px !important; - } - } - &.expandable-row-table { - height: 0; - } - .mat-cell { - .expandable-element-detail { - overflow: hidden; - display: flex; - background-color: var(--color-common-bg); - } - } - } -} diff --git a/apps/proxy/src/assets/scss/component/_tabs.scss b/apps/proxy/src/assets/scss/component/_tabs.scss deleted file mode 100644 index edde2055..00000000 --- a/apps/proxy/src/assets/scss/component/_tabs.scss +++ /dev/null @@ -1,57 +0,0 @@ -@use '../../../../../../node_modules/@angular/material/index' as mat; -/* -// Tabs -*/ -.mat-tab-header { - .mat-tab-labels { - margin-left: 14px; - margin-right: 16px; - .mat-tab-label { - font-size: 14px; - line-height: 22px; - font-weight: 400; - opacity: 1; - &.mat-tab-label-active { - font-weight: 600; - } - } - } -} - -// MDC Tab styles (Angular Material 15+) -.mat-mdc-tab-group, -.mat-mdc-tab-nav-bar { - // Active tab text color - .mdc-tab--active .mdc-tab__text-label { - color: var(--color-dark-accent) !important; - } - - // Tab underline/indicator color - multiple selectors for compatibility - .mdc-tab-indicator--active .mdc-tab-indicator__content--underline { - border-color: var(--color-dark-accent) !important; - } - - .mat-mdc-tab-header .mat-mdc-ink-bar { - background-color: var(--color-dark-accent) !important; - } - - .mat-ink-bar { - background-color: var(--color-dark-accent) !important; - } - - // Inactive tab text color - .mdc-tab:not(.mdc-tab--active) .mdc-tab__text-label { - color: var(--color-dark-primary) !important; - } -} - -// Legacy tab styles -.mat-tab-group { - .mat-ink-bar { - background-color: var(--color-dark-accent) !important; - } - - .mat-tab-label-active { - color: var(--color-dark-primary) !important; - } -} diff --git a/apps/proxy/src/assets/scss/component/_text-style.scss b/apps/proxy/src/assets/scss/component/_text-style.scss deleted file mode 100644 index 746fd30f..00000000 --- a/apps/proxy/src/assets/scss/component/_text-style.scss +++ /dev/null @@ -1,170 +0,0 @@ -@use '../../../../../../node_modules/@angular/material/index' as mat; -@import '../theme/theme-colors'; - -/* Font Weight */ -.fw-thin { - font-weight: 100 !important; -} -.fw-regular { - font-weight: 400 !important; -} -.fw-bold { - font-weight: 500 !important; -} -.fw-bolder { - font-weight: 600 !important; -} -.fw-normal { - font-weight: normal !important; -} - -/* Text Color */ -.text-primary-muted { - color: var(--color-common-grey); -} -.text-white { - color: var(--color-common-white); -} -.text-dark { - color: var(--color-common-text) !important; -} -.text-secondary { - color: var(--color-common-dark) !important; -} -.theme-primary { - color: var(--color-common-primary) !important; -} -.text-success { - color: var(--color-whatsApp-primary) !important; -} -.text-pending { - color: var(--color-short-url-primary); -} -.text-danger { - color: mat.get-color-from-palette($warn) !important; -} -.text-primary { - color: var(--color-common-primary) !important; -} -.text-white { - color: var(--color-common-white); -} -.text-grey { - color: var(--color-common-grey) !important; -} -.text-hover-primary { - &:hover { - color: var(--color-common-primary) !important; - } -} -.text-hover-underline { - &:hover { - text-decoration: underline; - } -} -/* -// Opacity -*/ - -.t-opacity-5 { - opacity: 0.5; -} -.t-opacity-6 { - opacity: 0.6; -} -.t-opacity-7 { - opacity: 0.7; -} -.t-opacity-8 { - opacity: 0.8; -} -.t-opacity-9 { - opacity: 0.9; -} -.w-break { - word-break: break-word; -} - -.t-capitalize { - text-transform: capitalize; -} - -.text-underline { - text-decoration: underline; -} - -pre { - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; - a { - &:link { - color: var(--color-link-color) !important; - } - &:visited { - color: var(--color-link-color) !important; - } - &:hover { - color: var(--color-link-color) !important; - } - &:active { - color: var(--color-link-color) !important; - } - } -} - -.tooltip-list { - white-space: pre; - font-size: 12px; - list-style: none; -} - -.custom-tooltip { - max-width: unset !important; -} - -.word-break { - word-break: break-all; -} -.fr-emoticon-img { - width: 1rem; - height: 1rem; - background-repeat: no-repeat; - display: inline-block; -} -.pointer-none { - pointer-events: none !important; -} -// Text size -.font-10 { - font-size: 10px !important; -} -.font-11 { - font-size: 11px !important; -} -.font-12 { - font-size: 12px !important; -} -.font-14 { - font-size: var(--font-size-common-14) !important; -} -.font-20 { - font-size: var(--font-size-common-20) !important; -} - -.w-b-hyphens { - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -ms-hyphens: auto; - -moz-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -.border-none { - border: none !important; -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/layout/_display.scss b/apps/proxy/src/assets/scss/layout/_display.scss deleted file mode 100644 index 50800bd5..00000000 --- a/apps/proxy/src/assets/scss/layout/_display.scss +++ /dev/null @@ -1,89 +0,0 @@ -.d-none { - display: none; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-grid { - display: grid !important; -} - -.hide-xs { - @media (max-width: 768px) { - display: none; - } -} - -.flex-column { - flex-direction: column; -} - -.justify-content-between { - justify-content: space-between; -} - -.justify-content-end { - justify-content: flex-end; -} - -.align-items-center { - align-items: center; -} - -.align-items-start { - align-items: flex-start; -} - -.align-items-end { - align-items: flex-end; -} - -.align-items-baseline { - align-items: baseline; -} - -.gap-1 { - gap: 4px; -} -.gap-2 { - gap: 8px; -} -.gap-3 { - gap: 16px; -} -.gap-4 { - gap: 24px; -} -.gap-5 { - gap: 32px; -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/layout/_flex.scss b/apps/proxy/src/assets/scss/layout/_flex.scss deleted file mode 100644 index 9699b2da..00000000 --- a/apps/proxy/src/assets/scss/layout/_flex.scss +++ /dev/null @@ -1,153 +0,0 @@ -.flex-row { - flex-direction: row !important; -} -.flex-column { - flex-direction: column !important; -} -.flex-row-reverse { - flex-direction: row-reverse !important; -} -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} -.flex-nowrap { - flex-wrap: nowrap !important; -} -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} -.justify-content-end { - justify-content: flex-end !important; -} -.justify-content-center { - justify-content: center !important; -} -.justify-content-between { - justify-content: space-between !important; -} -.justify-content-around { - justify-content: space-around !important; -} - -.align-items-start { - align-items: flex-start !important; -} -.align-items-end { - align-items: flex-end !important; -} -.align-items-center { - align-items: center !important; -} -.align-items-baseline { - align-items: baseline !important; -} -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} -.align-content-end { - align-content: flex-end !important; -} -.align-content-center { - align-content: center !important; -} -.align-content-between { - align-content: space-between !important; -} -.align-content-around { - align-content: space-around !important; -} -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} -.align-self-start { - align-self: flex-start !important; -} -.align-self-end { - align-self: flex-end !important; -} -.align-self-center { - align-self: center !important; -} -.align-self-baseline { - align-self: baseline !important; -} -.align-self-stretch { - align-self: stretch !important; -} -.m-auto { - margin-left: auto; - margin-right: auto; -} - -.flex-grow-1 { - flex-grow: 1; -} -.flex-grow-huge { - flex-grow: 9999; -} - -.gap-1 { - gap: 4px; -} -.gap-2 { - gap: 8px; -} -.gap-3 { - gap: 16px; -} -.gap-4 { - gap: 24px; -} -.gap-5 { - gap: 32px; -} - -// Row Spacing -.row-gap-1 { - row-gap: 4px; -} -.row-gap-2 { - row-gap: 8px; -} -.row-gap-3 { - row-gap: 16px; -} -.row-gap-4 { - row-gap: 24px; -} -.row-gap-5 { - row-gap: 32px; -} - -// Column Spacing -.col-gap-1 { - column-gap: 4px; -} -.col-gap-2 { - column-gap: 8px; -} -.col-gap-3 { - column-gap: 16px; -} -.col-gap-4 { - column-gap: 24px; -} -.col-gap-5 { - column-gap: 32px; -} diff --git a/apps/proxy/src/assets/scss/layout/_grid.scss b/apps/proxy/src/assets/scss/layout/_grid.scss deleted file mode 100644 index eaba89c2..00000000 --- a/apps/proxy/src/assets/scss/layout/_grid.scss +++ /dev/null @@ -1,792 +0,0 @@ -.container { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container { - max-width: 540px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 720px; - } -} - -@media (min-width: 992px) { - .container { - max-width: 960px; - } -} - -@media (min-width: 1200px) { - .container { - max-width: 1140px; - } -} - -.container-fluid, -.container-sm, -.container-md, -.container-lg, -.container-xl { - width: 100%; - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container, - .container-sm { - max-width: 540px; - } -} - -@media (min-width: 768px) { - .container, - .container-sm, - .container-md { - max-width: 720px; - } -} - -@media (min-width: 992px) { - .container, - .container-sm, - .container-md, - .container-lg { - max-width: 960px; - } -} - -@media (min-width: 1200px) { - .container, - .container-sm, - .container-md, - .container-lg, - .container-xl { - max-width: 1140px; - } -} - -/*flex style*/ -.row { - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-right: -15px; - margin-left: -15px; - &.no-gutters { - margin-left: 0px; - margin-right: 0px; - } -} - -.row-trim { - margin-left: -8px !important; - margin-right: -8px !important; - [class^='col-'] { - padding-right: 8px; - padding-left: 8px; - } -} - -.col-1, -.col-2, -.col-3, -.col-4, -.col-5, -.col-6, -.col-7, -.col-8, -.col-9, -.col-10, -.col-11, -.col-12, -.col, -.col-auto, -.col-xs-1, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9, -.col-xs-10, -.col-xs-11, -.col-xs-12, -.col-xs, -.col-xs-auto, -.col-md-1, -.col-md-2, -.col-md-3, -.col-md-4, -.col-md-5, -.col-md-6, -.col-md-7, -.col-md-8, -.col-md-9, -.col-md-10, -.col-md-11, -.col-md-12, -.col-md, -.col-md-auto, -.col-lg-1, -.col-lg-2, -.col-lg-3, -.col-lg-4, -.col-lg-5, -.col-lg-6, -.col-lg-7, -.col-lg-8, -.col-lg-9, -.col-lg-10, -.col-lg-11, -.col-lg-12, -.col-lg, -.col-lg-auto, -.col-xl-1, -.col-xl-2, -.col-xl-3, -.col-xl-4, -.col-xl-5, -.col-xl-6, -.col-xl-7, -.col-xl-8, -.col-xl-9, -.col-xl-10, -.col-xl-11, -.col-xl-12, -.col-xl, -.col-xl-auto, -.col-xs-1, -.col-xs-2, -.col-xs-3, -.col-xs-4, -.col-xs-5, -.col-xs-6, -.col-xs-7, -.col-xs-8, -.col-xs-9, -.col-xs-10, -.col-xs-11, -.col-xs-12, -.col-xs, -.col-xs-auto { - position: relative; - width: 100%; - padding-right: 15px; - padding-left: 15px; -} - -.col { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; -} - -.col-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; -} - -.col-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; -} - -.col-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; -} - -.col-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; -} - -.col-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; -} - -.col-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; -} - -.col-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; -} - -.col-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; -} - -.col-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; -} - -.col-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; -} - -.col-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; -} - -.col-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; -} - -.col-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; -} - -@media (min-width: 576px) { - .col-sm { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-sm-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-sm-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-sm-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-sm-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-sm-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-sm-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-sm-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-sm-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-sm-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-sm-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-sm-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-sm-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-sm-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } -} - -@media (min-width: 768px) { - .col-md { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-md-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-md-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-md-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-md-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-md-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-md-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-md-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-md-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-md-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-md-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-md-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-md-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-md-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } -} - -@media (min-width: 1200px) { - .col-xl { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-xl-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-xl-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xl-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xl-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-xl-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xl-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xl-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-xl-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xl-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xl-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-xl-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xl-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xl-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } -} - -@media (max-width: 575px) { - .col-xs { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-xs-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-xs-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-xs-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-xs-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-xs-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-xs-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-xs-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-xs-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-xs-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-xs-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-xs-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-xs-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-xs-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } -} - -@media (min-width: 992px) { - .col-lg { - -ms-flex-preferred-size: 0; - flex-basis: 0; - -ms-flex-positive: 1; - flex-grow: 1; - max-width: 100%; - } - .col-lg-auto { - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: auto; - max-width: none; - } - .col-lg-1 { - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; - } - .col-lg-2 { - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; - } - .col-lg-3 { - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .col-lg-4 { - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; - } - .col-lg-5 { - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; - } - .col-lg-6 { - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .col-lg-7 { - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; - } - .col-lg-8 { - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; - } - .col-lg-9 { - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .col-lg-10 { - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; - } - .col-lg-11 { - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; - } - .col-lg-12 { - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } -} - -.flex-fill { - -ms-flex: 1 1 auto !important; - flex: 1 1 auto !important; -} - -.flex-grow-0 { - -ms-flex-positive: 0 !important; - flex-grow: 0 !important; -} - -.flex-grow-1 { - -ms-flex-positive: 1 !important; - flex-grow: 1 !important; -} - -.flex-shrink-0 { - -ms-flex-negative: 0 !important; - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - -ms-flex-negative: 1 !important; - flex-shrink: 1 !important; -} - -.justify-content-start { - -ms-flex-pack: start !important; - justify-content: flex-start !important; -} - -.justify-content-end { - -ms-flex-pack: end !important; - justify-content: flex-end !important; -} - -.justify-content-center { - -ms-flex-pack: center !important; - justify-content: center !important; -} - -.justify-content-between { - -ms-flex-pack: justify !important; - justify-content: space-between !important; -} - -.justify-content-around { - -ms-flex-pack: distribute !important; - justify-content: space-around !important; -} - -.align-items-start { - -ms-flex-align: start !important; - align-items: flex-start !important; -} - -.align-items-end { - -ms-flex-align: end !important; - align-items: flex-end !important; -} - -.align-items-center { - -ms-flex-align: center !important; - align-items: center !important; -} - -.align-items-baseline { - -ms-flex-align: baseline !important; - align-items: baseline !important; -} - -.align-items-stretch { - -ms-flex-align: stretch !important; - align-items: stretch !important; -} - -.align-content-start { - -ms-flex-line-pack: start !important; - align-content: flex-start !important; -} - -.align-content-end { - -ms-flex-line-pack: end !important; - align-content: flex-end !important; -} - -.align-content-center { - -ms-flex-line-pack: center !important; - align-content: center !important; -} - -.align-content-between { - -ms-flex-line-pack: justify !important; - align-content: space-between !important; -} - -.align-content-around { - -ms-flex-line-pack: distribute !important; - align-content: space-around !important; -} - -.align-content-stretch { - -ms-flex-line-pack: stretch !important; - align-content: stretch !important; -} - -.align-self-auto { - -ms-flex-item-align: auto !important; - align-self: auto !important; -} - -.align-self-start { - -ms-flex-item-align: start !important; - align-self: flex-start !important; -} - -.align-self-end { - -ms-flex-item-align: end !important; - align-self: flex-end !important; -} - -.align-self-center { - -ms-flex-item-align: center !important; - align-self: center !important; -} - -.align-self-baseline { - -ms-flex-item-align: baseline !important; - align-self: baseline !important; -} - -.align-self-stretch { - -ms-flex-item-align: stretch !important; - align-self: stretch !important; -} diff --git a/apps/proxy/src/assets/scss/layout/_positions.scss b/apps/proxy/src/assets/scss/layout/_positions.scss deleted file mode 100644 index e22936e2..00000000 --- a/apps/proxy/src/assets/scss/layout/_positions.scss +++ /dev/null @@ -1,6 +0,0 @@ -.position-relative { - position: relative !important; -} -.position-absolute { - position: absolute !important; -} diff --git a/apps/proxy/src/assets/scss/layout/_sizing.scss b/apps/proxy/src/assets/scss/layout/_sizing.scss deleted file mode 100644 index 00625847..00000000 --- a/apps/proxy/src/assets/scss/layout/_sizing.scss +++ /dev/null @@ -1,111 +0,0 @@ -@import '../utils/mixins/common-utils'; - -.h-100 { - height: 100% !important; -} -.h-75 { - height: 75% !important; -} -.h-50 { - height: 50% !important; -} -.h-25 { - height: 25% !important; -} -.w-100 { - width: 100% !important; -} -.w-75 { - width: 75% !important; -} -.w-85{ - width: 85% !important; -} -.w-50 { - width: 50% !important; -} -.w-40{ - width: 40% !important; -} -.w-25 { - width: 25% !important; -} -.h-auto { - height: auto !important; -} -.w-auto { - width: auto !important; -} - -.h-auto { - height: auto; -} - -.w-xs-100 { - @include media-breakpoint-down('phone') { - width: 100% !important; - } -} -.w-md-100 { - @include media-breakpoint-down('tablet') { - width: 100% !important; - } -} - -// This class applying before 768px -@include media-breakpoint-up('tablet') { - .width-md-100 { - width: 100px; - } - .width-md-200 { - width: 200px; - } - .width-md-300 { - width: 300px; - } - .width-md-350 { - width: 350px; - } - .width-md-400 { - width: 400px; - } - .width-md-500 { - width: 500px; - } - .width-md-600 { - width: 600px; - } - .width-md-700 { - width: 700px; - } - .width-md-800 { - width: 800px; - } -} - -@include media-breakpoint-down('tablet') { - .width-sm-100 { - min-width: 100px; - } - .width-sm-200 { - min-width: 200px; - } - .width-sm-300 { - min-width: 300px; - } - .width-sm-400 { - min-width: 400px; - } - .width-sm-500 { - min-width: 500px; - } - .width-sm-600 { - width: 600px; - } - .width-sm-700 { - width: 700px; - } - .width-sm-800 { - width: 800px; - } -} diff --git a/apps/proxy/src/assets/scss/layout/_spacing.scss b/apps/proxy/src/assets/scss/layout/_spacing.scss deleted file mode 100644 index 5a4a9b79..00000000 --- a/apps/proxy/src/assets/scss/layout/_spacing.scss +++ /dev/null @@ -1,265 +0,0 @@ -.m-0 { - margin: 0 !important; -} -.mt-0, -.my-0 { - margin-top: 0 !important; -} -.mr-0, -.mx-0 { - margin-right: 0 !important; -} -.mb-0, -.my-0 { - margin-bottom: 0 !important; -} -.ml-0, -.mx-0 { - margin-left: 0 !important; -} -.m-1 { - margin: 0.25rem !important; -} -.mt-1, -.my-1 { - margin-top: 0.25rem !important; -} -.mr-1, -.mx-1 { - margin-right: 0.25rem !important; -} -.mb-1, -.my-1 { - margin-bottom: 0.25rem !important; -} -.ml-1, -.mx-1 { - margin-left: 0.25rem !important; -} -.m-2 { - margin: 0.5rem !important; -} -.mt-2, -.my-2 { - margin-top: 0.5rem !important; -} -.mr-2, -.mx-2 { - margin-right: 0.5rem !important; -} -.mb-2, -.my-2 { - margin-bottom: 0.5rem !important; -} -.ml-2, -.mx-2 { - margin-left: 0.5rem !important; -} -.m-3 { - margin: 1rem !important; -} -.mt-3, -.my-3 { - margin-top: 1rem !important; -} -.mr-3, -.mx-3 { - margin-right: 1rem !important; -} -.mb-3, -.my-3 { - margin-bottom: 1rem !important; -} -.ml-3, -.mx-3 { - margin-left: 1rem !important; -} -.m-4 { - margin: 1.5rem !important; -} -.mt-4, -.my-4 { - margin-top: 1.5rem !important; -} -.mr-4, -.mx-4 { - margin-right: 1.5rem !important; -} -.mb-4, -.my-4 { - margin-bottom: 1.5rem !important; -} -.ml-4, -.mx-4 { - margin-left: 1.5rem !important; -} -.m-5 { - margin: 3rem !important; -} -.mt-5, -.my-5 { - margin-top: 3rem !important; -} -.mr-5, -.mx-5 { - margin-right: 3rem !important; -} -.mb-5, -.my-5 { - margin-bottom: 3rem !important; -} -.ml-5, -.mx-5 { - margin-left: 3rem !important; -} -.p-0 { - padding: 0 !important; -} -.pt-0, -.py-0 { - padding-top: 0 !important; -} -.pr-0, -.px-0 { - padding-right: 0 !important; -} -.pb-0, -.py-0 { - padding-bottom: 0 !important; -} -.pl-0, -.px-0 { - padding-left: 0 !important; -} -.p-1 { - padding: 0.25rem !important; -} -.pt-1, -.py-1 { - padding-top: 0.25rem !important; -} -.pr-1, -.px-1 { - padding-right: 0.25rem !important; -} -.pb-1, -.py-1 { - padding-bottom: 0.25rem !important; -} -.pl-1, -.px-1 { - padding-left: 0.25rem !important; -} -.p-2 { - padding: 0.5rem !important; -} -.pt-2, -.py-2 { - padding-top: 0.5rem !important; -} -.pr-2, -.px-2 { - padding-right: 0.5rem !important; -} -.pb-2, -.py-2 { - padding-bottom: 0.5rem !important; -} -.pl-2, -.px-2 { - padding-left: 0.5rem !important; -} -.p-3 { - padding: 1rem !important; -} -.pt-3, -.py-3 { - padding-top: 1rem !important; -} -.pr-3, -.px-3 { - padding-right: 1rem !important; -} -.pb-3, -.py-3 { - padding-bottom: 1rem !important; -} -.pl-3, -.px-3 { - padding-left: 1rem !important; -} -.p-4 { - padding: 1.5rem !important; -} -.pt-4, -.py-4 { - padding-top: 1.5rem !important; -} -.pr-4, -.px-4 { - padding-right: 1.5rem !important; -} -.pb-4, -.py-4 { - padding-bottom: 1.5rem !important; -} -.pl-4, -.px-4 { - padding-left: 1.5rem !important; -} -.p-5 { - padding: 3rem !important; -} -.pt-5, -.py-5 { - padding-top: 3rem !important; -} -.pr-5, -.px-5 { - padding-right: 3rem !important; -} -.pb-5, -.py-5 { - padding-bottom: 3rem !important; -} -.pl-5, -.px-5 { - padding-left: 3rem !important; -} - -@media (max-width: 768px) { - .mb-sm-20 { - margin-bottom: 20px; - } - .mt-sm-20 { - margin-top: 20px; - } -} - -.mb-20 { - margin-bottom: 20px !important; -} -.mt-20 { - margin-top: 20px !important; -} -.mb-30 { - margin-bottom: 30px !important; -} -.mt-30 { - margin-top: 30px !important; -} -.my-20 { - margin-top: 20px !important; - margin-bottom: 20px !important; -} - -.pd-1 { - padding: 1px !important; -} - -.ml-auto { - margin-left: auto !important; -} -.mr-auto { - margin-right: auto !important; -} diff --git a/apps/proxy/src/assets/scss/layout/_text.scss b/apps/proxy/src/assets/scss/layout/_text.scss deleted file mode 100644 index cf134672..00000000 --- a/apps/proxy/src/assets/scss/layout/_text.scss +++ /dev/null @@ -1,47 +0,0 @@ -.text-lowercase { - text-transform: lowercase !important; -} -.text-uppercase { - text-transform: uppercase !important; -} -.text-capitalize { - text-transform: capitalize !important; -} -.text-none { - text-transform: none !important; -} -.text-left { - text-align: left !important; -} -.text-right { - text-align: right !important; -} -.text-center { - text-align: center !important; -} -.cursor-pointer { - cursor: pointer; -} -.outline-none { - outline: none; -} -.text-underline { - text-decoration: underline !important; - text-underline-position: under; -} - -.text-right-md { - @media only screen and (max-width: 768px) { - text-align: right !important; - } -} -.text-line-through { - text-decoration: line-through; -} -.white-space-pre { - white-space: pre !important; -} - -.text-primary { - color: var(--color-link-color) -} diff --git a/apps/proxy/src/assets/scss/theme/_default-theme.scss b/apps/proxy/src/assets/scss/theme/_default-theme.scss deleted file mode 100644 index bd550ec7..00000000 --- a/apps/proxy/src/assets/scss/theme/_default-theme.scss +++ /dev/null @@ -1,156 +0,0 @@ -@use '@angular/material' as mat; -@use 'sass:map'; - -/* -// Typography -*/ -@import 'theme-colors'; -@import 'typography'; - -@include mat.core($custom-typography); -$dark-primary-text: rgba(black, 0.87); -$dark-secondary-text: rgba(black, 0.54); -$dark-disabled-text: rgba(black, 0.38); -$dark-dividers: rgba(black, 0.12); -$dark-focused: rgba(black, 0.12); -$light-primary-text: white; -$light-secondary-text: rgba(white, 0.7); -$light-disabled-text: rgba(white, 0.5); -$light-dividers: rgba(white, 0.12); -$light-focused: rgba(white, 0.12); - -$grey-palette: ( - 50: #fafafa, - 100: #f5f5f5, - 200: #eeeeee, - 300: #e0e0e0, - 400: #bdbdbd, - 500: #9e9e9e, - 600: #757575, - 700: #616161, - 800: #3f4346, - 900: #212121, - A100: #ffffff, - A200: #eeeeee, - A400: #bdbdbd, - A700: #616161, - contrast: ( - 50: $dark-primary-text, - 100: $dark-primary-text, - 200: $dark-primary-text, - 300: $dark-primary-text, - 400: $dark-primary-text, - 500: $dark-primary-text, - 600: $light-primary-text, - 700: $light-primary-text, - 800: $light-primary-text, - 900: $light-primary-text, - A100: $dark-primary-text, - A200: $dark-primary-text, - A400: $dark-primary-text, - A700: $light-primary-text, - ), -); - -// Background palette for light themes. -$light-theme-background-palette: ( - status-bar: map.get($grey-palette, 300), - app-bar: map.get($grey-palette, 100), - background: map.get($grey-palette, 50), - hover: rgba(black, 0.04), - // TODO(kara): check style with Material Design UX - card: white, - dialog: white, - disabled-button: rgba(black, 0.12), - raised-button: white, - focused-button: $dark-focused, - selected-button: map.get($grey-palette, 300), - selected-disabled-button: map.get($grey-palette, 400), - disabled-button-toggle: map.get($grey-palette, 200), - unselected-chip: map.get($grey-palette, 300), - disabled-list-option: map.get($grey-palette, 200), - tooltip: map.get($grey-palette, 700), -); - -// Background palette for dark themes. -$dark-theme-background-palette: ( - status-bar: black, - app-bar: map.get($grey-palette, 900), - background: var(--color-common-slate), - hover: rgba(white, 0.04), - // TODO(kara): check style with Material Design UX - card: map.get($grey-palette, 800), - dialog: map.get($grey-palette, 800), - disabled-button: rgba(white, 0.12), - raised-button: map.get($grey-palette, 800), - focused-button: $light-focused, - selected-button: map.get($grey-palette, 900), - selected-disabled-button: map.get($grey-palette, 800), - disabled-button-toggle: black, - unselected-chip: map.get($grey-palette, 700), - disabled-list-option: rgba(white, 0.12), - tooltip: map.get($grey-palette, 50), -); - -// Foreground palette for light themes. -$light-theme-foreground-palette: ( - base: black, - divider: $dark-dividers, - dividers: $dark-dividers, - disabled: $dark-disabled-text, - disabled-button: rgba(black, 0.26), - disabled-text: $dark-disabled-text, - elevation: black, - hint-text: $dark-disabled-text, - secondary-text: $dark-secondary-text, - icon: rgba(black, 0.54), - icons: rgba(black, 0.54), - text: rgba(black, 0.87), - slider-min: rgba(black, 0.87), - slider-off: rgba(black, 0.26), - slider-off-active: rgba(black, 0.38), -); - -// Foreground palette for dark themes. -$dark-theme-foreground-palette: ( - base: white, - divider: $light-dividers, - dividers: $light-dividers, - disabled: $light-disabled-text, - disabled-button: rgba(white, 0.3), - disabled-text: $light-disabled-text, - elevation: black, - hint-text: $light-disabled-text, - secondary-text: $light-secondary-text, - icon: var(--color-common-icon), - icons: var(--color-common-icon), - text: var(--color-common-text), - slider-min: white, - slider-off: rgba(white, 0.3), - slider-off-active: rgba(white, 0.3), -); -$theme: ( - primary: $primary, - accent: $accent, - warn: $warn, - is-dark: false, - foreground: $light-theme-foreground-palette, - background: $light-theme-background-palette, -); -$altTheme: ( - primary: $primary, - accent: $accent, - warn: $warn, - is-dark: true, - foreground: $dark-theme-foreground-palette, - background: $dark-theme-background-palette, -); - -/* -// Include all theme styles for the components. -*/ -@include mat.all-component-themes($theme); - -.dark-theme { - @include mat.all-component-themes($altTheme); -} diff --git a/apps/proxy/src/assets/scss/theme/_theme-colors.scss b/apps/proxy/src/assets/scss/theme/_theme-colors.scss deleted file mode 100644 index 808527c7..00000000 --- a/apps/proxy/src/assets/scss/theme/_theme-colors.scss +++ /dev/null @@ -1,81 +0,0 @@ -@use '@angular/material' as mat; -/* -// Custom Blue -*/ -$custom-blue: ( - 50: #e6f2fb, - 100: #a4cff0, - 200: #74b5e9, - 300: #3794df, - 400: #2286d4, - 500: #1e75ba, - 600: #1a64a0, - 700: #155485, - 800: #11436b, - 900: #0d3351, - A100: #d8eeff, - A200: #72c1ff, - A400: #1b92ef, - A700: #1c84d6, - contrast: ( - 50: #ffffff, - 100: #ffffff, - 200: #ffffff, - 300: #ffffff, - 400: #ffffff, - 500: #ffffff, - 600: #ffffff, - 700: #ffffff, - 800: #ffffff, - 900: #ffffff, - A100: #ffffff, - A200: #ffffff, - A400: #ffffff, - A700: #ffffff, - ), -); - -/* -// Custom Teal/Cyan (#19E6CE) - Light version -*/ -$custom-teal: ( - 50: #e8fdf9, - 100: #c5faf2, - 200: #9ef7e9, - 300: #77f3e0, - 400: #5af0da, - 500: #3cedd3, - 600: #19E6CE, - 700: #15cdb7, - 800: #11b4a0, - 900: #0d9b89, - A100: #c5fff7, - A200: #8ffff0, - A400: #5cffe6, - A700: #19E6CE, - contrast: ( - 50: #000000, - 100: #000000, - 200: #000000, - 300: #000000, - 400: #000000, - 500: #000000, - 600: #000000, - 700: #000000, - 800: #000000, - 900: #ffffff, - A100: #000000, - A200: #000000, - A400: #000000, - A700: #000000, - ), -); - -/* -// Define a theme. -*/ -$primary: mat.define-palette(mat.$indigo-palette); -$accent: mat.define-palette(mat.$indigo-palette, 400); -$warn: mat.define-palette(mat.$red-palette); -$new-primary: mat.define-palette($custom-teal); - diff --git a/apps/proxy/src/assets/scss/theme/_typography.scss b/apps/proxy/src/assets/scss/theme/_typography.scss deleted file mode 100644 index 8027f764..00000000 --- a/apps/proxy/src/assets/scss/theme/_typography.scss +++ /dev/null @@ -1,22 +0,0 @@ -@use '@angular/material' as mat; - -$font-family: var(--font-family-common); - -$custom-typography: mat.define-typography-config( - $font-family: $font-family, - $display-1: mat.define-typography-level(18px, 28px, 400), - $display-2: mat.define-typography-level(16px, 22px, 600), - $display-3: mat.define-typography-level(14px, 18px, 500), - $display-4: mat.define-typography-level(20px, 27px, 600), - $headline: mat.define-typography-level(19px, 26px, 700), - $title: mat.define-typography-level(19px, 26px, 600), - $subheading-1: mat.define-typography-level(14px, 19px, 600), - $subheading-2: mat.define-typography-level(16px, 22px, 600), - $body-1: mat.define-typography-level(16px, 22px, 400), - $body-2: mat.define-typography-level(14px, 19px, 400), - $caption: mat.define-typography-level(11px, 15px, 600), -); - -/*// 700 - Bold -// 600 - semi-bold -// 400 - Regular*/ diff --git a/apps/proxy/src/assets/scss/utils/_bg-colors.scss b/apps/proxy/src/assets/scss/utils/_bg-colors.scss deleted file mode 100644 index 6692bbb0..00000000 --- a/apps/proxy/src/assets/scss/utils/_bg-colors.scss +++ /dev/null @@ -1,19 +0,0 @@ -.bg-white { - background-color: var(--color-common-white) !important; -} -.bg-transparent { - background-color: transparent !important; -} -.bg-gray { - background-color: var(--color-common-bg); -} -.bg-light-grey { - background-color: var(--color-common-graph-bg) !important; -} -.bg-green { - background-color: var(--color-common-green) !important; - color: var(--color-common-white) !important; -} -.bg-primary-light { - background-color: #e2f0ff !important; -} diff --git a/apps/proxy/src/assets/scss/utils/_common-classes.scss b/apps/proxy/src/assets/scss/utils/_common-classes.scss deleted file mode 100644 index dc9e6656..00000000 --- a/apps/proxy/src/assets/scss/utils/_common-classes.scss +++ /dev/null @@ -1,230 +0,0 @@ -@use '../../../../../../node_modules/@angular/material/index' as mat; -@import '../theme/theme-colors'; -@import '../utils/mixins/common-utils'; - -/*// Mat Divider -//====================================================*/ -.mat-divider { - border-top-color: var(--color-common-border) !important; -} - -/*// Font Weight -//====================================================*/ -.fw-thin { - font-weight: 100 !important; -} -.fw-normal { - font-weight: 400 !important; -} -.fw-bold { - font-weight: 500 !important; -} -.fw-bolder { - font-weight: 600 !important; -} - -/*// Text Class -//====================================================*/ -.text-primary-muted { - color: var(--color-common-grey); -} -.text-success { - color: var(--color-common-green) !important; -} -.text-danger { - color: mat.get-color-from-palette($warn) !important; -} -.text-primary { - color: mat.get-color-from-palette($primary) !important; -} -.mat-error { - font-size: 12px; -} -.text-underline { - text-decoration: underline; -} -.text-white { - color: var(--color-common-white) !important; -} - -.overflowX-scroll { - width: 100%; - overflow-x: auto; - display: grid; -} -.overflow-hidden { - overflow: hidden !important; -} -.overflow-x { - overflow-x: auto; -} -.overflow-y { - overflow-y: auto; -} -.overflow-dotted { - white-space: nowrap; - overflow: hidden !important; - text-overflow: ellipsis; -} - -/* -// Sticky Fixed Header -//====================================================*/ -// .position-sticky { -// position: sticky; -// z-index: 9999; -// width: 100%; -// top: 0; -// background-color: var(--color-common-white); -// } -.sticky-fixed { - position: sticky !important; - top: 0; - z-index: 9999; - background-color: var(--color-common-bg); - @media (max-width: 992px) { - &.noStickyOnMobile { - position: relative !important; - } - } -} - -.box-shadow-none { - box-shadow: none !important; -} -.inline-block { - display: inline-block; -} -.list-view { - .mat-list-item { - .mat-list-item-content { - padding: 0px !important; - } - } -} - -.mat-expansion-panel { - &.custom-expansion-panel { - .mat-expansion-panel-header { - padding: 0 16px !important; - &.mat-expanded { - height: 40px; - } - } - .mat-expansion-panel-content { - .mat-expansion-panel-body { - padding: 0px; - .mat-nav-list { - .mat-list-item { - .mat-list-item-content { - padding-left: 30px !important; - .mat-icon { - color: var(--color-common-grey); - - svg { - path { - fill: var(--color-common-grey) !important; - } - } - } - } - } - } - } - } - } -} - -.breadcrumb { - font-size: 13px; - background-color: var(--color-common-bg); - padding: 9px 12px; - border-radius: 5px; - line-height: 25px; -} - -.mat-divider { - border-color: var(--color-common-border) !important; -} - -// Change tooltip background color -.mat-tooltip { - background-color: var(--color-common-tooltip-bg) !important; -} - -.dark-theme { - .custom-datepicker { - .date-input { - .float-label { - background: transparent !important; - } - } - } -} - -.border-none { - border-width: 0px !important; -} -.border { - border: 1px solid var(--color-common-border); -} -.border-top { - border-top: 1px solid var(--color-common-border); -} -.border-bottom { - border-bottom: 1px solid var(--color-common-border); -} -.border-right { - border-right: 1px solid var(--color-common-border); -} -.border-left { - border-left: 1px solid var(--color-common-border); -} -.border-dashed { - border: 1px dashed var(--color-common-border); -} - -// border radius -.rounded-0 { - border-radius: 0px !important; -} -.rounded-4 { - border-radius: var(--border-common-radius-4); -} -.rounded-8 { - border-radius: var(--border-common-radius); -} -.right-top-rounded-8 { - border-top-right-radius: var(--border-common-radius); -} -.right-bottom-rounded-8 { - border-bottom-right-radius: var(--border-common-radius); -} -.left-top-rounded-8 { - border-top-left-radius: var(--border-common-radius); -} -.left-bottom-rounded-8 { - border-bottom-left-radius: var(--border-common-radius); -} -.right-border-radius-0 { - border-top-right-radius: 0px !important; - border-bottom-right-radius: 0px !important; -} -.left-border-radius-0 { - border-top-left-radius: 0px !important; - border-bottom-left-radius: 0px !important; -} -.border-common-radius-50 { - border-radius: var(--border-common-radius-50) !important; -} - -// Add Scrollbar in Markdown with custom color -markdown pre{ - overflow: auto; - @include custom-scroll-bar( - $scrollbarThumbColor: rgba(255,255,255,.2), - $scrollbarTrackColor: rgba(255,255,255,.4), - $scrollbarWidth: 8px, - $scrollbarTrackRadius: 4px - ); -} \ No newline at end of file diff --git a/apps/proxy/src/assets/scss/utils/_placeholder.scss b/apps/proxy/src/assets/scss/utils/_placeholder.scss deleted file mode 100644 index f5c95a03..00000000 --- a/apps/proxy/src/assets/scss/utils/_placeholder.scss +++ /dev/null @@ -1,6 +0,0 @@ -%overflow-dotted { - word-break: break-all; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} diff --git a/apps/proxy/src/environments/env-variables.ts b/apps/proxy/src/environments/env-variables.ts deleted file mode 100644 index 6372afc1..00000000 --- a/apps/proxy/src/environments/env-variables.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const envVariables = { - firebaseConfig: { - apiKey: process.env.FIREBASE_CONFIG_API_KEY, - authDomain: process.env.FIREBASE_CONFIG_AUTH_DOMAIN, - projectId: process.env.FIREBASE_CONFIG_PROJECT_ID, - storageBucket: process.env.FIREBASE_CONFIG_STORAGE_BUCKET, - messagingSenderId: process.env.FIREBASE_CONFIG_MESSAGING_SENDER_ID, - appId: process.env.FIREBASE_CONFIG_APP_ID, - }, - - // VIASOCKET INTERFACE - interfaceScriptUrl: process.env.INTERFACE_SCRIPT_URL, -}; diff --git a/apps/proxy/src/favicon.ico b/apps/proxy/src/favicon.ico deleted file mode 100644 index 317ebcb2..00000000 Binary files a/apps/proxy/src/favicon.ico and /dev/null differ diff --git a/apps/proxy/src/main.ts b/apps/proxy/src/main.ts deleted file mode 100644 index 207c6dde..00000000 --- a/apps/proxy/src/main.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic() - .bootstrapModule(AppModule) - .catch((err) => console.error(err)); diff --git a/apps/proxy/src/polyfills.ts b/apps/proxy/src/polyfills.ts deleted file mode 100644 index e4555ed1..00000000 --- a/apps/proxy/src/polyfills.ts +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/apps/proxy/src/styles.scss b/apps/proxy/src/styles.scss deleted file mode 100644 index 0a60d535..00000000 --- a/apps/proxy/src/styles.scss +++ /dev/null @@ -1,113 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -/* You can add global styles to this file, and also import other style files */ - -/* Plus imports for other components in your app.*/ -@import 'assets/scss/base/fonts'; -@import 'assets/scss/theme/theme-colors'; -@import 'assets/scss/base/default-variables'; -@import 'assets/scss/base/light-theme'; -@import 'assets/scss/base/dark-theme'; - -/* Reset*/ -@import 'assets/scss/base/reset.scss'; - -/* Layout*/ -@import 'assets/scss/layout/display.scss'; -@import 'assets/scss/layout/flex.scss'; -@import 'assets/scss/layout/sizing.scss'; -@import 'assets/scss/layout/spacing.scss'; -@import 'assets/scss/layout/grid.scss'; -@import 'assets/scss/layout/text.scss'; -@import 'assets/scss/layout/positions.scss'; -@import 'assets/scss/theme/theme-colors'; - -/* Component*/ -@import 'assets/scss/component/modal.scss'; - -/* Common Class Name*/ -@import 'assets/scss/utils/common-classes.scss'; - -/* Backgound Colors*/ -@import 'assets/scss/utils/bg-colors'; - -/* Theme*/ -@import 'assets/scss/theme/default-theme'; - -/*Components*/ -@import 'assets/scss/component/filters'; -@import 'assets/scss/component/toast'; -@import 'assets/scss/component/table'; -@import 'assets/scss/component/loader'; -@import 'assets/scss/component/icon'; -@import 'assets/scss/component/card'; -@import 'assets/scss/component/form-field'; -@import 'assets/scss/component/pagination'; -@import 'assets/scss/component/tabs'; -@import 'assets/scss/component/buttons'; -@import 'assets/scss/component/status'; -@import 'assets/scss/component/text-style'; -@import 'assets/scss/component/side-dialog'; -@import 'assets/scss/component/modal'; -@import 'assets/scss/component/menu'; -@import 'assets/scss/component/checkbox'; -@import 'assets/scss/component/sidenav'; -@import 'assets/scss/component/select-option'; -@import 'assets/scss/component/chart'; -@import 'assets/scss/component/mat-list'; -@import 'assets/scss/component/stepper'; -@import 'assets/scss/component/animation'; - -/*Main*/ -.app-content { - padding: 14px; - min-height: 100%; - height: 100vh; - overflow-y: auto; - background-color: var(--color-common-app-bg); - @media (max-width: 768px) { - overflow-x: auto; - } -} -canvas { - width: 100% !important; -} - -.no-data-placeholder { - font-weight: 500; - font-size: 15px; - line-height: 18px; - text-align: center; - color: var(--color-common-grey) !important; - align-items: center; - img { - margin-bottom: 25px; - } -} - -// Sort Button - -.bottom-sort-btn { - display: none !important; - @media only screen and (max-width: 768px) { - display: block !important; - } -} -.register-user-details { - margin-top: 5px; - #init-contact-user { - height: 39px; - font-size: 15px; - } - .invalid-input { - outline: 2px solid #f44336; - } - .iti--allow-dropdown { - width: 100%; - } -} - -// .block-feature-tabs { -// .mat-tab-body-wrapper { -// height: 100%; -// } -// } diff --git a/apps/proxy/tsconfig.app.json b/apps/proxy/tsconfig.app.json deleted file mode 100644 index 18bf7d57..00000000 --- a/apps/proxy/tsconfig.app.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": [] - }, - "files": ["src/main.ts", "src/polyfills.ts"], - "include": ["src/**/*.d.ts"], - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"] -} diff --git a/apps/proxy/tsconfig.editor.json b/apps/proxy/tsconfig.editor.json deleted file mode 100644 index 636651f8..00000000 --- a/apps/proxy/tsconfig.editor.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["**/*.ts"], - "compilerOptions": { - "types": [] - } -} diff --git a/apps/proxy/src/assets/utils/intl-tel-input-custom.css b/apps/shared/assets/utils/intl-tel-input-custom.css similarity index 96% rename from apps/proxy/src/assets/utils/intl-tel-input-custom.css rename to apps/shared/assets/utils/intl-tel-input-custom.css index 13659396..8a703b7d 100644 --- a/apps/proxy/src/assets/utils/intl-tel-input-custom.css +++ b/apps/shared/assets/utils/intl-tel-input-custom.css @@ -59,7 +59,6 @@ } .iti__country-list { - position: absolute; z-index: 2; list-style: none; text-align: left; @@ -1522,7 +1521,7 @@ .iti__flag { height: 15px; box-shadow: 0px 0px 1px 0px #888; - background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags.png"); + background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png") !important; background-repeat: no-repeat; background-color: #DBDBDB; background-position: 20px 0; @@ -1531,7 +1530,7 @@ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { .iti__flag { - background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags@2x.png"); + background-image: url("https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png"); } } @@ -1554,18 +1553,16 @@ } -@import '~intl-tel-input/build/css/intlTelInput.css'; - #phone, [id^=init-contact] { height: 38.73px; - border: 1px solid #d5d9dc; - border-radius: 4px; - font-weight: 400; + /* border: 1px solid #d5d9dc; */ + /* border-radius: 4px; */ + /* font-weight: 400; font-size: 14px; line-height: 16px; color: #3f4346; - background-color: #ffffff; + background-color: #ffffff; */ /* // padding-left: 12px !important; // z-index: 9; */ } @@ -1598,6 +1595,11 @@ // } */ .iti .iti__country-list { + position: absolute !important; + bottom: 0 !important; + top: auto !important; + left: auto !important; + transform: translateY(101%) !important; box-shadow: none; font-size: 14px; margin-left: 0; @@ -1739,12 +1741,12 @@ } /* // .iti__flag { -// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags.png'); +// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png'); // } // @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { // .iti__flag { -// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags@2x.png'); +// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png'); // } // } // .iti__dial-code { @@ -1752,4 +1754,39 @@ // } */ .invalid-input { outline: 2px solid #cc5229; +} + +/* Dark mode — triggered by .dark class on root element */ +.dark .iti .iti__country-list { + background-color: #1f2937; + border-color: #374151; + color: #f9fafb; +} + +.dark .iti__country { + color: #f9fafb !important; +} + +.dark .iti__country:hover, +.dark .iti__country.iti__highlight { + background-color: #312e81 !important; +} + +.dark .iti__dial-code { + color: #9ca3af; +} + +.dark .iti__divider { + border-bottom-color: #374151; +} + +.dark .iti__selected-flag:hover, +.dark .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { + background-color: rgba(255, 255, 255, 0.08); +} + +.dark #phone, +.dark [id^=init-contact] { + color: #f9fafb; + background-color: transparent; } \ No newline at end of file diff --git a/apps/shared/assets/utils/intl-tel-input-custom.scss b/apps/shared/assets/utils/intl-tel-input-custom.scss new file mode 100644 index 00000000..a2af4b69 --- /dev/null +++ b/apps/shared/assets/utils/intl-tel-input-custom.scss @@ -0,0 +1,1781 @@ +.iti { + position: relative; + display: inline-block; +} + +.iti * { + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.iti__hide { + display: none; +} + +.iti__v-hide { + visibility: hidden; +} + +.iti input, +.iti input[type='text'], +.iti input[type='tel'] { + position: relative; + z-index: 0; + margin-top: 0 !important; + margin-bottom: 0 !important; + padding-right: 36px; + margin-right: 0; +} + +.iti__flag-container { + position: absolute; + top: 0; + bottom: 0; + right: 0; + padding: 1px; +} + +.iti__selected-flag { + z-index: 1; + position: relative; + display: flex; + align-items: center; + height: 100%; + padding: 0 6px 0 8px; +} + +.iti__arrow { + margin-left: 6px; + width: 0; + height: 0; + border-left: 3px solid transparent; + border-right: 3px solid transparent; + border-top: 4px solid #555; +} + +.iti__arrow--up { + border-top: none; + border-bottom: 4px solid #555; +} + +.iti__country-list { + z-index: 2; + list-style: none; + text-align: left; + padding: 0; + margin: 0 0 0 -1px; + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); + background-color: white; + border: 1px solid #ccc; + white-space: nowrap; + max-height: 200px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; +} + +.iti__country-list--dropup { + bottom: 100%; + margin-bottom: -1px; + min-height: 250px !important; +} + +@media (max-width: 500px) { + .iti__country-list { + white-space: normal; + } +} + +.iti__flag-box { + display: inline-block; + width: 20px; +} + +.iti__divider { + padding-bottom: 5px; + margin-bottom: 5px; + border-bottom: 1px solid #ccc; +} + +.iti__country { + padding: 5px 10px; + outline: none; +} + +.iti__dial-code { + color: #999; +} + +.iti__country.iti__highlight { + background-color: rgba(0, 0, 0, 0.05); +} + +.iti__flag-box, +.iti__country-name, +.iti__dial-code { + vertical-align: middle; +} + +.iti__flag-box, +.iti__country-name { + margin-right: 6px; +} + +.iti--allow-dropdown input, +.iti--allow-dropdown input[type='text'], +.iti--allow-dropdown input[type='tel'], +.iti--separate-dial-code input, +.iti--separate-dial-code input[type='text'], +.iti--separate-dial-code input[type='tel'] { + padding-right: 6px; + padding-left: 52px; + margin-left: 0; +} + +.iti--allow-dropdown .iti__flag-container, +.iti--separate-dial-code .iti__flag-container { + right: auto; + left: 0; +} + +.iti--allow-dropdown .iti__flag-container:hover { + cursor: pointer; +} + +.iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { + background-color: rgba(0, 0, 0, 0.05); +} + +.iti--allow-dropdown input[disabled] + .iti__flag-container:hover, +.iti--allow-dropdown input[readonly] + .iti__flag-container:hover { + cursor: default; +} + +.iti--allow-dropdown input[disabled] + .iti__flag-container:hover .iti__selected-flag, +.iti--allow-dropdown input[readonly] + .iti__flag-container:hover .iti__selected-flag { + background-color: transparent; +} + +.iti--separate-dial-code .iti__selected-flag { + background-color: rgba(0, 0, 0, 0.05); +} + +.iti--separate-dial-code .iti__selected-dial-code { + margin-left: 6px; +} + +.iti--container { + position: absolute; + top: -1000px; + left: -1000px; + z-index: 1060; + padding: 1px; +} + +.iti--container:hover { + cursor: pointer; +} + +.iti-mobile .iti--container { + top: 30px; + bottom: 30px; + left: 30px; + right: 30px; + position: fixed; +} + +.iti-mobile .iti__country-list { + max-height: 100%; + width: calc(100vw - 60px); +} + +.iti-mobile .iti__country { + padding: 10px 10px; + line-height: 1.5em; +} + +.iti__flag { + width: 20px; +} + +.iti__flag.iti__be { + width: 18px; +} + +.iti__flag.iti__ch { + width: 15px; +} + +.iti__flag.iti__mc { + width: 19px; +} + +.iti__flag.iti__ne { + width: 18px; +} + +.iti__flag.iti__np { + width: 13px; +} + +.iti__flag.iti__va { + width: 15px; +} + +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .iti__flag { + background-size: 5652px 15px; + } +} + +.iti__flag.iti__ac { + height: 10px; + background-position: 0px 0px; +} + +.iti__flag.iti__ad { + height: 14px; + background-position: -22px 0px; +} + +.iti__flag.iti__ae { + height: 10px; + background-position: -44px 0px; +} + +.iti__flag.iti__af { + height: 14px; + background-position: -66px 0px; +} + +.iti__flag.iti__ag { + height: 14px; + background-position: -88px 0px; +} + +.iti__flag.iti__ai { + height: 10px; + background-position: -110px 0px; +} + +.iti__flag.iti__al { + height: 15px; + background-position: -132px 0px; +} + +.iti__flag.iti__am { + height: 10px; + background-position: -154px 0px; +} + +.iti__flag.iti__ao { + height: 14px; + background-position: -176px 0px; +} + +.iti__flag.iti__aq { + height: 14px; + background-position: -198px 0px; +} + +.iti__flag.iti__ar { + height: 13px; + background-position: -220px 0px; +} + +.iti__flag.iti__as { + height: 10px; + background-position: -242px 0px; +} + +.iti__flag.iti__at { + height: 14px; + background-position: -264px 0px; +} + +.iti__flag.iti__au { + height: 10px; + background-position: -286px 0px; +} + +.iti__flag.iti__aw { + height: 14px; + background-position: -308px 0px; +} + +.iti__flag.iti__ax { + height: 13px; + background-position: -330px 0px; +} + +.iti__flag.iti__az { + height: 10px; + background-position: -352px 0px; +} + +.iti__flag.iti__ba { + height: 10px; + background-position: -374px 0px; +} + +.iti__flag.iti__bb { + height: 14px; + background-position: -396px 0px; +} + +.iti__flag.iti__bd { + height: 12px; + background-position: -418px 0px; +} + +.iti__flag.iti__be { + height: 15px; + background-position: -440px 0px; +} + +.iti__flag.iti__bf { + height: 14px; + background-position: -460px 0px; +} + +.iti__flag.iti__bg { + height: 12px; + background-position: -482px 0px; +} + +.iti__flag.iti__bh { + height: 12px; + background-position: -504px 0px; +} + +.iti__flag.iti__bi { + height: 12px; + background-position: -526px 0px; +} + +.iti__flag.iti__bj { + height: 14px; + background-position: -548px 0px; +} + +.iti__flag.iti__bl { + height: 14px; + background-position: -570px 0px; +} + +.iti__flag.iti__bm { + height: 10px; + background-position: -592px 0px; +} + +.iti__flag.iti__bn { + height: 10px; + background-position: -614px 0px; +} + +.iti__flag.iti__bo { + height: 14px; + background-position: -636px 0px; +} + +.iti__flag.iti__bq { + height: 14px; + background-position: -658px 0px; +} + +.iti__flag.iti__br { + height: 14px; + background-position: -680px 0px; +} + +.iti__flag.iti__bs { + height: 10px; + background-position: -702px 0px; +} + +.iti__flag.iti__bt { + height: 14px; + background-position: -724px 0px; +} + +.iti__flag.iti__bv { + height: 15px; + background-position: -746px 0px; +} + +.iti__flag.iti__bw { + height: 14px; + background-position: -768px 0px; +} + +.iti__flag.iti__by { + height: 10px; + background-position: -790px 0px; +} + +.iti__flag.iti__bz { + height: 14px; + background-position: -812px 0px; +} + +.iti__flag.iti__ca { + height: 10px; + background-position: -834px 0px; +} + +.iti__flag.iti__cc { + height: 10px; + background-position: -856px 0px; +} + +.iti__flag.iti__cd { + height: 15px; + background-position: -878px 0px; +} + +.iti__flag.iti__cf { + height: 14px; + background-position: -900px 0px; +} + +.iti__flag.iti__cg { + height: 14px; + background-position: -922px 0px; +} + +.iti__flag.iti__ch { + height: 15px; + background-position: -944px 0px; +} + +.iti__flag.iti__ci { + height: 14px; + background-position: -961px 0px; +} + +.iti__flag.iti__ck { + height: 10px; + background-position: -983px 0px; +} + +.iti__flag.iti__cl { + height: 14px; + background-position: -1005px 0px; +} + +.iti__flag.iti__cm { + height: 14px; + background-position: -1027px 0px; +} + +.iti__flag.iti__cn { + height: 14px; + background-position: -1049px 0px; +} + +.iti__flag.iti__co { + height: 14px; + background-position: -1071px 0px; +} + +.iti__flag.iti__cp { + height: 14px; + background-position: -1093px 0px; +} + +.iti__flag.iti__cr { + height: 12px; + background-position: -1115px 0px; +} + +.iti__flag.iti__cu { + height: 10px; + background-position: -1137px 0px; +} + +.iti__flag.iti__cv { + height: 12px; + background-position: -1159px 0px; +} + +.iti__flag.iti__cw { + height: 14px; + background-position: -1181px 0px; +} + +.iti__flag.iti__cx { + height: 10px; + background-position: -1203px 0px; +} + +.iti__flag.iti__cy { + height: 14px; + background-position: -1225px 0px; +} + +.iti__flag.iti__cz { + height: 14px; + background-position: -1247px 0px; +} + +.iti__flag.iti__de { + height: 12px; + background-position: -1269px 0px; +} + +.iti__flag.iti__dg { + height: 10px; + background-position: -1291px 0px; +} + +.iti__flag.iti__dj { + height: 14px; + background-position: -1313px 0px; +} + +.iti__flag.iti__dk { + height: 15px; + background-position: -1335px 0px; +} + +.iti__flag.iti__dm { + height: 10px; + background-position: -1357px 0px; +} + +.iti__flag.iti__do { + height: 14px; + background-position: -1379px 0px; +} + +.iti__flag.iti__dz { + height: 14px; + background-position: -1401px 0px; +} + +.iti__flag.iti__ea { + height: 14px; + background-position: -1423px 0px; +} + +.iti__flag.iti__ec { + height: 14px; + background-position: -1445px 0px; +} + +.iti__flag.iti__ee { + height: 13px; + background-position: -1467px 0px; +} + +.iti__flag.iti__eg { + height: 14px; + background-position: -1489px 0px; +} + +.iti__flag.iti__eh { + height: 10px; + background-position: -1511px 0px; +} + +.iti__flag.iti__er { + height: 10px; + background-position: -1533px 0px; +} + +.iti__flag.iti__es { + height: 14px; + background-position: -1555px 0px; +} + +.iti__flag.iti__et { + height: 10px; + background-position: -1577px 0px; +} + +.iti__flag.iti__eu { + height: 14px; + background-position: -1599px 0px; +} + +.iti__flag.iti__fi { + height: 12px; + background-position: -1621px 0px; +} + +.iti__flag.iti__fj { + height: 10px; + background-position: -1643px 0px; +} + +.iti__flag.iti__fk { + height: 10px; + background-position: -1665px 0px; +} + +.iti__flag.iti__fm { + height: 11px; + background-position: -1687px 0px; +} + +.iti__flag.iti__fo { + height: 15px; + background-position: -1709px 0px; +} + +.iti__flag.iti__fr { + height: 14px; + background-position: -1731px 0px; +} + +.iti__flag.iti__ga { + height: 15px; + background-position: -1753px 0px; +} + +.iti__flag.iti__gb { + height: 10px; + background-position: -1775px 0px; +} + +.iti__flag.iti__gd { + height: 12px; + background-position: -1797px 0px; +} + +.iti__flag.iti__ge { + height: 14px; + background-position: -1819px 0px; +} + +.iti__flag.iti__gf { + height: 14px; + background-position: -1841px 0px; +} + +.iti__flag.iti__gg { + height: 14px; + background-position: -1863px 0px; +} + +.iti__flag.iti__gh { + height: 14px; + background-position: -1885px 0px; +} + +.iti__flag.iti__gi { + height: 10px; + background-position: -1907px 0px; +} + +.iti__flag.iti__gl { + height: 14px; + background-position: -1929px 0px; +} + +.iti__flag.iti__gm { + height: 14px; + background-position: -1951px 0px; +} + +.iti__flag.iti__gn { + height: 14px; + background-position: -1973px 0px; +} + +.iti__flag.iti__gp { + height: 14px; + background-position: -1995px 0px; +} + +.iti__flag.iti__gq { + height: 14px; + background-position: -2017px 0px; +} + +.iti__flag.iti__gr { + height: 14px; + background-position: -2039px 0px; +} + +.iti__flag.iti__gs { + height: 10px; + background-position: -2061px 0px; +} + +.iti__flag.iti__gt { + height: 13px; + background-position: -2083px 0px; +} + +.iti__flag.iti__gu { + height: 11px; + background-position: -2105px 0px; +} + +.iti__flag.iti__gw { + height: 10px; + background-position: -2127px 0px; +} + +.iti__flag.iti__gy { + height: 12px; + background-position: -2149px 0px; +} + +.iti__flag.iti__hk { + height: 14px; + background-position: -2171px 0px; +} + +.iti__flag.iti__hm { + height: 10px; + background-position: -2193px 0px; +} + +.iti__flag.iti__hn { + height: 10px; + background-position: -2215px 0px; +} + +.iti__flag.iti__hr { + height: 10px; + background-position: -2237px 0px; +} + +.iti__flag.iti__ht { + height: 12px; + background-position: -2259px 0px; +} + +.iti__flag.iti__hu { + height: 10px; + background-position: -2281px 0px; +} + +.iti__flag.iti__ic { + height: 14px; + background-position: -2303px 0px; +} + +.iti__flag.iti__id { + height: 14px; + background-position: -2325px 0px; +} + +.iti__flag.iti__ie { + height: 10px; + background-position: -2347px 0px; +} + +.iti__flag.iti__il { + height: 15px; + background-position: -2369px 0px; +} + +.iti__flag.iti__im { + height: 10px; + background-position: -2391px 0px; +} + +.iti__flag.iti__in { + height: 14px; + background-position: -2413px 0px; +} + +.iti__flag.iti__io { + height: 10px; + background-position: -2435px 0px; +} + +.iti__flag.iti__iq { + height: 14px; + background-position: -2457px 0px; +} + +.iti__flag.iti__ir { + height: 12px; + background-position: -2479px 0px; +} + +.iti__flag.iti__is { + height: 15px; + background-position: -2501px 0px; +} + +.iti__flag.iti__it { + height: 14px; + background-position: -2523px 0px; +} + +.iti__flag.iti__je { + height: 12px; + background-position: -2545px 0px; +} + +.iti__flag.iti__jm { + height: 10px; + background-position: -2567px 0px; +} + +.iti__flag.iti__jo { + height: 10px; + background-position: -2589px 0px; +} + +.iti__flag.iti__jp { + height: 14px; + background-position: -2611px 0px; +} + +.iti__flag.iti__ke { + height: 14px; + background-position: -2633px 0px; +} + +.iti__flag.iti__kg { + height: 12px; + background-position: -2655px 0px; +} + +.iti__flag.iti__kh { + height: 13px; + background-position: -2677px 0px; +} + +.iti__flag.iti__ki { + height: 10px; + background-position: -2699px 0px; +} + +.iti__flag.iti__km { + height: 12px; + background-position: -2721px 0px; +} + +.iti__flag.iti__kn { + height: 14px; + background-position: -2743px 0px; +} + +.iti__flag.iti__kp { + height: 10px; + background-position: -2765px 0px; +} + +.iti__flag.iti__kr { + height: 14px; + background-position: -2787px 0px; +} + +.iti__flag.iti__kw { + height: 10px; + background-position: -2809px 0px; +} + +.iti__flag.iti__ky { + height: 10px; + background-position: -2831px 0px; +} + +.iti__flag.iti__kz { + height: 10px; + background-position: -2853px 0px; +} + +.iti__flag.iti__la { + height: 14px; + background-position: -2875px 0px; +} + +.iti__flag.iti__lb { + height: 14px; + background-position: -2897px 0px; +} + +.iti__flag.iti__lc { + height: 10px; + background-position: -2919px 0px; +} + +.iti__flag.iti__li { + height: 12px; + background-position: -2941px 0px; +} + +.iti__flag.iti__lk { + height: 10px; + background-position: -2963px 0px; +} + +.iti__flag.iti__lr { + height: 11px; + background-position: -2985px 0px; +} + +.iti__flag.iti__ls { + height: 14px; + background-position: -3007px 0px; +} + +.iti__flag.iti__lt { + height: 12px; + background-position: -3029px 0px; +} + +.iti__flag.iti__lu { + height: 12px; + background-position: -3051px 0px; +} + +.iti__flag.iti__lv { + height: 10px; + background-position: -3073px 0px; +} + +.iti__flag.iti__ly { + height: 10px; + background-position: -3095px 0px; +} + +.iti__flag.iti__ma { + height: 14px; + background-position: -3117px 0px; +} + +.iti__flag.iti__mc { + height: 15px; + background-position: -3139px 0px; +} + +.iti__flag.iti__md { + height: 10px; + background-position: -3160px 0px; +} + +.iti__flag.iti__me { + height: 10px; + background-position: -3182px 0px; +} + +.iti__flag.iti__mf { + height: 14px; + background-position: -3204px 0px; +} + +.iti__flag.iti__mg { + height: 14px; + background-position: -3226px 0px; +} + +.iti__flag.iti__mh { + height: 11px; + background-position: -3248px 0px; +} + +.iti__flag.iti__mk { + height: 10px; + background-position: -3270px 0px; +} + +.iti__flag.iti__ml { + height: 14px; + background-position: -3292px 0px; +} + +.iti__flag.iti__mm { + height: 14px; + background-position: -3314px 0px; +} + +.iti__flag.iti__mn { + height: 10px; + background-position: -3336px 0px; +} + +.iti__flag.iti__mo { + height: 14px; + background-position: -3358px 0px; +} + +.iti__flag.iti__mp { + height: 10px; + background-position: -3380px 0px; +} + +.iti__flag.iti__mq { + height: 14px; + background-position: -3402px 0px; +} + +.iti__flag.iti__mr { + height: 14px; + background-position: -3424px 0px; +} + +.iti__flag.iti__ms { + height: 10px; + background-position: -3446px 0px; +} + +.iti__flag.iti__mt { + height: 14px; + background-position: -3468px 0px; +} + +.iti__flag.iti__mu { + height: 14px; + background-position: -3490px 0px; +} + +.iti__flag.iti__mv { + height: 14px; + background-position: -3512px 0px; +} + +.iti__flag.iti__mw { + height: 14px; + background-position: -3534px 0px; +} + +.iti__flag.iti__mx { + height: 12px; + background-position: -3556px 0px; +} + +.iti__flag.iti__my { + height: 10px; + background-position: -3578px 0px; +} + +.iti__flag.iti__mz { + height: 14px; + background-position: -3600px 0px; +} + +.iti__flag.iti__na { + height: 14px; + background-position: -3622px 0px; +} + +.iti__flag.iti__nc { + height: 10px; + background-position: -3644px 0px; +} + +.iti__flag.iti__ne { + height: 15px; + background-position: -3666px 0px; +} + +.iti__flag.iti__nf { + height: 10px; + background-position: -3686px 0px; +} + +.iti__flag.iti__ng { + height: 10px; + background-position: -3708px 0px; +} + +.iti__flag.iti__ni { + height: 12px; + background-position: -3730px 0px; +} + +.iti__flag.iti__nl { + height: 14px; + background-position: -3752px 0px; +} + +.iti__flag.iti__no { + height: 15px; + background-position: -3774px 0px; +} + +.iti__flag.iti__np { + height: 15px; + background-position: -3796px 0px; +} + +.iti__flag.iti__nr { + height: 10px; + background-position: -3811px 0px; +} + +.iti__flag.iti__nu { + height: 10px; + background-position: -3833px 0px; +} + +.iti__flag.iti__nz { + height: 10px; + background-position: -3855px 0px; +} + +.iti__flag.iti__om { + height: 10px; + background-position: -3877px 0px; +} + +.iti__flag.iti__pa { + height: 14px; + background-position: -3899px 0px; +} + +.iti__flag.iti__pe { + height: 14px; + background-position: -3921px 0px; +} + +.iti__flag.iti__pf { + height: 14px; + background-position: -3943px 0px; +} + +.iti__flag.iti__pg { + height: 15px; + background-position: -3965px 0px; +} + +.iti__flag.iti__ph { + height: 10px; + background-position: -3987px 0px; +} + +.iti__flag.iti__pk { + height: 14px; + background-position: -4009px 0px; +} + +.iti__flag.iti__pl { + height: 13px; + background-position: -4031px 0px; +} + +.iti__flag.iti__pm { + height: 14px; + background-position: -4053px 0px; +} + +.iti__flag.iti__pn { + height: 10px; + background-position: -4075px 0px; +} + +.iti__flag.iti__pr { + height: 14px; + background-position: -4097px 0px; +} + +.iti__flag.iti__ps { + height: 10px; + background-position: -4119px 0px; +} + +.iti__flag.iti__pt { + height: 14px; + background-position: -4141px 0px; +} + +.iti__flag.iti__pw { + height: 13px; + background-position: -4163px 0px; +} + +.iti__flag.iti__py { + height: 11px; + background-position: -4185px 0px; +} + +.iti__flag.iti__qa { + height: 8px; + background-position: -4207px 0px; +} + +.iti__flag.iti__re { + height: 14px; + background-position: -4229px 0px; +} + +.iti__flag.iti__ro { + height: 14px; + background-position: -4251px 0px; +} + +.iti__flag.iti__rs { + height: 14px; + background-position: -4273px 0px; +} + +.iti__flag.iti__ru { + height: 14px; + background-position: -4295px 0px; +} + +.iti__flag.iti__rw { + height: 14px; + background-position: -4317px 0px; +} + +.iti__flag.iti__sa { + height: 14px; + background-position: -4339px 0px; +} + +.iti__flag.iti__sb { + height: 10px; + background-position: -4361px 0px; +} + +.iti__flag.iti__sc { + height: 10px; + background-position: -4383px 0px; +} + +.iti__flag.iti__sd { + height: 10px; + background-position: -4405px 0px; +} + +.iti__flag.iti__se { + height: 13px; + background-position: -4427px 0px; +} + +.iti__flag.iti__sg { + height: 14px; + background-position: -4449px 0px; +} + +.iti__flag.iti__sh { + height: 10px; + background-position: -4471px 0px; +} + +.iti__flag.iti__si { + height: 10px; + background-position: -4493px 0px; +} + +.iti__flag.iti__sj { + height: 15px; + background-position: -4515px 0px; +} + +.iti__flag.iti__sk { + height: 14px; + background-position: -4537px 0px; +} + +.iti__flag.iti__sl { + height: 14px; + background-position: -4559px 0px; +} + +.iti__flag.iti__sm { + height: 15px; + background-position: -4581px 0px; +} + +.iti__flag.iti__sn { + height: 14px; + background-position: -4603px 0px; +} + +.iti__flag.iti__so { + height: 14px; + background-position: -4625px 0px; +} + +.iti__flag.iti__sr { + height: 14px; + background-position: -4647px 0px; +} + +.iti__flag.iti__ss { + height: 10px; + background-position: -4669px 0px; +} + +.iti__flag.iti__st { + height: 10px; + background-position: -4691px 0px; +} + +.iti__flag.iti__sv { + height: 12px; + background-position: -4713px 0px; +} + +.iti__flag.iti__sx { + height: 14px; + background-position: -4735px 0px; +} + +.iti__flag.iti__sy { + height: 14px; + background-position: -4757px 0px; +} + +.iti__flag.iti__sz { + height: 14px; + background-position: -4779px 0px; +} + +.iti__flag.iti__ta { + height: 10px; + background-position: -4801px 0px; +} + +.iti__flag.iti__tc { + height: 10px; + background-position: -4823px 0px; +} + +.iti__flag.iti__td { + height: 14px; + background-position: -4845px 0px; +} + +.iti__flag.iti__tf { + height: 14px; + background-position: -4867px 0px; +} + +.iti__flag.iti__tg { + height: 13px; + background-position: -4889px 0px; +} + +.iti__flag.iti__th { + height: 14px; + background-position: -4911px 0px; +} + +.iti__flag.iti__tj { + height: 10px; + background-position: -4933px 0px; +} + +.iti__flag.iti__tk { + height: 10px; + background-position: -4955px 0px; +} + +.iti__flag.iti__tl { + height: 10px; + background-position: -4977px 0px; +} + +.iti__flag.iti__tm { + height: 14px; + background-position: -4999px 0px; +} + +.iti__flag.iti__tn { + height: 14px; + background-position: -5021px 0px; +} + +.iti__flag.iti__to { + height: 10px; + background-position: -5043px 0px; +} + +.iti__flag.iti__tr { + height: 14px; + background-position: -5065px 0px; +} + +.iti__flag.iti__tt { + height: 12px; + background-position: -5087px 0px; +} + +.iti__flag.iti__tv { + height: 10px; + background-position: -5109px 0px; +} + +.iti__flag.iti__tw { + height: 14px; + background-position: -5131px 0px; +} + +.iti__flag.iti__tz { + height: 14px; + background-position: -5153px 0px; +} + +.iti__flag.iti__ua { + height: 14px; + background-position: -5175px 0px; +} + +.iti__flag.iti__ug { + height: 14px; + background-position: -5197px 0px; +} + +.iti__flag.iti__um { + height: 11px; + background-position: -5219px 0px; +} + +.iti__flag.iti__un { + height: 14px; + background-position: -5241px 0px; +} + +.iti__flag.iti__us { + height: 11px; + background-position: -5263px 0px; +} + +.iti__flag.iti__uy { + height: 14px; + background-position: -5285px 0px; +} + +.iti__flag.iti__uz { + height: 10px; + background-position: -5307px 0px; +} + +.iti__flag.iti__va { + height: 15px; + background-position: -5329px 0px; +} + +.iti__flag.iti__vc { + height: 14px; + background-position: -5346px 0px; +} + +.iti__flag.iti__ve { + height: 14px; + background-position: -5368px 0px; +} + +.iti__flag.iti__vg { + height: 10px; + background-position: -5390px 0px; +} + +.iti__flag.iti__vi { + height: 14px; + background-position: -5412px 0px; +} + +.iti__flag.iti__vn { + height: 14px; + background-position: -5434px 0px; +} + +.iti__flag.iti__vu { + height: 12px; + background-position: -5456px 0px; +} + +.iti__flag.iti__wf { + height: 14px; + background-position: -5478px 0px; +} + +.iti__flag.iti__ws { + height: 10px; + background-position: -5500px 0px; +} + +.iti__flag.iti__xk { + height: 15px; + background-position: -5522px 0px; +} + +.iti__flag.iti__ye { + height: 14px; + background-position: -5544px 0px; +} + +.iti__flag.iti__yt { + height: 14px; + background-position: -5566px 0px; +} + +.iti__flag.iti__za { + height: 14px; + background-position: -5588px 0px; +} + +.iti__flag.iti__zm { + height: 14px; + background-position: -5610px 0px; +} + +.iti__flag.iti__zw { + height: 10px; + background-position: -5632px 0px; +} + +.iti__flag { + height: 15px; + box-shadow: 0px 0px 1px 0px #888; + background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png') !important; + background-repeat: no-repeat; + background-color: #dbdbdb; + background-position: 20px 0; +} + +@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { + .iti__flag { + background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png'); + } +} + +.iti__flag.iti__np { + background-color: transparent; +} + +/* Custom Css */ +.iti.iti--allow-dropdown { + width: 100%; + margin-bottom: 8px; +} + +#phone, +[id^='init-contact'] { + height: 38.73px; + /* border: 1px solid #d5d9dc; */ + /* border-radius: 4px; */ + /* font-weight: 400; + font-size: 14px; + line-height: 16px; + color: #3f4346; + background-color: #ffffff; */ + /* // padding-left: 12px !important; + // z-index: 9; */ +} + +#phone:focus, +[id^='init-contact']:focus { + border-color: transparent; + outline: 2px solid #1e75ba !important; +} + +/* // .iti__selected-flag { +// font-weight: 400; +// font-size: 14px; +// line-height: 16px; +// } */ + +.iti { + display: block !important; +} + +/* // .iti .dropdown-menu.country-dropdown { +// border-top-left-radius: 0px; +// border-top-right-radius: 0px; +// border-color: #c7cace; +// margin-top: 0px; +// padding-top: 0px; +// padding-bottom: 0px; + +// overflow: hidden; +// } */ + +.iti .iti__country-list { + position: absolute !important; + bottom: 0 !important; + top: auto !important; + left: auto !important; + transform: translateY(101%) !important; + box-shadow: none; + font-size: 14px; + margin-left: 0; + width: 316px; + max-height: 250px; +} + +/* // .iti__flag-container.open + input { +// border-bottom-left-radius: 0px; +// border-bottom-right-radius: 0px; +// } + +// .iti .search-container input { +// font-size: 14px; +// border-color: #c7cace; +// border-radius: 0; +// padding: 5px 10px; +// } + +// .iti .search-container input:focus { +// outline: none; +// } */ +.iti__country { + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis; + padding: 10px 10px !important; + color: #3f4346 !important; + font-weight: 500 !important; +} + +.iti__country.iti__flag-box { + margin-right: 12px; +} + +.iti__country:hover, +.iti__country.iti__highlight { + background-color: #d5e0f8 !important; +} + +/* // .iti .iti__country-list { +// border-radius: 0px; +// } +// .iti { +// display: flex !important; +// } +// .iti__flag-container { +// position: relative; +// top: -1px; +// left: 1px !important; +// } +// .iti__selected-flag { +// // &:hover, +// // &:focus { +// // outline: 1px solid #3498db; +// // } +// font-weight: 400; +// font-size: 14px; +// line-height: 16px; +// // border: 1px solid #d5d9dc; +// // border-radius: 8px; +// // background-color: transparent !important; +// height: 36px; +// } + +// @media screen and (max-width: 479px) { +// .iti .iti__country-list { +// width: 88.3vw; +// } +// } + +// ngx-intl-tel-input input { +// height: 44px; +// margin-bottom: 20px; +// padding: 10px; +// border-style: solid; +// border-width: 1px; +// border-color: #c7cace; +// border-radius: 4px; +// font-size: 18px; +// } + +// ngx-intl-tel-input.ng-invalid.ng-touched input { +// border: 1px solid #c0392b; +// } + +// ngx-intl-tel-input input:hover { +// // box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.24); +// } + +// ngx-intl-tel-input input:focus { +// outline: none !important; +// // border-color: #3498db !important; +// box-shadow: 0 0 0 0 #000; +// } + +// ngx-intl-tel-input input::-webkit-input-placeholder { +// color: #bac2c7; +// } + +// ngx-intl-tel-input input:-ms-input-placeholder { +// color: #bac2c7; +// } + +// ngx-intl-tel-input input::-ms-input-placeholder { +// color: #bac2c7; +// } + +// ngx-intl-tel-input input::placeholder { +// color: #bac2c7; +// } + +// ngx-intl-tel-input input[disabled] { +// background-color: #e5eaf1; +// } + +// #phone, */ +.selected-dial-code { + font-weight: 400; + font-size: 14px; +} + +/* // #phone { +// border-color: #d5d9dc !important; +// border-radius: 8px !important; +// } */ +.selected-dial-code { + color: #8f9396; +} + +.dropdown-menu.country-dropdown { + width: 291px !important; + border-radius: 8px 8px 0px 0px !important; + border-color: #d5d9dc !important; +} + +.dropdown-menu.country-dropdown ul { + width: 100%; +} + +/* // .iti__flag { +// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png'); +// } + +// @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { +// .iti__flag { +// background-image: url('https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png'); +// } +// } +// .iti__dial-code { +// color: #3f4346; +// } */ +.invalid-input { + outline: 2px solid #cc5229; +} + +/* Dark mode — triggered by .dark class on root element */ +.dark .iti .iti__country-list { + background-color: #1f2937; + border-color: #374151; + color: #f9fafb; +} + +.dark .iti__country { + color: #f9fafb !important; +} + +.dark .iti__country:hover, +.dark .iti__country.iti__highlight { + background-color: #312e81 !important; +} + +.dark .iti__dial-code { + color: #9ca3af; +} + +.dark .iti__divider { + border-bottom-color: #374151; +} + +.dark .iti__selected-flag:hover, +.dark .iti--allow-dropdown .iti__flag-container:hover .iti__selected-flag { + background-color: rgba(255, 255, 255, 0.08); +} + +.dark #phone, +.dark [id^='init-contact'] { + color: #f9fafb; + background-color: transparent; +} diff --git a/apps/proxy/src/assets/fonts/Inter-Black.ttf b/apps/shared/fonts/Inter-Black.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Black.ttf rename to apps/shared/fonts/Inter-Black.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-Bold.ttf b/apps/shared/fonts/Inter-Bold.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Bold.ttf rename to apps/shared/fonts/Inter-Bold.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-ExtraBold.ttf b/apps/shared/fonts/Inter-ExtraBold.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-ExtraBold.ttf rename to apps/shared/fonts/Inter-ExtraBold.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-ExtraLight.ttf b/apps/shared/fonts/Inter-ExtraLight.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-ExtraLight.ttf rename to apps/shared/fonts/Inter-ExtraLight.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-Light.ttf b/apps/shared/fonts/Inter-Light.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Light.ttf rename to apps/shared/fonts/Inter-Light.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-Medium.ttf b/apps/shared/fonts/Inter-Medium.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Medium.ttf rename to apps/shared/fonts/Inter-Medium.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-Regular.ttf b/apps/shared/fonts/Inter-Regular.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Regular.ttf rename to apps/shared/fonts/Inter-Regular.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-SemiBold.ttf b/apps/shared/fonts/Inter-SemiBold.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-SemiBold.ttf rename to apps/shared/fonts/Inter-SemiBold.ttf diff --git a/apps/proxy/src/assets/fonts/Inter-Thin.ttf b/apps/shared/fonts/Inter-Thin.ttf similarity index 100% rename from apps/proxy/src/assets/fonts/Inter-Thin.ttf rename to apps/shared/fonts/Inter-Thin.ttf diff --git a/apps/proxy/src/assets/scss/base/_fonts.scss b/apps/shared/scss/_fonts.scss similarity index 58% rename from apps/proxy/src/assets/scss/base/_fonts.scss rename to apps/shared/scss/_fonts.scss index 25bcd6f8..176fbbdf 100644 --- a/apps/proxy/src/assets/scss/base/_fonts.scss +++ b/apps/shared/scss/_fonts.scss @@ -2,23 +2,23 @@ font-family: 'Inter'; font-style: normal; font-weight: 300; - src: url(../../fonts/Inter-Light.ttf) format('truetype'); + src: url(../fonts/Inter-Light.ttf) format('truetype'); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 400; - src: url(../../fonts/Inter-Regular.ttf) format('truetype'); + src: url(../fonts/Inter-Regular.ttf) format('truetype'); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 500; - src: url(../../fonts/Inter-Medium.ttf) format('truetype'); + src: url(../fonts/Inter-Medium.ttf) format('truetype'); } @font-face { font-family: 'Inter'; font-style: normal; font-weight: 700; - src: url(../../fonts/Inter-Bold.ttf) format('truetype'); + src: url(../fonts/Inter-Bold.ttf) format('truetype'); } diff --git a/apps/shared/scss/_imports.scss b/apps/shared/scss/_imports.scss new file mode 100644 index 00000000..0ed7da5e --- /dev/null +++ b/apps/shared/scss/_imports.scss @@ -0,0 +1,3 @@ +@use './component/mat-form-field'; +@use './fonts'; +@use './component/table'; diff --git a/apps/shared/scss/component/_mat-form-field.scss b/apps/shared/scss/component/_mat-form-field.scss new file mode 100644 index 00000000..33686dad --- /dev/null +++ b/apps/shared/scss/component/_mat-form-field.scss @@ -0,0 +1,50 @@ +mat-form-field { + &.mat-mdc-form-field { + // width: 100%; + &:not(.initial-height, .mat-mdc-paginator-page-size-select, :has(textarea)) { + --mat-form-field-container-height: var(--custom-mat-form-field-height); + .mdc-text-field--outlined { + height: var(--mat-form-field-container-height); + .mat-mdc-form-field-infix { + &:has(.mat-mdc-chip-set) { + padding-top: 8px !important; + } + --mat-form-field-container-vertical-padding: 10px; + min-height: var(--mat-form-field-container-height); + height: var(--mat-form-field-container-height); + padding-top: 12px !important; + padding-bottom: 14px !important; + } + } + + .mat-mdc-text-field-wrapper { + .mat-mdc-form-field-flex { + .mat-mdc-floating-label { + top: 22px; + } + } + &.mdc-text-field--outlined { + .mdc-notched-outline--upgraded { + .mdc-floating-label--float-above { + --mat-mdc-form-field-label-transform: translateY(-27.75px) + scale(var(--mat-mdc-form-field-floating-label-scale, 0.75)); + } + } + } + } + } + &.no-padding { + .mat-mdc-form-field-subscript-wrapper { + display: none; + } + } + } +} + +mat-paginator { + mat-form-field { + &.mat-mdc-form-field { + width: 84px !important; // Default width of paginator dropdown + } + } +} diff --git a/apps/shared/scss/component/_table.scss b/apps/shared/scss/component/_table.scss new file mode 100644 index 00000000..f6557942 --- /dev/null +++ b/apps/shared/scss/component/_table.scss @@ -0,0 +1,130 @@ +.table-scroll { + overflow-x: auto; + width: 100%; +} + +.default-table { + box-shadow: none; + width: 100%; + + &:has(.mat-no-data-row) { + height: 100%; + } + + .mat-mdc-header-row { + .mat-mdc-header-cell { + font-weight: 600; + font-size: 12px; + color: var(--color-table-head) !important; + border-bottom-color: var(--color-table-head-border) !important; + } + } + + .mat-mdc-row { + .mat-mdc-cell { + border-bottom-color: var(--color-table-cell-border) !important; + } + + &.highlight { + background-color: var(--color-common-bg-lighter); + } + + &:hover:not(.mat-mdc-no-data-row) { + background: var(--color-common-silver); + } + + &.last-child .mat-mdc-cell { + border-bottom: 0; + } + + &.hover-action { + .actions { + opacity: 0; + } + + @media (hover: hover) { + &:hover .actions { + opacity: 1; + } + } + + @media (hover: none) { + .actions { + opacity: 1; + } + } + } + .mat-no-data-cell { + padding-inline: 0 !important; + } + } +} + +@media screen and (max-width: 768px) { + .default-table.responsive-table { + display: block !important; + tbody { + display: block !important; + width: 100%; + } + + // Hide the header row + tr.mat-mdc-header-row { + display: none !important; + } + + // Each data row becomes a card + tr.mat-mdc-row { + display: block !important; + height: auto !important; + border-radius: 8px; + margin-bottom: 12px; + // background-color: var(--color-common-bg); + border: 1px solid var(--color-common-border); + box-shadow: 0 1px 4px rgb(0 0 0 / 6%); + padding: 4px 0; + } + + // No-data row stays as a block but without card styling + tr.mat-mdc-no-data-row { + display: block !important; + background: transparent; + border: none; + box-shadow: none; + margin-bottom: 0; + padding: 0; + } + + // Each cell: label on left, value on right + td.mat-mdc-cell { + display: flex !important; + flex-direction: row; + justify-content: space-between; + align-items: center; + min-height: 40px; + height: auto !important; + width: 100%; + padding: 8px 16px !important; + border-bottom: 1px solid var(--color-table-cell-border) !important; + box-sizing: border-box; + font-size: 13px; + word-break: break-word; + + &::before { + content: attr(data-label); + font-weight: 600; + font-size: 11px; + text-transform: uppercase; + color: var(--color-table-head); + letter-spacing: 0.04em; + white-space: nowrap; + flex-shrink: 0; + margin-right: 12px; + } + + &:last-child { + border-bottom: 0 !important; + } + } + } +} diff --git a/apps/shared/scss/global.scss b/apps/shared/scss/global.scss new file mode 100644 index 00000000..6aa8ddc1 --- /dev/null +++ b/apps/shared/scss/global.scss @@ -0,0 +1,141 @@ +@use 'tailwindcss'; +@use './imports'; +@use './mixins/common-utils' as *; +@source not inline("group-[aria-current=page]:text-indigo-600"); +.service-list { + &.mat-mdc-list-base { + .mat-mdc-list-item { + .mdc-list-item__primary-text { + display: flex; + align-items: center; + gap: 8px; + } + } + } +} + +/*// Mat Divider +//====================================================*/ +.mat-divider { + border-top-color: var(--color-common-border) !important; +} + +/*// Text Class +//====================================================*/ +.text-success { + color: var(--color-common-green) !important; +} +.text-danger { + color: var(--mat-sys-error) !important; +} +.text-primary { + color: var(--mat-sys-primary) !important; +} +/* Text Color */ +.text-dark { + color: var(--color-common-text) !important; +} +.text-secondary { + color: var(--color-common-dark) !important; +} +.text-pending { + color: var(--color-short-url-primary); +} +.text-grey { + color: var(--color-common-grey) !important; +} + +// Background Colors +.bg-gray { + background-color: var(--color-common-bg); +} +.bg-light-grey { + background-color: var(--color-common-graph-bg) !important; +} + +.w-break { + word-break: break-word; +} + +pre { + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; + a { + &:link { + color: var(--color-link-color) !important; + } + &:visited { + color: var(--color-link-color) !important; + } + &:hover { + color: var(--color-link-color) !important; + } + &:active { + color: var(--color-link-color) !important; + } + } +} +// Text size +.font-10 { + font-size: 10px !important; +} +.font-11 { + font-size: 11px !important; +} +.font-12 { + font-size: 12px !important; +} +.font-14 { + font-size: var(--font-size-common-14) !important; +} +.font-20 { + font-size: var(--font-size-common-20) !important; +} + +.w-b-hyphens { + overflow-wrap: break-word; + word-wrap: break-word; + -ms-word-break: break-all; + word-break: break-all; + word-break: break-word; + -ms-hyphens: auto; + -moz-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} +.overflow-dotted { + white-space: nowrap; + overflow: hidden !important; + text-overflow: ellipsis; +} + +.box-shadow-none { + box-shadow: none !important; +} + +// .border { +// border: 1px solid var(--color-common-border); +// } +// .border-right { +// border-right: 1px solid var(--color-common-border); +// } +// // border radius +// .rounded-4 { +// border-radius: var(--border-common-radius-4); +// } +// .rounded-8 { +// border-radius: var(--border-common-radius); +// } + +// Add Scrollbar in Markdown with custom color +markdown pre { + overflow: auto; + @include custom-scroll-bar( + $scrollbarThumbColor: rgba(255, 255, 255, 0.2), + $scrollbarTrackColor: rgba(255, 255, 255, 0.4), + $scrollbarWidth: 8px, + $scrollbarTrackRadius: 4px + ); +} diff --git a/apps/proxy/src/assets/scss/utils/mixins/_common-utils.scss b/apps/shared/scss/mixins/_common-utils.scss similarity index 73% rename from apps/proxy/src/assets/scss/utils/mixins/_common-utils.scss rename to apps/shared/scss/mixins/_common-utils.scss index 8d6f15ac..9db50a7d 100644 --- a/apps/proxy/src/assets/scss/utils/mixins/_common-utils.scss +++ b/apps/shared/scss/mixins/_common-utils.scss @@ -1,42 +1,42 @@ -@mixin generateIconBtn($btnSize, $iconSize, $iconColor) { - width: $btnSize !important; - height: $btnSize !important; - min-height: $btnSize; - line-height: $btnSize; - .mat-button-wrapper { - .mat-icon { - height: $iconSize; - width: $iconSize; - line-height: $iconSize; - font-size: $iconSize; - color: $iconColor; - } - } -} +// @mixin generateIconBtn($btnSize, $iconSize, $iconColor) { +// width: $btnSize !important; +// height: $btnSize !important; +// min-height: $btnSize; +// line-height: $btnSize; +// .mat-button-wrapper { +// .mat-icon { +// height: $iconSize; +// width: $iconSize; +// line-height: $iconSize; +// font-size: $iconSize; +// color: $iconColor; +// } +// } +// } -@mixin iconBtnHover($iconColor, $hoverBgColor, $hoverIconColor) { - color: $iconColor !important; - &:hover { - background-color: $hoverBgColor !important; - .mat-icon { - color: $hoverIconColor !important; - } - } -} +// @mixin iconBtnHover($iconColor, $hoverBgColor, $hoverIconColor) { +// color: $iconColor !important; +// &:hover { +// background-color: $hoverBgColor !important; +// .mat-icon { +// color: $hoverIconColor !important; +// } +// } +// } -@mixin btnHover($defaultTextColor, $defaultBgColor, $hoverBgColor, $hoverTextColor: null) { - background-color: $defaultBgColor; - color: $defaultTextColor; - &:hover { - background-color: $hoverBgColor; - @if $hoverTextColor { - color: $hoverTextColor; - } - .mat-button-focus-overlay { - opacity: 0 !important; - } - } -} +// @mixin btnHover($defaultTextColor, $defaultBgColor, $hoverBgColor, $hoverTextColor: null) { +// background-color: $defaultBgColor; +// color: $defaultTextColor; +// &:hover { +// background-color: $hoverBgColor; +// @if $hoverTextColor { +// color: $hoverTextColor; +// } +// .mat-button-focus-overlay { +// opacity: 0 !important; +// } +// } +// } // Responsive media query mixin @@ -98,7 +98,7 @@ } } -@mixin sideNavHoverActiveState($primary-color, $primary-color-light, $active-color, $hover-color){ +@mixin sideNavHoverActiveState($primary-color, $primary-color-light, $active-color, $hover-color) { &.active-list-item { .mat-line { font-weight: 500 !important; @@ -108,8 +108,8 @@ .mat-icon { color: $active-color !important; &.menu-svg-icon { - > svg { - color:var(--color-email-primary); + > svg { + color: var(--color-email-primary); path { fill: $active-color; } @@ -133,7 +133,6 @@ } } } - } /*---------------------------------------------------------------- @@ -144,24 +143,24 @@ /* $scrollbarWidth : For scrollbar width /* $scrollbarTrackRadius: For scrollbar track radius /* -*/ +*/ @mixin custom-scroll-bar($scrollbarThumbColor, $scrollbarTrackColor, $scrollbarWidth, $scrollbarTrackRadius) { &::-webkit-scrollbar { width: $scrollbarWidth; height: $scrollbarWidth; } - + /* Track */ &::-webkit-scrollbar-track { background: $scrollbarTrackColor; border-radius: $scrollbarTrackRadius; } - + /* Handle */ &::-webkit-scrollbar-thumb { - background: $scrollbarThumbColor; + background: $scrollbarThumbColor; } &::-webkit-scrollbar-thumb:hover { - background: $scrollbarThumbColor; + background: $scrollbarThumbColor; } -} \ No newline at end of file +} diff --git a/docs/angular-upgrade-plan.md b/docs/angular-upgrade-plan.md new file mode 100644 index 00000000..eedf8ca4 --- /dev/null +++ b/docs/angular-upgrade-plan.md @@ -0,0 +1,432 @@ +# proxy-ui — Angular Upgrade Plan & Architecture Guide + +> **Created:** Feb 26, 2026 +> **Author:** Divyanshu (via Cascade AI pair programming session) +> **Scope:** Project onboarding, architecture overview, and Angular 14 → 17 migration plan + +--- + +## Table of Contents + +1. [Project Overview](#1-project-overview) +2. [Architecture & Flow](#2-architecture--flow) +3. [NX Monorepo Structure](#3-nx-monorepo-structure) +4. [The 3 Apps Explained](#4-the-3-apps-explained) +5. [State Management (NgRx)](#5-state-management-ngrx) +6. [User Journey Flow](#6-user-journey-flow) +7. [Angular Upgrade Decision](#7-angular-upgrade-decision) +8. [Dependency Safety Report — v14 → v17](#8-dependency-safety-report--v14--v17) +9. [Step-by-Step Migration Plan](#9-step-by-step-migration-plan) +10. [2 Package Replacements Required](#10-2-package-replacements-required) + +--- + +## 1. Project Overview + +**proxy-ui** is a platform for managing OTP verification, authentication, user management, project features, logs, and dashboards. It is built with **Angular 14 + NX 15 Monorepo**. + +### Current Stack + +| Technology | Version | +|---|---| +| Angular | 14.2.2 | +| NX | 15.0.3 (`@nrwl/*`) | +| TypeScript | 4.8.4 | +| Zone.js | 0.11.5 | +| RxJS | ~7.5.7 | +| NgRx | 14.x | +| Angular Material | 14.2.2 | +| Firebase | 9.16.0 | +| @angular/fire | 7.5.0 | + +--- + +## 2. Architecture & Flow + +``` +proxy-ui/ +├── apps/ ← 3 Angular Applications +│ ├── proxy/ ← Main Admin Dashboard App +│ ├── proxy-auth/ ← OTP Auth Widget (Web Component / Angular Element) +│ └── proxy-auth-element/ ← Build variant of auth element +│ +└── libs/ ← Shared Libraries (used by all apps) + ├── models/ ← TypeScript interfaces/models + ├── services/ ← API service calls + ├── urls/ ← API URL constants + ├── pipes/ ← Angular pipes + ├── directives/ ← Angular directives + ├── ui/ ← Reusable UI components + ├── constant/ ← App-wide constants + ├── utils/ ← Utility functions + └── shared/ ← Shared modules +``` + +### NX Path Aliases + +All libs are available via `@proxy/...` aliases (defined in `tsconfig.base.json`): + +```typescript +// Clean NX import (instead of ../../../../) +import { ServicesProxyAuthModule } from '@proxy/services/proxy/auth'; +import { IProjects } from '@proxy/models/logs-models'; +``` + +--- + +## 3. NX Monorepo Structure + +NX is a **monorepo manager**. Instead of 3 separate Angular repos, everything lives in one repo with shared libraries. + +- `apps/` — deployable Angular applications +- `libs/` — reusable Angular modules (like local npm packages) +- `node_modules/` — single shared node_modules for all apps +- `workspace.json` — lists all projects and their paths +- `nx.json` — NX configuration, task runner, caching settings +- `tsconfig.base.json` — defines `@proxy/*` path aliases + +--- + +## 4. The 3 Apps Explained + +### `apps/proxy` — Main Admin Dashboard + +Full Angular SPA for internal admin use. + +**Boot Flow:** +``` +main.ts + └── bootstraps AppModule + └── AppComponent (proxy-root) + └── RouterModule loads routes lazily +``` + +**Route Structure (`app.routes.ts`):** +``` +/ → redirects to /login +/login → AuthModule (lazy loaded) +/app → LayoutModule (lazy, 🔒 Firebase Auth Guard) +/project → CreateProjectModule (lazy, 🔒 Firebase Auth Guard) +/p → PublicModule (no auth) +``` + +**Inside `/app` — LayoutModule (main shell after login):** +``` +/app + └── LayoutComponent (sidebar + toolbar) + ├── /app/dashboard → DashboardModule + ├── /app/logs → LogsModule + ├── /app/features → FeaturesModule + ├── /app/users → UsersModule + └── /app/chatbot → ChatbotComponent +``` + +**Route Guards:** +- `AngularFireAuthGuard` — checks Firebase login state +- `CanActivateRouteGuard` — checks role/permissions +- `ProjectGuard` — checks if user has projects; redirects to `/project` if none + +--- + +### `apps/proxy-auth` — OTP Auth Web Component (Widget) + +This is **NOT a regular Angular SPA** visited in a browser. It is compiled as a **Web Component (Angular Element)** and embedded on external client websites. + +**How it works:** +``` +External website calls: + window.initVerification({ referenceId: '...', success: fn }) + ↓ + Creates custom HTML element dynamically + ↓ + Angular's SendOtpComponent renders inside it + ↓ + User sees OTP / auth widget on the external site +``` + +The `element.module.ts` registers `proxy-auth` as a browser Custom Element via `createCustomElement()`. This is the Angular Elements API — it converts an Angular component into a native Web Component usable on any website. + +**Supported types via `window.initVerification`:** +- `""` — Standard OTP flow +- `"user-management"` — User management panel +- `"organization-details"` — Organization details form +- `"subscription"` — Subscription management + +--- + +### `apps/proxy-auth-element` — Build Variant + +Alternative build configuration for the auth element. Produces the same web component output with different build settings. + +--- + +## 5. State Management (NgRx) + +The main `proxy` app uses **NgRx** (Redux pattern for Angular): + +``` +User Action (click/event) + ↓ + dispatch(Action) ← e.g. rootActions.getAllProject() + ↓ + Effects (side effects) ← makes HTTP API call via services + ↓ + Reducer ← updates Store state + ↓ + Selector ← component reads updated state + ↓ + Component re-renders +``` + +**State Slices:** +- `auth` — login/logout state (Firebase user data) +- `root` — app-level state (projects list, client settings, header title) + +**Special — `clearStateMetaReducer`:** +On `logoutAction`, the entire NgRx state is wiped to an empty object — clean slate on logout. + +```typescript +// apps/proxy/src/app/ngrx/store/app.state.ts +export function clearStateMetaReducer(reducer) { + return function (state, action) { + if (action.type === logoutAction.type) { + state = {} as State; // Full state reset on logout + } + return reducer(state, action); + }; +} +``` + +--- + +## 6. User Journey Flow + +``` +1. User visits / + ↓ +2. Redirects to /login (AuthModule loads) + ↓ +3. User logs in via Firebase + ↓ +4. AngularFireAuthGuard allows access to /app + ↓ +5. ProjectGuard checks NgRx store for projects + ├── No projects? → redirect to /project (CreateProjectModule) + └── Has projects? → proceed to /app/dashboard + ↓ +6. LayoutComponent renders (sidebar + toolbar shell) + ↓ +7. User navigates between: + dashboard / logs / features / users / chatbot +``` + +--- + +## 7. Angular Upgrade Decision + +### Why Upgrade? + +| Trigger | Should Upgrade? | +|---|---| +| Angular 14 hits end-of-security-support | ✅ Yes — security vulnerability risk | +| A critical dependency drops Angular 14 support | ✅ Yes | +| A client requests Angular 18+ features (Signals, SSR) | ✅ Yes | +| "Just to be on latest" | ❌ Not worth the risk | + +### Why NOT Jump Directly to v21? + +1. **Clients use the Web Component** — Any bundle format or CSS change in `proxy-auth` can break embedded client integrations silently. +2. **Angular Material MDC** — The v15 upgrade completely changes Material component DOM/CSS. All custom SCSS will need review. +3. **`@angular/fire` compat removal** — v18+ drops the `@angular/fire/compat` API entirely, requiring a full Firebase auth rewrite. +4. **3 abandoned packages** in v21 path require full replacements. + +### Chosen Target: v17 ✅ + +**Why v17 is the right first milestone:** +- All major dependencies have stable v17 versions +- `@angular/fire` compat module is **still available** in v17 (no rewrite needed) +- `ng-hcaptcha` officially supports up to v17 (last supported version) +- Improved Ivy-only build (~30% smaller bundles, no `ngcc`) +- Angular Signals available but optional (no forced migration) +- Lower risk than v18+ (no compat removals) + +### Angular 14 → 21 Cannot Be Done in One Step + +You MUST upgrade one major version at a time: +``` +14 → 15 → 16 → 17 ← Stop here first +``` +Then later: `17 → 18 → 19 → 20 → 21` + +--- + +## 8. Dependency Safety Report — v14 → v17 + +### ✅ Safe — Clean v17 Versions Available + +| Package | Current | Target | +|---|---|---| +| `@angular/*` | 14.2.2 | 17.x | +| `@angular/material` + `cdk` | 14.2.2 | 17.x | +| `@ngrx/*` (store, effects, entity, router-store, etc.) | 14.x | 17.x | +| `primeng` | 14.2.2 | 17.x | +| `ngx-cookie-service` | 14.0.1 | 17.x | +| `ngx-markdown` | 14.0.1 | 17.x | +| `@abacritt/angularx-social-login` | 1.2.5 | 2.2.x | +| `@angular/fire` | 7.5.0 | 17.x (compat still present ✅) | +| `firebase` | 9.16.0 | 10.x | +| `highcharts-angular` | 3.0.0 | 3.x (legacy-peer-deps) | +| `ng-hcaptcha` | ^2.6.0 | stays ^2.6.0 (officially supports v17) | +| `ng-otp-input` | 1.8.5 | 2.x (requires Angular 16+) | +| `ngrx-store-localstorage` | 14.0.0 | 17.x / 18.x | +| `zone.js` | 0.11.5 | 0.14.x | +| `rxjs` | ~7.5.7 | ~7.8.x | +| `typescript` | 4.8.4 | 5.2.x | + +### ⚠️ Requires Replacement (2 packages) + +| Package | Issue | Replacement | +|---|---|---| +| `@angular-material-components/datetime-picker` | Abandoned — last published 3 years ago, max Angular 16 | `@danielmoncada/angular-datetime-picker@17.x` (maintained fork, identical API) | +| `@materia-ui/ngx-monaco-editor` | Abandoned — stopped at Angular 13 | `ngx-monaco-editor-v2@17.x.x` (active fork) | + +### ✅ No Angular Peer Dependency — No Changes Needed + +`chart.js`, `crypto-js`, `dayjs`, `d3-*`, `highcharts`, `lodash-es`, `socket.io-client`, `tributejs`, `jssip`, `recordrtc`, `intl-tel-input`, `google-libphonenumber`, `froala-editor` + +--- + +## 9. Step-by-Step Migration Plan + +### Environment Prerequisites + +| Angular Version | Node.js | TypeScript | Zone.js | +|---|---|---|---| +| v15 | 14.20.x / 16.13.x / 18.10.x | 4.8+ | 0.12.x | +| v16 | 16.x / 18.x | 4.9.3+ | 0.13.x | +| **v17** | **18.13.0+** | **5.2+** | **0.14.x** | + +> Upgrade Node.js to **v18.13.0 LTS or higher** before starting. + +--- + +### Step 1 — v14 → v15 (branch: `angular-v15-migration`) + +```bash +npx nx migrate @nrwl/workspace@15 +npx nx migrate --run-migrations +npx ng update @angular/core@15 @angular/cli@15 +npx ng update @angular/material@15 +``` + +**Code changes required:** +- Remove `enableIvy` from all `tsconfig.json` files +- Change `DATE_PIPE_DEFAULT_TIMEZONE` → `DATE_PIPE_DEFAULT_OPTIONS` +- Update `RouterLinkWithHref` → `RouterLink` +- **Visual review required** — Angular Material MDC refactor changes all component DOM/CSS at this step + +--- + +### Step 2 — v15 → v16 (branch: `angular-v16-migration`) + +```bash +npx nx migrate @nrwl/workspace@16 +npx nx migrate --run-migrations +npx ng update @angular/core@16 @angular/cli@16 +npx ng update @angular/material@16 +``` + +**Code changes required:** +- **Remove `ngcc` from `postinstall` script in `package.json`** (ngcc is removed in v16): + ```json + // DELETE this line: + "postinstall": "ngcc --properties es5 browser module main --first-only --create-ivy-entry-points" + ``` +- Upgrade `zone.js` → `0.13.x` +- Remove `BrowserTransferStateModule` references +- Replace `ReflectiveInjector` → `Injector.create` +- `@nrwl/*` → `@nx/*` package rename begins (NX handles this automatically) + +--- + +### Step 3 — v16 → v17 (branch: `angular-v17-migration`) + +```bash +npx nx migrate @nx/workspace@17 +npx nx migrate --run-migrations +npx ng update @angular/core@17 @angular/cli@17 +npx ng update @angular/material@17 +``` + +**Code changes required:** +- Upgrade TypeScript → `5.2.x`, `zone.js` → `0.14.x` +- Fix Zone.js import paths: + - `zone.js/dist/zone` → `zone.js` + - `zone.js/bundles/zone-testing.js` → `zone.js/testing` +- `AnimationDriver.NOOP` → `NoopAnimationDriver` +- Check templates for `NgSwitch` equality (now uses `===` instead of `==`) +- Configure router properties (`titleStrategy`, `urlHandlingStrategy`, etc.) via `provideRouter()` instead of `Router` public API +- **Replace the 2 abandoned packages** (see Section 10) + +--- + +## 10. 2 Package Replacements Required + +Both replacements affect only **4 source files total** — very contained scope. + +### Replacement 1: `@angular-material-components/datetime-picker` → `@danielmoncada/angular-datetime-picker` + +**Install:** +```bash +npm uninstall @angular-material-components/datetime-picker @angular-material-components/moment-adapter +npm install @danielmoncada/angular-datetime-picker@17.x +``` + +**Files to update (import path change only):** +- `libs/ui/time-picker/src/lib/ui-time-picker.module.ts` +- `libs/directives/open-datepicker-on-focus-directive/src/lib/directives-open-datepicker-on-focus-directive.module.ts` + +```typescript +// Before +import { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker'; +import { NgxMatMomentModule } from '@angular-material-components/moment-adapter'; + +// After +import { NgxMatDatetimePickerModule } from '@danielmoncada/angular-datetime-picker'; +``` + +--- + +### Replacement 2: `@materia-ui/ngx-monaco-editor` → `ngx-monaco-editor-v2` + +**Install:** +```bash +npm uninstall @materia-ui/ngx-monaco-editor +npm install ngx-monaco-editor-v2@17.x.x +``` + +**Files to update:** +- `libs/ui/editor/src/lib/editor.component.ts` +- `libs/ui/editor/src/lib/ui-editor.module.ts` + +```typescript +// Before +import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor'; + +// After +import { MonacoEditorModule } from 'ngx-monaco-editor-v2'; +``` + +--- + +## Key Rules for the Migration + +1. **One major version at a time** — never skip versions +2. **Separate git branch per version hop** — easy rollback if needed +3. **Test + visual review after every hop** — especially after v15 (Material MDC) +4. **Do NOT touch `@angular/fire` compat API** until v18+ migration (it still works in v17) +5. **Run `nx migrate --run-migrations` after every `nx migrate`** — this applies automated code transforms + +--- + +*End of document.* diff --git a/docs/angular-v14-to-v17-migration-report.md b/docs/angular-v14-to-v17-migration-report.md new file mode 100644 index 00000000..51755c47 --- /dev/null +++ b/docs/angular-v14-to-v17-migration-report.md @@ -0,0 +1,507 @@ +# proxy-ui — Angular v14 → v17 Migration Report + +> **Completed:** March 16, 2026 +> **Author:** Divyanshu (via Cascade AI pair programming) +> **Scope:** Full migration from Angular 14 → 15 → 16 → 17 including Angular Material MDC migration, Nx tooling updates, and all official guide compliance checks + +--- + +## Table of Contents + +1. [Final Versions After Migration](#1-final-versions-after-migration) +2. [Angular Material MDC Migration](#2-angular-material-mdc-migration) +3. [v14 → v15 Migration](#3-v14--v15-migration) +4. [v15 → v16 Migration](#4-v15--v16-migration) +5. [v16 → v17 Migration](#5-v16--v17-migration) +6. [Full Official Guide Compliance Checklist](#6-full-official-guide-compliance-checklist) +7. [Key Fixes & Non-Obvious Changes](#7-key-fixes--non-obvious-changes) +8. [Remaining Warnings (Non-Blocking)](#8-remaining-warnings-non-blocking) +9. [Build Status](#9-build-status) +10. [Next Steps](#10-next-steps) + +--- + +## 1. Final Versions After Migration + +| Package | Before (v14) | After (v17) | +|---|---|---| +| `@angular/core` | 14.2.2 | **17.3.9** | +| `@angular/cdk` | 14.2.2 | **17.3.9** | +| `@angular/material` | 14.2.2 | **17.3.9** | +| `@angular/fire` | 7.5.0 | **17.1.0** | +| `firebase` | 9.16.0 | **10.12.0** | +| `@ngrx/store` | 14.x | **17.2.0** | +| `@ngrx/effects` | 14.x | **17.2.0** | +| `@ngrx/entity` | 14.x | **17.2.0** | +| `@ngrx/router-store` | 14.x | **17.2.0** | +| `@ngrx/component-store` | 14.x | **17.2.0** | +| `@ngrx/store-devtools` | 14.x | **17.2.0** | +| `nx` | 15.9.7 | **17.3.2** | +| `@nrwl/angular` | 15.9.7 | **17.3.2** | +| `@angular-devkit/build-angular` | 15.2.9 | **17.3.9** | +| `@angular/cli` | ~15.2.0 | **~17.3.0** | +| `@schematics/angular` | 15.2.9 | **17.3.9** | +| `@angular-eslint/*` | 15.0.0 | **17.5.2** | +| `@angular-builders/custom-webpack` | 15.0.0 | **17.0.0** | +| `ngx-build-plus` | ^15.0.0 | **^17.0.0** | +| `typescript` | 4.9.5 | **5.2.2** | +| `zone.js` | 0.12.0 | **0.14.8** | +| `rxjs` | 7.8.2 | **7.8.2** (unchanged) | + +--- + +## 2. Angular Material MDC Migration + +Angular v15 completely replaced the legacy (non-MDC) Material components with MDC-based equivalents. All `MatLegacy*` classes, modules, tokens, and SCSS mixins were removed. + +### Rule Applied (Strictly) +> **No legacy Angular Material components permitted anywhere.** All `MatLegacy*` imports replaced with MDC equivalents. No workarounds. + +### Files Migrated + +#### SCSS Theme Files +| File | Change | +|---|---| +| `apps/proxy/src/assets/scss/theme/_typography.scss` | `define-legacy-typography-config` → `mat.define-typography-config` with updated level names | +| `apps/proxy/src/assets/scss/theme/_default-theme.scss` | `mat.legacy-core()` → `mat.core()`, `all-legacy-component-themes` → `mat.all-component-themes()`, dark theme uses `mat.all-component-colors()` to avoid duplicate style emissions | + +#### Library Modules +| File | Legacy Import Removed | +|---|---| +| `libs/ui/confirm-dialog/src/lib/ui-confirm-dialog.module.ts` | `MatLegacyButtonModule` | +| `libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.ts` | `MatLegacyDialogRef` | +| `libs/ui/date-range-picker/src/lib/ui-date-range-picker.module.ts` | `MatLegacyMenuModule`, `MatLegacyButtonModule`, `MatLegacyTooltipModule`, `MatLegacyInputModule`, `MatLegacyFormFieldModule` | +| `libs/ui/date-range-picker/src/lib/date-range-picker/date-range-picker.component.ts` | `MatLegacyMenuTrigger` | +| `libs/ui/mat-paginator-goto/src/lib/ui-mat-paginator-goto.module.ts` | `MatLegacyPaginatorModule`, `MatLegacySelectModule`, `MatLegacyFormFieldModule` | +| `libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.ts` | `MatLegacyPaginator`, `LegacyPageEvent`, `MatLegacySelect`, `MAT_LEGACY_SELECT_CONFIG` | +| `libs/ui/search/src/lib/ui-components-search.module.ts` | `MatLegacyButtonModule`, `MatLegacyTooltipModule`, `MatLegacyFormFieldModule`, `MatLegacyInputModule` | +| `libs/ui/search/src/lib/search/search.component.ts` | `LegacyTooltipPosition` | +| `libs/ui/no-record-found/src/lib/ui-no-record-found.module.ts` | `MatLegacyCardModule`, `MatLegacyButtonModule` | +| `libs/ui/no-permission/src/lib/ui-no-permission.module.ts` | `MatLegacyCardModule` | +| `libs/ui/player/src/lib/ui-player.module.ts` | `MatLegacyProgressSpinnerModule`, `MatLegacyButtonModule` | +| `libs/ui/prime-ng-toast/src/lib/ui-prime-ng-toast.module.ts` | `MatLegacyButtonModule`, `MatLegacyTooltipModule` | +| `libs/ui/loader/src/lib/ui-loader.module.ts` | `MatLegacyProgressSpinnerModule` | +| `libs/ui/copy-button/src/lib/ui-copy-button.module.ts` | `MatLegacyButtonModule`, `MatLegacyTooltipModule` | +| `libs/directives/custom-tooltip-directive/src/lib/directives-custom-tooltip-directive.module.ts` | `MatLegacyButtonModule`, `MatLegacyTooltipModule` | +| `libs/shared/src/lib/angular2-query-builder/lib/angular2-query-builder.module.ts` | `MatLegacyButtonModule` | + +#### App Modules +| File | Legacy Imports Removed | +|---|---| +| `apps/proxy/src/app/app.module.ts` | `MAT_LEGACY_FORM_FIELD_DEFAULT_OPTIONS`, `MAT_LEGACY_DIALOG_DEFAULT_OPTIONS`, `MAT_LEGACY_TOOLTIP_DEFAULT_OPTIONS` | +| `apps/proxy/src/app/logs/logs.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/features/features.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/features/create-feature/create-feature.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/users/users.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/create-project/create-project.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/layout/layout.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/register/register.module.ts` | All `MatLegacy*` modules | +| `apps/proxy/src/app/auth/auth.module.ts` | All `MatLegacy*` modules | +| `apps/proxy-auth/src/app/otp/otp.module.ts` | All `MatLegacy*` modules | +| `apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.module.ts` | `MatLegacyButtonModule`, `MatLegacyDialogModule` | + +#### App Component Files +| File | Legacy Imports Removed | +|---|---| +| `apps/proxy/src/app/logs/log/log.component.ts` | `MatLegacyMenuTrigger`, `MatLegacyCheckboxChange`, `LegacyPageEvent`, `MatLegacyDialog`, `MatLegacyDialogRef` | +| `apps/proxy/src/app/users/management/management.component.ts` | `MatLegacyTableDataSource`, `MatLegacyPaginator`, `LegacyPageEvent`, `MatLegacyDialog`, `MatLegacyDialogRef` | +| `apps/proxy/src/app/users/user/user.component.ts` | `LegacyPageEvent` | +| `apps/proxy/src/app/features/feature/feature.component.ts` | `LegacyPageEvent` | +| `apps/proxy/src/app/logs/log-details-side-dialog/log-details-side-dialog.component.ts` | `MatLegacyDialogRef`, `MAT_LEGACY_DIALOG_DATA` | +| `apps/proxy/src/app/features/create-feature/simple-dialog/simple-dialog.component.ts` | `MatLegacyDialogRef`, `MAT_LEGACY_DIALOG_DATA` | +| `apps/proxy/src/app/features/create-feature/create-tax-dialog/create-tax-dialog.component.ts` | `MatLegacyDialogRef`, `MAT_LEGACY_DIALOG_DATA` | +| `apps/proxy/src/app/features/create-feature/create-plan-dialog/create-plan-dialog.component.ts` | `MatLegacyDialogRef`, `MAT_LEGACY_DIALOG_DATA` | +| `apps/proxy/src/app/features/create-feature/create-feature.component.ts` | `MatLegacyDialog`, `MatLegacyDialogRef` | +| `apps/proxy-auth/src/app/otp/organization-details/organization-details.component.ts` | `MatLegacySnackBar` | +| `apps/proxy-auth/src/app/otp/user-profile/user-profile.component.ts` | `MatLegacyDialog`, `MatLegacySnackBar` | +| `apps/proxy-auth/src/app/otp/component/subscription-center/subscription-center.component.ts` | `MAT_LEGACY_DIALOG_DATA`, `MatLegacyDialogRef` | +| `apps/proxy-auth/src/app/otp/user-profile/user-dialog/user-dialog.component.ts` | `MatLegacyDialogRef`, `MAT_LEGACY_DIALOG_DATA` | +| `apps/proxy-auth/src/app/otp/user-management/user-management.component.ts` | `MatLegacyDialog`, `MatLegacyDialogRef`, `MatLegacyTableDataSource`, `MatLegacyPaginator`, `LegacyPageEvent` | +| `apps/proxy-auth/src/app/otp/send-otp/send-otp.component.ts` | `MatLegacyDialog` | + +### MDC Equivalents Reference + +| Legacy | MDC Equivalent | +|---|---| +| `@angular/material/legacy-button` | `@angular/material/button` | +| `@angular/material/legacy-card` | `@angular/material/card` | +| `@angular/material/legacy-checkbox` | `@angular/material/checkbox` | +| `@angular/material/legacy-chips` | `@angular/material/chips` | +| `@angular/material/legacy-dialog` | `@angular/material/dialog` | +| `@angular/material/legacy-form-field` | `@angular/material/form-field` | +| `@angular/material/legacy-input` | `@angular/material/input` | +| `@angular/material/legacy-list` | `@angular/material/list` | +| `@angular/material/legacy-menu` | `@angular/material/menu` | +| `@angular/material/legacy-paginator` | `@angular/material/paginator` | +| `@angular/material/legacy-progress-spinner` | `@angular/material/progress-spinner` | +| `@angular/material/legacy-radio` | `@angular/material/radio` | +| `@angular/material/legacy-select` | `@angular/material/select` | +| `@angular/material/legacy-slide-toggle` | `@angular/material/slide-toggle` | +| `@angular/material/legacy-snack-bar` | `@angular/material/snack-bar` | +| `@angular/material/legacy-table` | `@angular/material/table` | +| `@angular/material/legacy-tabs` | `@angular/material/tabs` | +| `@angular/material/legacy-tooltip` | `@angular/material/tooltip` | +| `MAT_LEGACY_FORM_FIELD_DEFAULT_OPTIONS` | `MAT_FORM_FIELD_DEFAULT_OPTIONS` | +| `MAT_LEGACY_DIALOG_DEFAULT_OPTIONS` | `MAT_DIALOG_DEFAULT_OPTIONS` | +| `MAT_LEGACY_DIALOG_DATA` | `MAT_DIALOG_DATA` | +| `MAT_LEGACY_TOOLTIP_DEFAULT_OPTIONS` | `MAT_TOOLTIP_DEFAULT_OPTIONS` | +| `MAT_LEGACY_SELECT_CONFIG` | `MAT_SELECT_CONFIG` | +| `MatLegacyDialogRef` | `MatDialogRef` | +| `LegacyPageEvent` | `PageEvent` | +| `MatLegacyMenuTrigger` | `MatMenuTrigger` | +| `MatLegacyTableDataSource` | `MatTableDataSource` | +| `LegacyTooltipPosition` | `TooltipPosition` | +| `mat.legacy-core()` | `mat.core()` | +| `mat.all-legacy-component-themes()` | `mat.all-component-themes()` | +| `mat.all-legacy-component-typographies()` | `mat.all-component-typographies()` | +| `mat.define-legacy-typography-config()` | `mat.define-typography-config()` | + +--- + +## 3. v14 → v15 Migration + +### What Changed + +- All Angular core packages: `14.2.x` → `15.2.9` +- Angular Material: full MDC migration (see Section 2) +- Nx workspace: `15.9.7` (already at v15 — no hop needed) +- TypeScript: `4.9.5` (within supported range) +- Zone.js: `0.12.0` (within v15 supported range) + +### Automated Migrations Run +```bash +npx nx migrate @angular/core@15 +npx nx migrate --run-migrations +``` + +### Code Changes Applied +- All `MatLegacy*` imports replaced project-wide (Section 2) +- SCSS theme migrated from legacy to MDC mixins +- No `enableIvy` was present — no change needed +- No `DATE_PIPE_DEFAULT_TIMEZONE` usage — no change needed +- No `RouterLinkWithHref` usage — no change needed +- `@keyframes` in component SCSS files: Angular v15 auto-scopes keyframe names to the component. All keyframe usages in this project are in component SCSS files (safe — they do not need to be referenced from TypeScript by name) or created programmatically via `renderer.createElement('style')` (also safe per the official guide) + +--- + +## 4. v15 → v16 Migration + +### What Changed + +| Package | v15 | v16 | +|---|---|---| +| `@angular/core` et al. | 15.2.9 | 16.2.9 | +| `@angular/material` + `cdk` | 15.2.9 | 16.2.9 | +| `@ngrx/*` | 15.3.0 | 16.3.0 | +| `@angular/fire` | 7.5.0 → | **16.0.0** | +| `firebase` | 9.16.0 → | **10.7.1** | +| `typescript` | 4.9.5 | 5.1.6 | +| `zone.js` | 0.12.0 | 0.13.3 | +| `nx` / `@nrwl/*` | 15.9.7 | 16.10.0 | +| `@angular-builders/custom-webpack` | 15.0.0 | 16.0.0 | +| `@angular-devkit/build-angular` | 15.2.9 | 16.2.9 | +| `@angular-eslint/*` | 15.0.0 | 16.3.0 | + +### Automated Migrations Run +```bash +npx nx migrate @angular/core@16 +npx nx migrate --run-migrations +# → Updated guard files: removed deprecated CanActivate/Resolve interface implementations +``` + +### Code Changes Applied + +#### `@nrwl/cli` removed (deprecated at v16+) +The `@nrwl/cli` package does not exist at Nx v16. All build scripts updated to use `./node_modules/.bin/nx` directly: + +```json +// Before +"start": "node --max_old_space_size=4096 ./node_modules/@nrwl/cli/bin/nx serve ..." + +// After +"start": "node --max_old_space_size=4096 ./node_modules/.bin/nx serve ..." +``` + +#### `nx.json` — Nx Cloud runner removed +`@nrwl/nx-cloud` was removed from devDependencies and `nx.json` switched to local runner: +```json +// Before +"runner": "@nrwl/nx-cloud" + +// After +"runner": "nx/tasks-runners/default" +``` + +#### `@angular/fire` major upgrade (7.5.0 → 16.0.0) +`@angular/fire@7.5.0` bundles its own copy of `rxjs` which caused TypeScript type conflicts with the workspace `rxjs` at Angular v16+. Upgraded to `@angular/fire@16.0.0` which does not bundle rxjs. + +**Note:** The `@angular/fire/compat` API is still used and is still available in v16. No Firebase code changes were made. + +#### Guard interfaces removed (Nx auto-migration) +The Nx migration automatically removed deprecated `implements CanActivate` / `implements Resolve` clauses from guard classes: +- `apps/proxy/src/app/auth/authguard/index.ts` +- `apps/proxy/src/app/guard/project.guard.ts` + +--- + +## 5. v16 → v17 Migration + +### What Changed + +| Package | v16 | v17 | +|---|---|---| +| `@angular/core` et al. | 16.2.9 | 17.3.9 | +| `@angular/material` + `cdk` | 16.2.9 | 17.3.9 | +| `@ngrx/*` | 16.3.0 | 17.2.0 | +| `@angular/fire` | 16.0.0 → | **17.1.0** | +| `firebase` | 10.7.1 → | **10.12.0** | +| `typescript` | 5.1.6 | **5.2.2** | +| `zone.js` | 0.13.3 | **0.14.8** | +| `nx` / `@nrwl/*` | 16.10.0 | 17.3.2 | +| `@angular-builders/custom-webpack` | 16.0.0 | 17.0.0 | +| `@angular-devkit/build-angular` | 16.2.9 | 17.3.9 | +| `@angular-eslint/*` | 16.3.0 | 17.5.2 | + +### Automated Migrations Run +```bash +npx nx migrate @angular/core@17 +npx nx migrate --run-migrations +# → No automatic code changes needed (workspace already up to date) +``` + +### Code Changes Applied + +#### Zone.js deep import fixed +`apps/proxy-auth/src/main.element.ts` used a deprecated `zone.js/dist/` path which was removed in zone.js 0.14.x: + +```typescript +// Before (broken in zone.js 0.14.x — dist/ folder removed) +import 'zone.js/dist/webapis-shadydom.js'; + +// After (correct bundles/ path for zone.js 0.14.x) +import 'zone.js/bundles/webapis-shadydom.umd.js'; +``` + +#### `@angular/fire` major upgrade (16.0.0 → 17.1.0) +Same pattern as v16 — `@angular/fire@16` bundles its own rxjs which conflicts at Angular v17. Upgraded to `@angular/fire@17.1.0`. + +--- + +## 6. Full Official Guide Compliance Checklist + +### v14 → v15 Guide + +| Item | Status | Notes | +|---|---|---| +| Node.js supported version | ✅ | Environment requirement only | +| TypeScript 4.8+ | ✅ | Using 5.2.2 | +| `ng update @angular/core@15 @angular/cli@15` | ✅ | Done | +| `ng update @angular/material@15` | ✅ | Full MDC migration done | +| `@keyframes` scoping in components | ✅ | All usages are in component SCSS (no TS string refs) or programmatic renderer injection | +| Remove `enableIvy` from tsconfig | ✅ | Not present — no change needed | +| Decorators on base classes with DI | ✅ | No un-decorated base class with child DI found | +| `setDisabledState` / `ControlValueAccessor` opt-out | ✅ | Not needed | +| `canParse` from `@angular/localize/tools` | ✅ | Not used | +| `ActivatedRouteSnapshot.title` required | ✅ | Guards use `ActivatedRouteSnapshot` as param type only | +| `relativeLinkResolution` removed | ✅ | Not configured | +| `DATE_PIPE_DEFAULT_TIMEZONE` → `DATE_PIPE_DEFAULT_OPTIONS` | ✅ | Not used | +| ` -
    -
    -
    -

    - Sales proxy -

    -
    -

    {{ data?.accountManagerDetail?.name }}

    - A/C Manager -
    -
    - - - -
    -
    diff --git a/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.scss b/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.scss deleted file mode 100644 index c1ec0168..00000000 --- a/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.scss +++ /dev/null @@ -1,22 +0,0 @@ -:host { - height: 100%; - display: flex; - iframe { - width: 100%; - height: 100%; - border: 0px; - } - .calendly-content { - @media only screen and (max-width: 768px) { - flex-direction: column; - } - } - .calendly-info { - width: 300px; - background-color: var(--color-common-graph-bg); - @media only screen and (max-width: 768px) { - width: 100%; - padding: 10px; - } - } -} diff --git a/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.ts b/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.ts deleted file mode 100644 index 82cda1ec..00000000 --- a/libs/ui/calendly-dialog/src/lib/calendly-dialog/calendly-dialog.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { BaseComponent } from '@proxy/ui/base-component'; -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; - -@Component({ - selector: 'proxy-calendly-dialog', - templateUrl: './calendly-dialog.component.html', - styleUrls: ['./calendly-dialog.component.scss'], -}) -export class CalendlyDialogComponent extends BaseComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - private toast: PrimeNgToastService - ) { - super(); - } - - ngOnInit(): void { - this.loadExternalStyles('https://assets.calendly.com/assets/external/widget.css'); - - let head = document.getElementsByTagName('head')[0]; - let checkoutScript = document.createElement('script'); - checkoutScript.type = 'text/javascript'; - checkoutScript.onload; - checkoutScript.src = 'https://assets.calendly.com/assets/external/widget.js'; - head.appendChild(checkoutScript); - } - - private loadExternalStyles(styleUrl: string) { - return new Promise((resolve, reject) => { - const styleElement = document.createElement('link'); - styleElement.href = styleUrl; - styleElement.onload = resolve; - document.head.appendChild(styleElement); - }); - } - public copyDetails() { - this.toast.success('Copied!'); - } -} diff --git a/libs/ui/calendly-dialog/src/lib/ui-components-calendly-dialog.module.ts b/libs/ui/calendly-dialog/src/lib/ui-components-calendly-dialog.module.ts deleted file mode 100644 index 6a17d002..00000000 --- a/libs/ui/calendly-dialog/src/lib/ui-components-calendly-dialog.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CalendlyDialogComponent } from './calendly-dialog/calendly-dialog.component'; -import { PipesSafeUrlPipeModule } from '@proxy/pipes/SafeURLPipe'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatIconModule } from '@angular/material/icon'; -import { MatListModule } from '@angular/material/list'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatButtonModule } from '@angular/material/button'; -import { ClipboardModule } from '@angular/cdk/clipboard'; - -@NgModule({ - declarations: [CalendlyDialogComponent], - imports: [ - CommonModule, - PipesSafeUrlPipeModule, - MatDialogModule, - MatIconModule, - MatListModule, - MatTooltipModule, - MatButtonModule, - ClipboardModule, - ], - exports: [CalendlyDialogComponent], -}) -export class UiComponentsCalendlyDialogModule {} diff --git a/libs/ui/calendly-dialog/tsconfig.json b/libs/ui/calendly-dialog/tsconfig.json deleted file mode 100644 index 18bcf55f..00000000 --- a/libs/ui/calendly-dialog/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/calendly-dialog/tsconfig.lib.json b/libs/ui/calendly-dialog/tsconfig.lib.json deleted file mode 100644 index 3f2d9700..00000000 --- a/libs/ui/calendly-dialog/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/cmd-enter-preference/.eslintrc.json b/libs/ui/cmd-enter-preference/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/cmd-enter-preference/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/cmd-enter-preference/README.md b/libs/ui/cmd-enter-preference/README.md deleted file mode 100644 index 41865a97..00000000 --- a/libs/ui/cmd-enter-preference/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-cmd-enter-preference - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/cmd-enter-preference/project.json b/libs/ui/cmd-enter-preference/project.json deleted file mode 100644 index f9ca0310..00000000 --- a/libs/ui/cmd-enter-preference/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-cmd-enter-preference", - "projectType": "library", - "sourceRoot": "libs/ui/cmd-enter-preference/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/cmd-enter-preference/**/*.ts", "libs/ui/cmd-enter-preference/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/cmd-enter-preference/src/index.ts b/libs/ui/cmd-enter-preference/src/index.ts deleted file mode 100644 index f5aad72d..00000000 --- a/libs/ui/cmd-enter-preference/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-cmd-enter-preference.module'; -export * from './lib/cmd-enter-preference/cmd-enter-preference.service'; diff --git a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.html b/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.html deleted file mode 100644 index 029327b7..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.html +++ /dev/null @@ -1,9 +0,0 @@ -
    - - {{ isCmdEnter ? buttonName + ' +' : '' }} Enter to - - -
    diff --git a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.scss b/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.scss deleted file mode 100644 index 0401d4cf..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -.cmd-enter { - font-size: 0.75em; - color: var(--color-common-grey); - cursor: pointer; - .switch { - text-decoration: underline; - &:hover { - color: var(--color-common-black); - } - } -} diff --git a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.ts b/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.ts deleted file mode 100644 index 4fbf9373..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { takeUntil } from 'rxjs/operators'; -import { CmdEnterPreferenceService } from './cmd-enter-preference.service'; - -@Component({ - selector: 'proxy-cmd-enter-preference', - templateUrl: './cmd-enter-preference.component.html', - styleUrls: ['./cmd-enter-preference.component.scss'], -}) -export class CmdEnterPreferenceComponent extends BaseComponent implements OnInit, OnDestroy { - @Input() type: string; - public isCmdEnter: boolean; - public buttonName: string; - - constructor(private cmdEnterPreferenceService: CmdEnterPreferenceService) { - super(); - } - - ngOnInit(): void { - this.cmdEnterPreferenceService.isCmdEnter$ - .pipe(takeUntil(this.destroy$)) - .subscribe((value) => (this.isCmdEnter = value)); - this.buttonName = navigator.userAgent.indexOf('Mac') !== -1 ? 'Cmd' : 'Ctrl'; - } - - ngOnDestroy(): void { - super.ngOnDestroy(); - } - - public toggleCmdEnter() { - this.cmdEnterPreferenceService.setPreference(!this.isCmdEnter); - } -} diff --git a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.service.ts b/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.service.ts deleted file mode 100644 index 293a4fd3..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/cmd-enter-preference.service.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable, BehaviorSubject } from 'rxjs'; - -@Injectable({ - providedIn: 'root', -}) -export class CmdEnterPreferenceService { - constructor() {} - - private isCmdEnterSource: BehaviorSubject = new BehaviorSubject( - localStorage.getItem('isCmdEnter') ? JSON.parse(localStorage.getItem('isCmdEnter')) : true - ); - public isCmdEnter$: Observable = this.isCmdEnterSource.asObservable(); - - public setPreference(value) { - this.isCmdEnterSource.next(value); - localStorage.setItem('isCmdEnter', JSON.stringify(value)); - } -} diff --git a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/index.ts b/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/index.ts deleted file mode 100644 index 3300fcb8..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/cmd-enter-preference/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './cmd-enter-preference.component'; -export * from './cmd-enter-preference.service'; diff --git a/libs/ui/cmd-enter-preference/src/lib/ui-cmd-enter-preference.module.ts b/libs/ui/cmd-enter-preference/src/lib/ui-cmd-enter-preference.module.ts deleted file mode 100644 index be24be02..00000000 --- a/libs/ui/cmd-enter-preference/src/lib/ui-cmd-enter-preference.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CmdEnterPreferenceComponent, CmdEnterPreferenceService } from './cmd-enter-preference'; -import { MatTooltipModule } from '@angular/material/tooltip'; - -@NgModule({ - declarations: [CmdEnterPreferenceComponent], - imports: [CommonModule, MatTooltipModule], - exports: [CmdEnterPreferenceComponent], - providers: [CmdEnterPreferenceService], -}) -export class UiCmdEnterPreferenceModule {} diff --git a/libs/ui/cmd-enter-preference/tsconfig.json b/libs/ui/cmd-enter-preference/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/cmd-enter-preference/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/cmd-enter-preference/tsconfig.lib.json b/libs/ui/cmd-enter-preference/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/cmd-enter-preference/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/color-functions/.browserslistrc b/libs/ui/color-functions/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/libs/ui/color-functions/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/libs/ui/color-functions/.eslintrc.json b/libs/ui/color-functions/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/color-functions/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/color-functions/README.md b/libs/ui/color-functions/README.md deleted file mode 100644 index 14fc6a43..00000000 --- a/libs/ui/color-functions/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-color-functions - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/color-functions/jest.config.ts b/libs/ui/color-functions/jest.config.ts deleted file mode 100644 index bba3d209..00000000 --- a/libs/ui/color-functions/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'ui-color-functions', - preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - coverageDirectory: '../../../coverage/libs/ui/color-functions', -}; diff --git a/libs/ui/color-functions/project.json b/libs/ui/color-functions/project.json deleted file mode 100644 index cc21858a..00000000 --- a/libs/ui/color-functions/project.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "ui-color-functions", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/color-functions/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/color-functions/src/**/*.ts", "libs/ui/color-functions/src/**/*.html"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/color-functions"], - "options": { - "tsConfig": "libs/ui/color-functions/tsconfig.lib.json", - "jestConfig": "libs/ui/color-functions/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/color-functions/src/index.ts b/libs/ui/color-functions/src/index.ts deleted file mode 100644 index fcc33960..00000000 --- a/libs/ui/color-functions/src/index.ts +++ /dev/null @@ -1,55 +0,0 @@ -export function hexToRgbA(hex, alphaValue = '1') { - let c; - let hexColor = hex.includes('rgb') ? `#${rgba2hex(hex).hex}` : hex; - alphaValue = hex.includes('rgb') ? rgba2hex(hex).alpha : alphaValue; - if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hexColor)) { - c = hexColor.substring(1).split(''); - if (c.length === 3) { - c = [c[0], c[0], c[1], c[1], c[2], c[2]]; - } - c = '0x' + c.join(''); - return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ', ' + alphaValue + ')'; - } - throw new Error('Bad Hex'); -} - -export function shadeColor(color, percent) { - const num = parseInt(color.replace('#', ''), 16), - amt = Math.round(2.55 * percent), - R = (num >> 16) + amt, - B = ((num >> 8) & 0x00ff) + amt, - G = (num & 0x0000ff) + amt; - - return ( - '#' + - ( - 0x1000000 + - (R < 255 ? (R < 1 ? 0 : R) : 255) * 0x10000 + - (B < 255 ? (B < 1 ? 0 : B) : 255) * 0x100 + - (G < 255 ? (G < 1 ? 0 : G) : 255) - ) - .toString(16) - .slice(1) - ); -} - -export function invertTextHex(hexcolor) { - hexcolor = hexcolor.replace('#', ''); - const r = parseInt(hexcolor.substr(0, 2), 16); - const g = parseInt(hexcolor.substr(2, 2), 16); - const b = parseInt(hexcolor.substr(4, 2), 16); - const yiq = (r * 299 + g * 587 + b * 114) / 1000; - return yiq >= 128 ? 'black' : 'white'; -} - -export function rgba2hex(orig) { - var rgb = orig.replace(/\s/g, '').match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i), - alpha = ((rgb && rgb[4]) || '').trim(), - hex = rgb - ? (rgb[1] | (1 << 8)).toString(16).slice(1) + - (rgb[2] | (1 << 8)).toString(16).slice(1) + - (rgb[3] | (1 << 8)).toString(16).slice(1) - : orig; - - return { hex, alpha: alpha ? alpha : '1' }; -} diff --git a/libs/ui/color-functions/tsconfig.json b/libs/ui/color-functions/tsconfig.json deleted file mode 100644 index b8b7b3ce..00000000 --- a/libs/ui/color-functions/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/libs/ui/color-functions/tsconfig.lib.json b/libs/ui/color-functions/tsconfig.lib.json deleted file mode 100644 index 207c41bf..00000000 --- a/libs/ui/color-functions/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/color-functions/tsconfig.spec.json b/libs/ui/color-functions/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/color-functions/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/color-picker/.eslintrc.json b/libs/ui/color-picker/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/color-picker/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/color-picker/README.md b/libs/ui/color-picker/README.md deleted file mode 100644 index 6edfd36b..00000000 --- a/libs/ui/color-picker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-color-picker - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/color-picker/project.json b/libs/ui/color-picker/project.json deleted file mode 100644 index f47955d6..00000000 --- a/libs/ui/color-picker/project.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "ui-color-picker", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/color-picker/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/color-picker/src/**/*.ts", "libs/ui/color-picker/src/**/*.html"] - }, - "outputs": ["{options.outputFile}"] - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/color-picker"], - "options": { - "tsConfig": "libs/ui/color-picker/tsconfig.lib.json", - "jestConfig": "libs/ui/color-picker/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/color-picker/src/index.ts b/libs/ui/color-picker/src/index.ts deleted file mode 100644 index 1a409110..00000000 --- a/libs/ui/color-picker/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-color-picker.module'; diff --git a/libs/ui/color-picker/src/lib/color-picker/color-picker.directive.ts b/libs/ui/color-picker/src/lib/color-picker/color-picker.directive.ts deleted file mode 100644 index dce7adc6..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/color-picker.directive.ts +++ /dev/null @@ -1,344 +0,0 @@ -import { - ApplicationRef, - ComponentFactoryResolver, - ComponentRef, - Directive, - ElementRef, - EmbeddedViewRef, - EventEmitter, - HostListener, - Injector, - Input, - OnChanges, - OnDestroy, - Output, - ViewContainerRef, -} from '@angular/core'; - -import { ColorPickerService } from './color-picker.service'; -import { ColorPickerComponent } from './component/color-picker.component'; - -import { AlphaChannel, ColorMode, OutputFormat } from './helpers'; - -@Directive({ - selector: '[colorPicker]', - exportAs: 'ngxColorPicker', -}) -export class ColorPickerDirective implements OnChanges, OnDestroy { - private dialog: any; - - private dialogCreated: boolean = false; - private ignoreChanges: boolean = false; - - private cmpRef: ComponentRef; - private viewAttachedToAppRef: boolean = false; - - @Input() colorPicker: string; - - @Input() cpWidth: string = '230px'; - @Input() cpHeight: string = 'auto'; - - @Input() cpToggle: boolean = false; - @Input() cpDisabled: boolean = false; - - @Input() cpIgnoredElements: any = []; - - @Input() cpFallbackColor: string = ''; - - @Input() cpColorMode: ColorMode = 'color'; - - @Input() cpCmykEnabled: boolean = false; - - @Input() cpOutputFormat: OutputFormat = 'auto'; - @Input() cpAlphaChannel: AlphaChannel = 'enabled'; - - @Input() cpDisableInput: boolean = false; - - @Input() cpDialogDisplay: string = 'popup'; - - @Input() cpSaveClickOutside: boolean = true; - @Input() cpCloseClickOutside: boolean = true; - - @Input() cpUseRootViewContainer: boolean = false; - - @Input() cpPosition: string = 'auto'; - @Input() cpPositionOffset: string = '0%'; - @Input() cpPositionRelativeToArrow: boolean = false; - - @Input() cpOKButton: boolean = false; - @Input() cpOKButtonText: string = 'OK'; - @Input() cpOKButtonClass: string = 'cp-ok-button-class'; - - @Input() cpCancelButton: boolean = false; - @Input() cpCancelButtonText: string = 'Cancel'; - @Input() cpCancelButtonClass: string = 'cp-cancel-button-class'; - - @Input() cpPresetLabel: string = 'Preset colors'; - @Input() cpPresetColors: string[]; - @Input() cpPresetColorsClass: string = 'cp-preset-colors-class'; - @Input() cpMaxPresetColorsLength: number = 6; - - @Input() cpPresetEmptyMessage: string = 'No colors added'; - @Input() cpPresetEmptyMessageClass: string = 'preset-empty-message'; - - @Input() cpAddColorButton: boolean = false; - @Input() cpAddColorButtonText: string = 'Add color'; - @Input() cpAddColorButtonClass: string = 'cp-add-color-button-class'; - - @Input() cpRemoveColorButtonClass: string = 'cp-remove-color-button-class'; - - @Output() cpInputChange = new EventEmitter<{ input: string; value: number | string; color: string }>(true); - - @Output() cpToggleChange = new EventEmitter(true); - - @Output() cpSliderChange = new EventEmitter<{ slider: string; value: string | number; color: string }>(true); - @Output() cpSliderDragEnd = new EventEmitter<{ slider: string; color: string }>(true); - @Output() cpSliderDragStart = new EventEmitter<{ slider: string; color: string }>(true); - - @Output() colorPickerOpen = new EventEmitter(true); - @Output() colorPickerClose = new EventEmitter(true); - - @Output() colorPickerCancel = new EventEmitter(true); - @Output() colorPickerSelect = new EventEmitter(true); - @Output() colorPickerChange = new EventEmitter(false); - - @Output() cpCmykColorChange = new EventEmitter(true); - - @Output() cpPresetColorsChange = new EventEmitter(true); - - @HostListener('click') handleClick(): void { - this.inputFocus(); - } - - @HostListener('focus') handleFocus(): void { - this.inputFocus(); - } - - @HostListener('input', ['$event']) handleInput(event: any): void { - this.inputChange(event); - } - - constructor( - private injector: Injector, - private cfr: ComponentFactoryResolver, - private appRef: ApplicationRef, - private vcRef: ViewContainerRef, - private elRef: ElementRef, - private _service: ColorPickerService - ) {} - - ngOnDestroy(): void { - if (this.cmpRef != null) { - if (this.viewAttachedToAppRef) { - this.appRef.detachView(this.cmpRef.hostView); - } - - this.cmpRef.destroy(); - - this.cmpRef = null; - this.dialog = null; - } - } - - ngOnChanges(changes: any): void { - if (changes.cpToggle && !this.cpDisabled) { - if (changes.cpToggle.currentValue) { - this.openDialog(); - } else if (!changes.cpToggle.currentValue) { - this.closeDialog(); - } - } - - if (changes.colorPicker) { - if (this.dialog && !this.ignoreChanges) { - if (this.cpDialogDisplay === 'inline') { - this.dialog.setInitialColor(changes.colorPicker.currentValue); - } - - this.dialog.setColorFromString(changes.colorPicker.currentValue, false); - - if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') { - this.cmpRef.changeDetectorRef.detectChanges(); - } - } - - this.ignoreChanges = false; - } - - if (changes.cpPresetLabel || changes.cpPresetColors) { - if (this.dialog) { - this.dialog.setPresetConfig(this.cpPresetLabel, this.cpPresetColors); - } - } - } - - public openDialog(): void { - if (!this.dialogCreated) { - let vcRef = this.vcRef; - - this.dialogCreated = true; - this.viewAttachedToAppRef = false; - - if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') { - const classOfRootComponent = this.appRef.componentTypes[0]; - const appInstance = this.injector.get(classOfRootComponent, Injector.NULL); - - if (appInstance !== Injector.NULL) { - vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef; - - if (vcRef === this.vcRef) { - console.warn( - 'You are using cpUseRootViewContainer, ' + - 'but the root component is not exposing viewContainerRef!' + - "Please expose it by adding 'public vcRef: ViewContainerRef' to the constructor." - ); - } - } else { - this.viewAttachedToAppRef = true; - } - } - - if (this.viewAttachedToAppRef) { - this.cmpRef = this.vcRef.createComponent(ColorPickerComponent, { injector: this.injector }); - this.appRef.attachView(this.cmpRef.hostView); - document.body.appendChild((this.cmpRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement); - } else { - const injector = Injector.create({ - providers: [], - parent: this.vcRef.injector, - }); - this.cmpRef = this.vcRef.createComponent(ColorPickerComponent, { - index: 0, - injector, - projectableNodes: [], - }); - } - - this.cmpRef.instance.setupDialog( - this, - this.elRef, - this.colorPicker, - this.cpWidth, - this.cpHeight, - this.cpDialogDisplay, - this.cpFallbackColor, - this.cpColorMode, - this.cpCmykEnabled, - this.cpAlphaChannel, - this.cpOutputFormat, - this.cpDisableInput, - this.cpIgnoredElements, - this.cpSaveClickOutside, - this.cpCloseClickOutside, - this.cpUseRootViewContainer, - this.cpPosition, - this.cpPositionOffset, - this.cpPositionRelativeToArrow, - this.cpPresetLabel, - this.cpPresetColors, - this.cpPresetColorsClass, - this.cpMaxPresetColorsLength, - this.cpPresetEmptyMessage, - this.cpPresetEmptyMessageClass, - this.cpOKButton, - this.cpOKButtonClass, - this.cpOKButtonText, - this.cpCancelButton, - this.cpCancelButtonClass, - this.cpCancelButtonText, - this.cpAddColorButton, - this.cpAddColorButtonClass, - this.cpAddColorButtonText, - this.cpRemoveColorButtonClass - ); - - this.dialog = this.cmpRef.instance; - - if (this.vcRef !== vcRef) { - this.cmpRef.changeDetectorRef.detectChanges(); - } - } else if (this.dialog) { - this.dialog.openDialog(this.colorPicker); - } - } - - public closeDialog(): void { - if (this.dialog && this.cpDialogDisplay === 'popup') { - this.dialog.closeDialog(); - } - } - - public cmykChanged(value: string): void { - this.cpCmykColorChange.emit(value); - } - - public stateChanged(state: boolean): void { - this.cpToggleChange.emit(state); - - if (state) { - this.colorPickerOpen.emit(this.colorPicker); - } else { - this.colorPickerClose.emit(this.colorPicker); - } - } - - public colorChanged(value: string, ignore: boolean = true): void { - this.ignoreChanges = ignore; - - this.colorPickerChange.emit(value); - } - - public colorSelected(value: string): void { - this.colorPickerSelect.emit(value); - } - - public colorCanceled(): void { - this.colorPickerCancel.emit(); - } - - public inputFocus(): void { - const element = this.elRef.nativeElement; - - const ignored = this.cpIgnoredElements.filter((item: any) => item === element); - - if (!this.cpDisabled && !ignored.length) { - if (typeof document !== 'undefined' && element === document.activeElement) { - this.openDialog(); - } else if (!this.dialog || !this.dialog.show) { - this.openDialog(); - } else { - this.closeDialog(); - } - } - } - - public inputChange(event: any): void { - if (this.dialog) { - this.dialog.setColorFromString(event.target.value, true); - } else { - this.colorPicker = event.target.value; - - this.colorPickerChange.emit(this.colorPicker); - } - } - - public inputChanged(event: any): void { - this.cpInputChange.emit(event); - } - - public sliderChanged(event: any): void { - this.cpSliderChange.emit(event); - } - - public sliderDragEnd(event: { slider: string; color: string }): void { - this.cpSliderDragEnd.emit(event); - } - - public sliderDragStart(event: { slider: string; color: string }): void { - this.cpSliderDragStart.emit(event); - } - - public presetColorsChanged(value: any[]): void { - this.cpPresetColorsChange.emit(value); - } -} diff --git a/libs/ui/color-picker/src/lib/color-picker/color-picker.module.ts b/libs/ui/color-picker/src/lib/color-picker/color-picker.module.ts deleted file mode 100644 index 5889a4b4..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/color-picker.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -import { TextDirective, SliderDirective } from './helpers'; - -import { ColorPickerService } from './color-picker.service'; -import { ColorPickerComponent } from './component/color-picker.component'; -import { ColorPickerDirective } from './color-picker.directive'; - -@NgModule({ - imports: [CommonModule], - exports: [ColorPickerDirective], - providers: [ColorPickerService], - declarations: [ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective], -}) -export class LibColorPickerModule {} diff --git a/libs/ui/color-picker/src/lib/color-picker/color-picker.service.ts b/libs/ui/color-picker/src/lib/color-picker/color-picker.service.ts deleted file mode 100644 index 9546e637..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/color-picker.service.ts +++ /dev/null @@ -1,311 +0,0 @@ -import { Injectable } from '@angular/core'; - -import { Cmyk, Rgba, Hsla, Hsva } from './formats'; - -import { ColorPickerComponent } from './component/color-picker.component'; - -@Injectable() -export class ColorPickerService { - private active: ColorPickerComponent | null = null; - - constructor() {} - - public setActive(active: ColorPickerComponent | null): void { - if (this.active && this.active !== active && this.active.cpDialogDisplay !== 'inline') { - this.active.closeDialog(); - } - - this.active = active; - } - - public hsva2hsla(hsva: Hsva): Hsla { - const h = hsva.h, - s = hsva.s, - v = hsva.v, - a = hsva.a; - - if (v === 0) { - return new Hsla(h, 0, 0, a); - } else if (s === 0 && v === 1) { - return new Hsla(h, 1, 1, a); - } else { - const l = (v * (2 - s)) / 2; - - return new Hsla(h, (v * s) / (1 - Math.abs(2 * l - 1)), l, a); - } - } - - public hsla2hsva(hsla: Hsla): Hsva { - const h = Math.min(hsla.h, 1), - s = Math.min(hsla.s, 1); - const l = Math.min(hsla.l, 1), - a = Math.min(hsla.a, 1); - - if (l === 0) { - return new Hsva(h, 0, 0, a); - } else { - const v = l + (s * (1 - Math.abs(2 * l - 1))) / 2; - - return new Hsva(h, (2 * (v - l)) / v, v, a); - } - } - - public hsvaToRgba(hsva: Hsva): Rgba { - let r: number, g: number, b: number; - - const h = hsva.h, - s = hsva.s, - v = hsva.v, - a = hsva.a; - - const i = Math.floor(h * 6); - const f = h * 6 - i; - const p = v * (1 - s); - const q = v * (1 - f * s); - const t = v * (1 - (1 - f) * s); - - switch (i % 6) { - case 0: - (r = v), (g = t), (b = p); - break; - case 1: - (r = q), (g = v), (b = p); - break; - case 2: - (r = p), (g = v), (b = t); - break; - case 3: - (r = p), (g = q), (b = v); - break; - case 4: - (r = t), (g = p), (b = v); - break; - case 5: - (r = v), (g = p), (b = q); - break; - default: - (r = 0), (g = 0), (b = 0); - } - - return new Rgba(r, g, b, a); - } - - public cmykToRgb(cmyk: Cmyk): Rgba { - const r = (1 - cmyk.c) * (1 - cmyk.k); - const g = (1 - cmyk.m) * (1 - cmyk.k); - const b = (1 - cmyk.y) * (1 - cmyk.k); - - return new Rgba(r, g, b, cmyk.a); - } - - public rgbaToCmyk(rgba: Rgba): Cmyk { - const k: number = 1 - Math.max(rgba.r, rgba.g, rgba.b); - - if (k === 1) { - return new Cmyk(0, 0, 0, 1, rgba.a); - } else { - const c = (1 - rgba.r - k) / (1 - k); - const m = (1 - rgba.g - k) / (1 - k); - const y = (1 - rgba.b - k) / (1 - k); - - return new Cmyk(c, m, y, k, rgba.a); - } - } - - public rgbaToHsva(rgba: Rgba): Hsva { - let h: number, s: number; - - const r = Math.min(rgba.r, 1), - g = Math.min(rgba.g, 1); - const b = Math.min(rgba.b, 1), - a = Math.min(rgba.a, 1); - - const max = Math.max(r, g, b), - min = Math.min(r, g, b); - - const v: number = max, - d = max - min; - - s = max === 0 ? 0 : d / max; - - if (max === min) { - h = 0; - } else { - switch (max) { - case r: - h = (g - b) / d + (g < b ? 6 : 0); - break; - case g: - h = (b - r) / d + 2; - break; - case b: - h = (r - g) / d + 4; - break; - default: - h = 0; - } - - h /= 6; - } - - return new Hsva(h, s, v, a); - } - - public rgbaToHex(rgba: Rgba, allowHex8?: boolean): string { - /* tslint:disable:no-bitwise */ - let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1); - - if (allowHex8) { - hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1); - } - /* tslint:enable:no-bitwise */ - - return hex; - } - - public normalizeCMYK(cmyk: Cmyk): Cmyk { - return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a); - } - - public denormalizeCMYK(cmyk: Cmyk): Cmyk { - return new Cmyk( - Math.floor(cmyk.c * 100), - Math.floor(cmyk.m * 100), - Math.floor(cmyk.y * 100), - Math.floor(cmyk.k * 100), - cmyk.a - ); - } - - public denormalizeRGBA(rgba: Rgba): Rgba { - return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a); - } - - public stringToHsva(colorString: string = '', allowHex8: boolean = false): Hsva | null { - let hsva: Hsva | null = null; - - colorString = (colorString || '').toLowerCase(); - - const stringParsers = [ - { - re: /(rgb)a?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*%?,\s*(\d{1,3})\s*%?(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - parse: function (execResult: any) { - return new Rgba( - parseInt(execResult[2], 10) / 255, - parseInt(execResult[3], 10) / 255, - parseInt(execResult[4], 10) / 255, - isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]) - ); - }, - }, - { - re: /(hsl)a?\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, - parse: function (execResult: any) { - return new Hsla( - parseInt(execResult[2], 10) / 360, - parseInt(execResult[3], 10) / 100, - parseInt(execResult[4], 10) / 100, - isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]) - ); - }, - }, - ]; - - if (allowHex8) { - stringParsers.push({ - re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/, - parse: function (execResult: any) { - return new Rgba( - parseInt(execResult[1], 16) / 255, - parseInt(execResult[2], 16) / 255, - parseInt(execResult[3], 16) / 255, - parseInt(execResult[4] || 'FF', 16) / 255 - ); - }, - }); - } else { - stringParsers.push({ - re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/, - parse: function (execResult: any) { - return new Rgba( - parseInt(execResult[1], 16) / 255, - parseInt(execResult[2], 16) / 255, - parseInt(execResult[3], 16) / 255, - 1 - ); - }, - }); - } - - stringParsers.push({ - re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/, - parse: function (execResult: any) { - return new Rgba( - parseInt(execResult[1] + execResult[1], 16) / 255, - parseInt(execResult[2] + execResult[2], 16) / 255, - parseInt(execResult[3] + execResult[3], 16) / 255, - 1 - ); - }, - }); - - for (const key in stringParsers) { - if (stringParsers.hasOwnProperty(key)) { - const parser = stringParsers[key]; - - const match = parser.re.exec(colorString), - color: any = match && parser.parse(match); - - if (color) { - if (color instanceof Rgba) { - hsva = this.rgbaToHsva(color); - } else if (color instanceof Hsla) { - hsva = this.hsla2hsva(color); - } - - return hsva; - } - } - } - - return hsva; - } - - public outputFormat(hsva: Hsva, outputFormat: string, alphaChannel: string | null): string { - if (outputFormat === 'auto') { - outputFormat = hsva.a < 1 ? 'rgba' : 'hex'; - } - - switch (outputFormat) { - case 'hsla': - const hsla = this.hsva2hsla(hsva); - - const hslaText = new Hsla( - Math.round(hsla.h * 360), - Math.round(hsla.s * 100), - Math.round(hsla.l * 100), - Math.round(hsla.a * 100) / 100 - ); - - if (hsva.a < 1 || alphaChannel === 'always') { - return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' + hslaText.a + ')'; - } else { - return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)'; - } - - case 'rgba': - const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva)); - - if (hsva.a < 1 || alphaChannel === 'always') { - return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + Math.round(rgba.a * 100) / 100 + ')'; - } else { - return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')'; - } - - default: - const allowHex8 = alphaChannel === 'always' || alphaChannel === 'forced'; - - return this.rgbaToHex(this.denormalizeRGBA(this.hsvaToRgba(hsva)), allowHex8); - } - } -} diff --git a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.html b/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.html deleted file mode 100644 index 7e314ee4..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.html +++ /dev/null @@ -1,398 +0,0 @@ -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    - - -
    - -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    - - - - - -
    - -
    -
    C
    -
    M
    -
    Y
    -
    K
    -
    A
    -
    -
    - -
    -
    - - - - -
    - -
    -
    H
    -
    S
    -
    L
    -
    A
    -
    -
    - -
    -
    - - - - -
    - -
    -
    R
    -
    G
    -
    B
    -
    A
    -
    -
    - -
    -
    - - -
    - -
    -
    Hex
    -
    A
    -
    -
    - -
    -
    - - -
    - -
    -
    V
    -
    A
    -
    -
    - -
    - - -
    - -
    -
    - -
    {{ cpPresetLabel }}
    - -
    -
    - -
    -
    - -
    - {{ cpPresetEmptyMessage }} -
    -
    - -
    - - - -
    -
    diff --git a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.scss b/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.scss deleted file mode 100644 index fb2e5567..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.scss +++ /dev/null @@ -1,445 +0,0 @@ -.color-picker { - position: absolute !important; - z-index: 1000; - - width: 230px; - height: auto; - border: #777 solid 1px; - - cursor: default; - - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - - user-select: none; - background-color: #fff; - top: 44px !important; - left: 0px !important; -} - -.color-picker * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - - box-sizing: border-box; - margin: 0; - - font-size: 11px; -} - -.color-picker input { - width: 0; - height: 26px; - min-width: 0; - - font-size: 13px; - text-align: center; - color: #000; -} - -.color-picker input:invalid, -.color-picker input:-moz-ui-invalid, -.color-picker input:-moz-submit-invalid { - box-shadow: none; -} - -.color-picker input::-webkit-inner-spin-button, -.color-picker input::-webkit-outer-spin-button { - margin: 0; - - -webkit-appearance: none; -} - -.color-picker .arrow { - position: absolute; - z-index: 999999; - - width: 0; - height: 0; - border-style: solid; -} - -.color-picker .arrow.arrow-top { - left: 8px; - - border-width: 10px 5px; - border-color: #777 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0); -} - -.color-picker .arrow.arrow-bottom { - top: -20px; - left: 8px; - - border-width: 10px 5px; - border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #777 rgba(0, 0, 0, 0); -} - -.color-picker .arrow.arrow-top-left, -.color-picker .arrow.arrow-left-top { - right: -21px; - bottom: 8px; - - border-width: 5px 10px; - border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #777; -} - -.color-picker .arrow.arrow-top-right, -.color-picker .arrow.arrow-right-top { - bottom: 8px; - left: -20px; - - border-width: 5px 10px; - border-color: rgba(0, 0, 0, 0) #777 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0); -} - -.color-picker .arrow.arrow-left, -.color-picker .arrow.arrow-left-bottom, -.color-picker .arrow.arrow-bottom-left { - top: 8px; - right: -21px; - - border-width: 5px 10px; - border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #777; -} - -.color-picker .arrow.arrow-right, -.color-picker .arrow.arrow-right-bottom, -.color-picker .arrow.arrow-bottom-right { - top: 8px; - left: -20px; - - border-width: 5px 10px; - border-color: rgba(0, 0, 0, 0) #777 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0); -} - -.color-picker .cursor { - position: relative; - - width: 16px; - height: 16px; - border: #222 solid 2px; - border-radius: 50%; - - cursor: default; -} - -.color-picker .box { - display: flex; - padding: 4px 8px; -} - -.color-picker .left { - position: relative; - - padding: 16px 8px; -} - -.color-picker .right { - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - - flex: 1 1 auto; - - padding: 12px 8px; -} - -.color-picker .button-area { - padding: 0 16px 16px; - - text-align: right; -} - -.color-picker .button-area button { - margin-left: 8px; -} - -.color-picker .preset-area { - padding: 4px 15px; -} - -.color-picker .preset-area .preset-label { - overflow: hidden; - width: 100%; - padding: 4px; - - font-size: 11px; - white-space: nowrap; - text-align: left; - text-overflow: ellipsis; - color: #555; -} - -.color-picker .preset-area .preset-color { - position: relative; - - display: inline-block; - width: 18px; - height: 18px; - margin: 4px 6px 8px; - border: #a9a9a9 solid 1px; - border-radius: 25%; - - cursor: pointer; -} - -.color-picker .preset-area .preset-empty-message { - min-height: 18px; - margin-top: 4px; - margin-bottom: 8px; - - font-style: italic; - text-align: center; -} - -.color-picker .hex-text { - width: 100%; - padding: 4px 8px; - - font-size: 11px; -} - -.color-picker .hex-text .box { - padding: 0 24px 8px 8px; -} - -.color-picker .hex-text .box div { - float: left; - - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - - flex: 1 1 auto; - - text-align: center; - color: #555; - clear: left; -} - -.color-picker .hex-text .box input { - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - - flex: 1 1 auto; - padding: 1px; - border: #a9a9a9 solid 1px; -} - -.color-picker .hex-alpha .box div:first-child, -.color-picker .hex-alpha .box input:first-child { - flex-grow: 3; - margin-right: 8px; -} - -.color-picker .cmyk-text, -.color-picker .hsla-text, -.color-picker .rgba-text, -.color-picker .value-text { - width: 100%; - padding: 4px 8px; - - font-size: 11px; -} - -.color-picker .cmyk-text .box, -.color-picker .hsla-text .box, -.color-picker .rgba-text .box { - padding: 0 24px 8px 8px; -} - -.color-picker .value-text .box { - padding: 0 8px 8px; -} - -.color-picker .cmyk-text .box div, -.color-picker .hsla-text .box div, -.color-picker .rgba-text .box div, -.color-picker .value-text .box div { - -webkit-flex: 1 1 auto; - -ms-flex: 1 1 auto; - - flex: 1 1 auto; - margin-right: 8px; - - text-align: center; - color: #555; -} - -.color-picker .cmyk-text .box div:last-child, -.color-picker .hsla-text .box div:last-child, -.color-picker .rgba-text .box div:last-child, -.color-picker .value-text .box div:last-child { - margin-right: 0; -} - -.color-picker .cmyk-text .box input, -.color-picker .hsla-text .box input, -.color-picker .rgba-text .box input, -.color-picker .value-text .box input { - float: left; - - -webkit-flex: 1; - -ms-flex: 1; - - flex: 1; - padding: 1px; - margin: 0 8px 0 0; - border: #a9a9a9 solid 1px; -} - -.color-picker .cmyk-text .box input:last-child, -.color-picker .hsla-text .box input:last-child, -.color-picker .rgba-text .box input:last-child, -.color-picker .value-text .box input:last-child { - margin-right: 0; -} - -.color-picker .hue-alpha { - align-items: center; - margin-bottom: 3px; -} - -.color-picker .hue { - direction: ltr; - - width: 100%; - height: 16px; - margin-bottom: 16px; - border: none; - - cursor: pointer; - background-size: 100% 100%; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC'); -} - -.color-picker .value { - direction: rtl; - - width: 100%; - height: 16px; - margin-bottom: 16px; - border: none; - - cursor: pointer; - background-size: 100% 100%; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII='); -} - -.color-picker .alpha { - direction: ltr; - - width: 100%; - height: 16px; - border: none; - - cursor: pointer; - background-size: 100% 100%; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg=='); -} - -.color-picker .type-policy { - position: absolute; - top: 218px; - right: 12px; - - width: 16px; - height: 24px; - - background-size: 8px 16px; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg=='); - background-repeat: no-repeat; - background-position: center; -} - -.color-picker .type-policy .type-policy-arrow { - display: block; - - width: 100%; - height: 50%; -} - -.color-picker .selected-color { - position: absolute; - top: 16px; - left: 8px; - - width: 40px; - height: 40px; - border: 1px solid #a9a9a9; - border-radius: 50%; -} - -.color-picker .selected-color-background { - width: 40px; - height: 40px; - border-radius: 50%; - - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC'); -} - -.color-picker .saturation-lightness { - direction: ltr; - - width: 100%; - height: 130px; - border: none; - - cursor: pointer; - touch-action: manipulation; - background-size: 100% 100%; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAACCCAYAAABSD7T3AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwksPWR6lgAAIABJREFUeNrtnVuT47gRrAHN+P//Or/61Y5wONZ7mZ1u3XAeLMjJZGZVgdKsfc5xR3S0RIIUW+CHzCpc2McYo7XGv3ex7UiZd57rjyzzv+v+33X/R/+3r/f7vR386Y+TvKNcf/wdhTLPcv9qU2wZd74uth0t1821jkIZLPcsI/6nWa4XvutquU0Z85mnx80S/ZzgpnLnOtHNt7/ofx1TKXcSNzN/7qbMQ3ju7rNQmMYYd/4s2j9aa+P+gGaMcZrb1M/tdrvf7/d2v99P9/t93O/3cbvdxu12G9frdVwul3E+n8c///nP+2+//Xb66aefxl//+tfx5z//2YK5Al2rgvf4UsbpdGrB52bAvArXpuzjmiqAVSGz5eDmGYXzhbAZmCrnmzddpUU+8Y1dAOYeXCtDUwVwV7YCGH6uAmyMcZ9l5vkUaBPGMUZ7/J5w/792/fvv9Xq93263dr/fTxPECeME8nK5jM/Pz/HTTz/dv337dvrll1/GP/7xj/G3v/1t/OUvfwkVswongjdOp9PzH3U3D3zmWGnZVXn4jCqs7wC2BKP4/8tAzkZsoWx6XrqeHZymvp4ABCBJhTQwKfDT8gzrZCIqi5AhiACjBfEB2rP8/X63MM7f6/V6v9/v7Xa7bYC83W7jcrlsVHIq5ffv30+//fbb+OWXX8ZPP/00/v73v4+ff/75JSvbeu+bL2WMMaFbAlpBNM85QX+ct6qoSqkPAwuQlBVKqGNFSUOAA3Bmu7gC5hNOd15nSwvAOUW7C4giUCV8Sgn5L9hNFIqTsp0GxI0ysioyjAjkY/tGJVEpz+fz+OWXX+7fv38//f777+Pbt2/j119/HT///PP49ddfx8fHRwrmTjV779EXu2px2xhjwtdJZQcAWQIPLPISsMJaSwiD8gzIKrwSyATE5j5nAbR5c1dBUwBlsEWW0h6LqiYsqFPAQxCyRZ3wOSARxmlXMX5k64pQfvv27f75+dk+Pj5OHx8f4/v37+Pbt2/jt99+G9++fRsfHx/jcrmUFLO31gYDWblxRIs/TqfT7ousxJsAxXA2Gc7TA9XdgfdoHbFsj76X2+1WArgI1ageGwA3qupqoHsmcbI6Fu93quggFa9d7LeDtgKfAFHBJ+NEByIkcJ5KervdTmhhGcgJJSZ5vn//fj+fz+18Pp8+Pz/H5+fnmGD+/vvv4/v37+Pj42N8fn6O2+1Ws7JjjP6wraMI5E4RZ8x2vV5TSwkquotV7/d7Tz6HFWsD/qNcdw0CQ3q/321c686TwDVIdbuy73zNldhSHb8I2klZznm+InBS4U6n0302aBFsLhHDAKJVJVglfI9jhvu53W53sLANYNxAiDA6MCeUHx8f9+v12i6XS7tcLqcZW57P5yeY8/fz83Ocz+fnsSmYUyknWEG85WBst9stzSLyMdfr9Qi08iY15UZ0LlDGLhR3o5zK2j7OPUTD0E+nU3tk7Xb/16NFbhloAMuY1zjLUOO3BKeIDe+Z8s3/J4gFo4TM5jPmuRg28foUKKVSwo16TgA5npywcWLHgYl/Pz8/73/605/ab7/91m63W7tcLie0sZj4mao5gTyfz88E0f1+j8EcYzwTPEG2cqjyfHNF0M8fuqEiaOVnRzZZQNh5fwQyHg/HDGfJo89Q1zb/quu5XC6773I2XKfTqd/v9+d3wuqWva/YTdUdEV3fhIv/Viyps6YE3x3r43K5bJQS66zaxVGFsvd+//j4aF+/fm3fv39vt9utff36tf3+++/tdrudvn37ZuNLBaaCMgUzC+rZRiFowxUuJI8YMqcCp9Opq5vagaYU6lGJA1XQqejchw6Cj0Gw5nYBrGw01A2O206n04BGouNNyTfp/FwElhUey6nXrIKw7QQWddxuN2ldL5fL839gSPF8ahu/JvBO48CPSuqMf8Vp9/P53L58+dLu93s7n8/tfr8/39/v9/b5+TkhPJ3P56mQ436/j+/fv+/iSgbzer0+AZx/5+88bv6OMda6S5z6kd21fYC9dxv7cIJJ2d9AOS30fPMzyHiTM8B4DF6XUlYHp4KQW3W+1t77MNB1vGHxWq7Xa7vf78+y5/N5A+H1et29xuP5dbYtyaRu4AksbPq6936fjRzXRxBbPr/b+b18+fKljTHaBBBfn8/n0/1+H1++fBnn8zm0sB8fH5u4cr5GuBhMVk0EEn9RsctgVhM+ixlJtMA23R8B6yysAstBOgFXIKKCMIgToMqNEu2fYMH7ztc732dQKkCj1ytAZtY0Kx8pIr8GGJ+AT3V+2Hirhl++fBmXy2Wz73w+b17P8p+fn8/tUwGVleVkTyUb68DkfayWY4zxNRihU4EpLJPZVrK+u7J4/mgfKqeLW9X2REWlItL1diynbDDb3+jXgYjQqn0rrxWc+NkILP7F7xIbMvx7vV53x40xnlbWJF12ZSag/N0pW6t+ZzmOMzHjajKwDfond78zYTdfq18up97zr2q8v3IioBprRtBl0EZ9og5WBRGOdOHjIjXF7UotFbgOWnXzIJyzYvjG5IYgsmMOxHkz8OsMSrVNWeq5T8DaOcbEv1Od5rbs9aO7YvMet63EkF++fMExq+MRl4/L5bLZN/+ez+fnZ6KazuMqXSQVO5spJXflHAIzes/xJseckRJiDMog9d6VfRrqXMr6KpVV27jRwJacGovOAM1zMdQMnwK1AubK63kdCChvI1C7g0z9nf/D+Xze2Vj8H7Gx4P9duQlsYCrqyN8XqG3Hm/10Oj3jw/n+crlstuM+jPmmxT2dTuPz83Pzt2pn1XsEHX/bnPaVqVmh0xwOt0o6XLLAHePUU203wHfcrspCwmV3TryB5s0Mseeg97x/BwzCjBlbB+pRAPla0BVQuT6V6QHdBlj3d0KG147b+DqxQeUymDO43W4dQar+TIjwmAd0z8/h65vf0/yLv3Pb5XLpru/ydDo9s7ET0I+Pj6dKK9VUEIeKWQWPAOrJ8LKd4vE+t91Y3e7UFlWatg2VwJnb+HPmtvm/sfK59/OaWF3x/eP1UPHvA5DDYDpYXfb0drv1V2DkBkxtw/tEWVVlXWdC9pFYs5/jfh9dS/16vW7s6lTG+TfqsxSJHxkXXq/Xdr1eu4LsfD6P3vsT3N77DkL+zPm5jSdKL4zR3AxQd6rHkLkYlSowsrq7znzu6wSwdsMJOXmA5fBcjxtgMGBYHlr5zokhtsMCTgXLQOW4XC6dEyEMprL8mAQzXRgduix2yZzorxkYsDn3hB1VeMLGsXsVtgl2pW8S3svk0vw7R4hNaHvv4cACl5HFzwIH0Kc6zu4XjDPR/jpAVxWzO1Xk2DDb3vTcxeGU1iWZHkmIDWziWKvirCJ4Dravs6IJ/GG6cTqWdXDy+fArQDVVkLqkVjAoZIITdmmIqXwqa95N3+MGYoZQdRVNO53Y1xRkhO16vY7eu507Ca9lJnbGpxOemQhSw/AQsmmp5zU9BiU8G6wvX76M6/U6Pj4+do0Bz4CpgiknTUeDqwlKBmg3u4OVjrZ1A+rAcgaejWq6eJCvCYFDONSwOgHX4EQRw8lxbzDOdEK6gZ3Hk1b+8g2o1JFtKXyv/fEdTXuWjWXdAZiBp6ADeDrCFiim7B6ZFneeI7Gvm/PMkUDX67W7xI8b0D7/v8dA9qfN5oaCf74WZjH0mf1cmfY1Y0JUFmVrTWu8uzkNcLtEj7u5FXBTkfC6GOA5q8YMxO8KVvF6sAVGdcrUbsKODcQKkLMOMdmlxum642YrPm26AlhZW1YB1R+rrGswE8TaYAWeUMxdf+WjwSvZ2Ef3ytOyfn5+PpVPAaqOn43MtNBqvmjjxbjM4lZjZY4gqNMI5ktaW/sYKNwS+9lFQzGihmMCKPa7+Z0V6Eb0GRmobtpX8JljWu5FMLN5ja6hG9kwQgZqf5+1NH5UxzkFReCdWhJ8XdlGUkxO7HRlYRm4mVO43W7ter12TPJEw/rmEN3L5SKHIWZg9mz+pUoKOYq5bJTJdX2gme1UcxMZQFaEQIlHct32M+Y1BzGkGuzfiyAN9z+ugplZ1symCrDCYYkGxDTpI9RzBy0rHyeDUC1nWaeUaD9n4xkNyYMBDZtzZ3B++fJlY21XFDOcARJlabOyiS3uCpLI9jrZjCDkaVvcCCjwognKShWdzXZWlZMvVTgD8LpqlCLrqgbcB+qYwrgKYpT0ccCqbKyCValkEabn/FynogCrPKfqf51xJ7sGB2ZXcZmxoSOztjx300DZi7a0/2AIR0UlBag9SuDw6KcAzlaB7vHZvWpjK90dyrq6bKyDUZQbR0B05biLQkHIcSUmgIK+SwuqgHCnoio2RQU1yj+BnBy9pphVKLGyC7ZzFK1pxWK+E8IhVCWLN/uLtnUU4ayoYLoaANz8FdtaSvY4pV0BEW2ls61czqllBKpTyKgMAhrZ1cdc1RROtPmvWNkdcKZ7ZKxaWjiPLJMpp7OZKxA+rqG/oJLjxf0pnJlqLoDZo3gyU0mKGys2taKecj/d1C+rJSplBqlTyAqgR+D8KjKlmRL2gtUcAdCtsL+ijCNT1oqqqkH2OHEbG5sDFnUg5Aa+yLou2VU1ptj1S2ZQqv1ORZN9IWzRfgaRBxKoBE8UWyqlJFtrIc0AxNjSjed99CTY/XDfSzCz5M0IZoVEsWnPFNTsl8ooVC1TzbGgqFZNDSgVwKK+1sGDMKqxZCWGVMDysiEr1jVSQJUYwj5iHOlThdHt44SQg9CN+nl8D90NMIgAdgr46JqRiR9I8vRdFvbr17m/yxUMKjNLMiVUADwu2CWGhhi+F55TWM9M9cogzms1dnM4uOF/LAEYWdcqnM7yFmyq3IfwmOROd7Y1iFWtOjoY8To41mTV5IysgFFuRzsbWFGbNIIJCDv1dOo4lZG7jWBwRFtVTKuWyeCByJKOan8oZ3ep9XddNl0tDuaywLz9cXPYeDAA0SpkBO9sbVcTOVWldPv4uyzEkzxHtjvonHoSkFEWNoo1d8DhcQputd2ppNon4BzoAiJ1hBFQg0dVtdbGHHDQWushmNEQukLM2QO1G2Y8bgTXqFhcBJj7EjPgcPts8US8qPpPB/dXznOh5Z438tzH5ec6QgrOKrRRfKmysBmUDB+PhYabMlVPER+GCSITTzr7am2tArH3bgcEzPJm+cr5jJ4NnHNFDVrFXcI5Le9k5Jnw+bedbV+FfRzZIHaOOaOsLY0/7UGs58DjrGwKMIMFIGzOEW1/jGsdAtCN6hEAI4hBe9YXeRROBSVPAVPAqvIM5bx5hVKWAMP6zBRy3iescridVdFBinBxXDnG2GRY2XbCvp1lhvGtO9Bxu5h908XQu42lnSArMFdizMim8uwRCxPGnnOS8lwpnbOiDqTAjsrRN/PcoAScCbaACqVM40ylnjjTBs+bwWlAG23/UKbdkiwKWIQPGzWaczpoSlxPEj822cNWkpS7FyzsDrqpfgpG3jahw2vgbaSQAxuLWZYt7JzyNe8JoZpNAcvDFOdw0wqYT9AK1rZz/DdbSlLPp0ryIxgQJlK9AZlEq7IOXpohg9PIhrCng88JsOxiV4ZWAYfg4sikx/8ky2Z9l862uqwrfscIH8+ugTmVGyiddeVYUgEMn4GZzg14EwIsh9sx2cKKiWXReuOE5gzGOQgdlRKVVdlevqb279Xq0Qnsts2VDaBO0coezsruWtHApu6sKG4IBhN0aGU2kLrMKGRTN3HmbCDwKV14zvkMEDG4QfZVspVlaNU2mhc5TEZ3N1h/zqTheuLpW05ZWTGVjb3dbnNmxKZBnN8JqidaVLKAOyARNLS+MB54Z2+VaqoMLKroVBlngefnTPAcoHNWCSvlfA8CI0HEmBNBnBlXyMrzU7A7WVm94PPqQ2gmqKx+WDGsnvilmcSOBJqOK1nYyAIzuAyesq3UdSK3KfWcYKD95HmfYOU3qser2CtYEUA+FpfqdNvgPBZUBhDrGONRVlQsh8rLcaUCykHG0OOUwTlLBrsh5soEMGezi1E4HRVt1icp5wZEFXdibCkG8Y8vX75sbO4E0iom9z+hjSiOfy3DhpXItpVhE+UGQdvoWjtChmrGHf4YAzKgBNnGtuJxFCeGdhUAfQLLK8kBYAP6gvFJZajMG3Xkycy8KuC0q4Eyymwtwdxdv2M0mIBtK0LKnf640j00Auq4gUkdWGlhs22qJc6dZCsL19oxnlTJG4SYVRIGpD8TPFBuM6OElbS1pldid4mGAyN6ZIupbC5bXJN9fdpbThSxLUaI8IG1XIYBxW3Tjs6KQosKcxfxcQmdnwRGM10GnFcCy2XYunLMyAkdgk4mePiczsLygthcBut6goOqS7YVFXADLjaosB6s6ofcZWAZSIRYqSUkizYwttYab3vUOQ9w2HRxIIg8WwRVeE68xi4UtL3zRphxplzwuZrcqYCq1I3jPI5dnJIygEohMbPqVJSzrwzxBJTs5zN+ReUSgxikPQVF3JVBeNQxbHENrEMNvEdFZVV9lH9+ORGEsNZQpyTNc4C3AG7XF4ngzq+DrO2zbuaaOXgdaFcdkEotoSFBVX2qJ0C8OWZeG4KGlpghA0XfTOPCqV2qqwQ26QWfF2PMLhI2w1lVAa2aPsYd0za25MQRwgcZN6uQDCi+ZxiD4XEM2kZxOT41FnZnaRlcpZouzlRqqdbQVWopQoSB58RV50lBNrHi/AwXS5LrwDVlpY3Fc3ByiYGc52Trist6kOXdwInAQtJpp5QchyaquYOV7Su+fxVMaV3dc0RE2S6mUY0gLt2pMcYqrKIQ9w2l1gpQUMtQYcmmbt5DTNxdhnUCjQqtbK9SUSzvrC0mmhhE1e2FS2+oxypy/ZASutkmtjx3vcBC24PX65nbqkBCRhfjS9kIYPnee8cMagVOhI/3T1fAmdtAWZsCswTJCkQVNa0qWKSKPOpHAUhD9DrbVcyoYkwqhvh17vYAayXLQyKGYdxlUDFp494rBXRjYgO17DDYetNIUj/ezp6S0lnlpEwsWmJMkOwsKXeZKEAjIHn0EQJISaRBcO6UMINz7p/bEjjnw4ft+xmDvksxX4G2rIris7qaeKwAFMP2Oi7n4criuZwtpSUwpfLxSnORSrIqusc5ZFaXysqRWjiZ2DyAWEIL35tVSoQElFACjOeGGSE7AHEQgdo/LSvCOgGBvkxsmDbvlS3Fp5vhaB2TAGqRKrKKMrhLVpaGzEVjZ0OQxDhaCTA+QyRR1d15aQzrJntL3RibsipjG6jlgL4yqbS0sNYg1e84vhbBVrElK64CUcWYXDfKxhpIuxiVJZUxsbMy/uRBKTNRQ4kQ3LdRYLS0rJjRPlTPqY6gdJsEDc+aQXAn+HgsNUCbRuF0Oj0zwnA7bWDkbhO5Ens00qeQhS1laBMl5M/cAaxsLF8rKyql+Tf7ELLEGu/ixiimdCvo0TjfpjKwaggen4eh5v7LokLKbLuyvHhcZG8dhGrEDx7Hg93ZppJF7qBqO3iVveXEDQNInzeoe8Yq6ePaZBZ2JviM3W2UAGotekRCAGq4EkF1X3DOnR11yRsBL1tRa0PVcZiNFXZ2c34FskvomInQQ6lzpJoZbJxk43NwKJFBquJSsrByHydxKOnTxQASBmS3j+JMnsHSla3Ec6K9VWoJVn9zfjwOM7hqYAAqJQwE2a3nA48J2QGegRkpZNivSY+ys3EkKd4oJIwsvIHl3cWgLt5k4NH6OmtLWdpurOkwEMupYc7eMtDRhOcI2ui5JhVIzXzLyto/GAPuZoyo8wkoduVgJglCt7OhGbgID4Mq4si+63zUS1FuFFXFlqyaj2emHlLMcBqYu0FMuR28BbB7lOxRMSiCQXFhCKuwkhZ+pYDiGSgbsKKV8MiSRsuHSIWM9rklRiIlZZuqXjsQK8ooYJMgq3JKWVkhHbhsVxFUzthOWPkYijcbx54IKsSdT+uLr3crGKyoYgFiGR9iBk4kfloUX+JIlQRQqabmpgnhqtpQpb6RVQ1WH5DnrS4hEoGZqaerQ2dhFbz8XePxShmDbo70eISjoorO2vK8SJXI4SUmEU4zWKDzUDtWTYw7xXlbSTEj4FRg7zKnKoGRALv0Gs9Tgc1BpCywGZRQAtqVz2xrBcAMzEpfZwFSa2G5W0QBFjSMapWAEFa3HcGN7CxDzECyIkJ97qwrqWNTWVo876PPsjPkj2wvgroM5lLZKMETKVql/CvnWVFiFa/SzJUQwkoZsr67Y6vlSRV3/2tmNTOY3vnaxYwMuoPKqdzR1w7IqHymlPxaAThfU7Ko2ZXYj4AYJHL+kNdKwRQYESTRa5fsUZ/rVC1TMTyWVyYoqNtuzaHsMyv2tvoarxdfqwYgU1axFo/cnql1FGsqK+uAROV8BX4GU8WcZTATi2q7Qcyi0O0V+GhWBMNRUkn8H1SsWVE5By3Gi0ECqUeJoBfAtDa4amkdXG37AGP5Ggeb84p7UazpoKRzdFzeQ8HkoHGxprKy/Hpm5t12p47J6xTYDEz7uINEXSuxYXvFskYAc+ySxH9sf5ftKzU6IbwVBcUGg5e5FMCEXSErZR0wGayV19woM9guPjTqJdVTqR4uE4nJnLldWVkECCZLd2VLF+xtamex7IpiriSDUpvrpn9lrwGMCHyppMH+ps6LILsuFGUj1XEOXiqbqSHPUKnClpWV68kqtURVNDY4TNaocykoYeTU5ngGEQa/S1DnnE4AeXMcKjHPAmFVjCBENaeyLVNHfr3px8xUstJ94hIpfH4HKE/eDaArK6lSyVVFbdt1gxTIVk3pppVlFXi4pEhVBTObquohU85MLXn1iahvUkHJjSCMc01tLFveVVBx0DodM6jftCu7DOtIzYxrc0qp1JGP2ayYFz2Gb6HvMrO8cnGtV6Gjm3uImSfD2GpWK6uowbZGMxFKQCo1pOMtcMXFpRst+hXGoAomF3sSTBGgTglbBKWwsQ3tZqaYSp0Z1CimRDWFcCJUPYJ00BI5FkKYNoifuQxmN88SWVXWLMaUqqqgC0BmQJR6sk3u9NCf6jYLXxAfqsYEgVLAhRY2AtgtflZNFmFyhxdrLkAdWlk4D88M2ixHyepIdhMHrG/iR1ZGtq0MGpbDbRPYOXeSY1M6Ny4ZstvGSktK+XbFPATj2D371saPEsAMXhXrsZ0km/XStkhhMyBfsa6uXFZe2VCe+YMr1+GKgwrQyNYq1VRrB+EizAow6NsdNKcyVEkYeM73ys6q4kAHp6BiFklTkIrVC5oYV7uzwOGCz4UJ0Stq2lWMJy4wtb+RetL6tZFicnJmBw5UjCvXXMZVJX2MQkbf+XN5EWd78Vz8/JEsMZTBiKNzsm1inLRUQ74H4NidaqI68j5sAFgxcRveC7ieLJXfQYxjZZ2CsiWFewZXJmBIlZ1tdtrX4hSuateKso/RZOtOKW2nmq1oTzeK6dRWAWu2NRVb4hq0SXm1GvtugHrbr5IXqmSktg5CuDE2MSlPwsY5kNE2Wp3AqiZbWVLAxiBF+2iBZbuNj6MB6rsMLC7FyasaYDyo7KkoPyEtw3pEMXfPvxAJi2jAQQgjrz0rLIZSWZlIoNhwd5xK4AR9mYNjWAaLrnuImJeBVN9zBORObVvbr+mTTfFSEJLSRnHo7hEJoIi8MFqjxmvgmF5URZz4zLFgZZ8Ctu2X7ggVccKm9gVxIsOHqxXgNMKnFWZYnf1dBnOhayXq17QwFlWW09eNKyVJFmXqaONGA5aCegMbJ3UUkGY1ic3nKWgjq8qfVYGQG1gRt6rs62a6HiqqUOqdesK5NmX4nGofJoiE1d0dF9lVVkvT1/kEEaaCoYOwFpcVcoLM+7669PxC9rWqktH0sWUYld0VCpuBZ/stVRcGgy9WX2+U1Qthi9SzAqSxzZsy+OiFzBYnySGV6Gku44rD8BCOZBV3BvD5+AKRHNwMEsB6EzHnJpkTAeiUlEGkcECeB6GDZTp5YEJTlvdrknxYjTllMkfNtXwDjM7uVjK5JXUUn43rrqpK2jytaxHW0M5G8DC8rtHMYs7KSgduVQMGTYFqFvVS6rkD3sDJ46afdYFwoq11AOKCBLhvwoUgc8IGANycR6knZrdJPdsuxnyjfd3FovTlRMdEdtOl5CMV5EHsXQBis7TOwvIDZaGj2Vnpbh7cpK63VwYEMLwqbjzyl699sawFFkF1yqjUU31HfC6sW1ZFVFuXVXVgz9keEaw0ys1lWfm+azQAQSWA+hKYVfsZjPncAcUB9oIayy/UZXRNckDGji77GsWbvBo6tPrWPqOyVkBUq+INeqpzNdYs/u0ifh5qmpqIW+33JVSUcwY70KL4U9lYdU6ljtSls7lmfi9g3YzeQfVkaGFaV3ODCnaD2N8wsEDFklE3RzM3ZghdYkWHsszq70FIecnKkVkt8ezMzRq9bkGuKojRLBVSod3Y1yPqKgYW7JRQTPVyy5xIYLjOgxgT52RKJUY1dOrIiRd4futQx/A5AcSmEjz0vFWrkLzvbWAu9HOWbGgxFk1VNTpnBKk6TgwisI/HcxYXP1uAWO72ULFlBTq+aSu2VTUs6hrxM2CF+hEor1VIA9ZmFUaab1lSSgZsVs4sxzHlVLoJHr9H4DhONTkI1XC0/wiY2NoWAG5RlnHFnq6oLccpQddMuJ/O17JVA5OHLi0BqCztq7Y1++ucCd98qLI8MIHBV/cKjxQTme3hFBS3MyCqnDsuym2o80HjvFFTtrURmNaGJsmVahImjTsUXKtQZTAVs7Mvv8/+fzUrZAXcLJ6M4koe6XP0b6SmWWNDzyUpQ8bl+LtWx4tuqZ36cRYV3yuVxPNwvIiqiQCSmu7srgTzR6nkyhpCarXwFy1vGd5iP2cY06lFr5Njhhg1Y6+NB28ftbK83s8rf7kLJbKwDFPbLg25a0AdZJEiqr5phixKMDlRUtcssq1hriLqGoH+zeNgVm9OemjsETV8JdF0NHnkIFxWY1OB4Yrp7rtWJ7NgAAAPXklEQVQ3oNs5nplyVf8u2FoLu1JrHveaZWQjqAkshtFa2gzsSG3Zpkbvg3HafF9slPPlldjFlK80Gysm8Mr4MPhneNWENPGjAIpmilTPATdTRTXlCBYHYAQuPwA36xIpWtGN4q3Y2MhiGsUpuSSnlEJRD8PorC7CFYVw+F51qThgabxsTxWzCGY0ZSsb3lfqAy0OPNjNy8xiQQKsHYFQ2HBZVvVbBuq3m1oWKajqaonsM6uZUr6CjXWNZ0l5E3h3jURma6kP3MJIiy1Lm+kahQq41N2iZja5sjtlLYNZHZrH6qUGm4vMbDp6Rw2CFmvuyFkrBcCyMtFqBaECmsHoK9BZ2LA/lJcRqSaDqnaWbrZdGaz3DLgIvBln4woGztbyJGqslwxkhhHrTjTYFXCtOoKS8uLdofVdAbOylGU6nlYpXWZts4nXBq6WxJitMNokHUJnbnJplQm+aGpY2a5GMV2QD1hRubBPFKdumf5OHkLHz0F9luE5kjBjRa0nFE5CUGqHw32MmjZ6xkgINVnSnZ1VZStK2qKlRaLlQgK7uTq7JFXJwM+3SOEKyhZNI+tJ0I5qMYy9k2qJD7dVWdqKXa0CKNR0Ccjg+B2IYu2fcBZJZkMFgM11r0X92wilghFGgzVnexlqB7xL9mS29SiYUVY2nXOZjNBRsyDsQPRWW5hrZ4XcdC4HVWRbjgJr4sFofK5SzjQ7rhI1UebdPdEbj6sqIvTZQZ5va08rABsAW0UxeWytAk7A2KJ9ZpxzCioB24XFtYAeXYxr6anSqhLgppEqWbGwLunTgrV+IjWlL29ljaAl4EQMGsErp4apeZiquwRXLXAqOCeru32mmydc6oWTSWpFAGdzeTB8RTHVMEtlM90CbbQCYhPjq3egYr1FGdYIQjiuDGZ5zZ/AzobKGOyLxti6c4Rwtv2anyWlLICnlLhxJRXt6A5ebDBWFNONbxWZ2d02mnu4S9YECpeppV1zSWRBWxHYzVIv1CXSouwqqX3jBBBDZdYQbpTQW4ZQlS8r5kH4suSRmg2++3JN10x1PaAmEkmtYlEdeGpJEM6kOuCqCR22oSujj5IV2HdT0zj5prLKTjXFAPjdQlyq7xIBxAQP5yMczG4VxAKw0n6ilZ2QBce2pLulkuxxqnoIzFfgqyqjil9S1VNwBrFmeyeops8yOjZUybZdfS8CuaTIJumzs5tODaNtLpFDQ/PcJGweLhmeL1nB0KqiUDScsiUVD89Di3HtrKtSULw3RLiygZD+7sF8JTObgYsrGvDNUFRGl1iy0Ll1YkUc2aJYMog920I8qW6YDCg1Mqk0JHJFKXkbgbRreI+qpYNOZHrVcDUba7pjsphSJNtK6upgRNAVoOS0mugBeN4bIZgHhuPZ/s1ENaX6KsVr+YNrh1Nb7ipR0PE5zbNRegCbrHRUw6Yf07dLBJl1f8KB9as2V1nNqAsl62LBBhehwalerkHmB1JFIEZKSEusdl5JQj1nJlHXSCF342gJ9CYGrXelknJIXqVP8sD+qtplCR3XH2qfKq0ygMp+KnVkKxNlZ8m2YkIlVMiCnXUwl7qznBKSvQz3m3Pt6oQbXO5b5FixCh/fHxUQW/AEcK6zCNqKQnL9sywqmKuwvqSYzT/aPVNNpVyhvRW21aqciCsjdWvBwILUvh5VyCzbWoC1pJjJ680CWsl+udKB6T5RwG1mlohnlpbg47iz5U9ha0FGtmRLFYBtO99y97Ap0z+ZDTAog6kSLZsMHg/IFkkgp6CpvU2U0cYVSdnmkjwBdOmXbxTWNWzuIbipMioVxEckZEoahSOiy2M3K0jcC1LhVDwaqG0ZvkcWqCnrG4GIxykrqlbWdw6LQyBaZR8HmLRIhQWsHswD42ZXVLNkf9l+FlW0HVQ2lwFsC/Z1FdzlQR0KaPfo+Fdfu+/dwVRICu1CGR7AEIiAhc+AZUF0kOBaPxmUqg4i64vQnU4nFDYJ9Nz+1fVXveH9qmr+kPILx8oKcRV/BFbxbE0JMT0kSD4w6L/lNY8ocsqagVdU3A3MjxhxcGuqzsPH4irpaow1q6OyrVjvp9Npc59E91LldboYVzJWdimWfAW2SNEKcDaX2FmBLLA/uKxlmhh613Is1URQApbKfttwxL02q6Onx5pQxSbPojAg+v5hAnN6LHVRDXIsvKtRjiS0qJUyZTAXVbAK82ElFJWaQdVoqUC1Unt7BVaTQudM6SuqexjQJN4+0icaxv/utbKv83ETbT8H8gjcOKxOJmbUa6OOVXht3dFY6rHv9XoNzFLceEA1o8+pKm0LAHPHZ2rYKjFq0hfZFixsqHJgD3eD5n+U0kb1mFjXkn2lvMSSOsNE/CdIAKF0Sytq6urOHUN5gwg4GZosgbmggM5ucra2qrS2Ig1cbiBBcxYzgzUDNLCvL8GbZXNp6ORy3LmS+Kk83zRIAK6A1ioKa2I9NapIuiUFdfC9766PFZUtqUr6KbWk+zZU1a/ZrIXEztrjTOfz7hwKziCeXIaraHtbZIMz+2pGgazCmw4qWAFvEdhodYp0Xq0pV7G1YWYWbO4qhGq42+Z8BYtrLWvluNPpZAeaFFS1vubPgbgxsqcpnAaszBovKaFoDQ8BGtjfUOl4NAG2nmQV04feJgumvX2fsrQEWZghL0JnVdYkn3DOZIeRN86RqPWCmsvGVqEMRnwxQAxwS8EMYo3IzmY2+BCcLp4MKiuyuhImamlbZFcNoNl7tp+RHd18ZjQIRKyXdFRhN98/hyKqwXWNo7O1wiaXoHN108REZZWEq6grnIfjzeg8jdRf1XEL4kkXa5bBjKxoKaljBjeHlVxQ4GaycpW4lDOAKtnTxHAtOfzOtZwHAM7sqVXkV6yu6kap1nHkXKqWF/4XHqjenNKqBjpR3l1ch3Ejg1+EsgdQhsdG0B4FM9sWAVWpuAyiwTPleZxt9VyZVS2qXfReWqTAilpr9ApoWTjxymit7NwV4JTriZyOA9B0k7HFfULourmKYHVnRQvqGL5HMHdqFcR2qWpmcK6eTwx2dipWrviDilr+fKWq3OWRWdHKwA4eu8wjchbeRzFilqjjZN3ufCpfkJ0/scVpnYk6L0PI77lxdWCZ87WiWm7B/AGquQSnujGKsB8CJmiJq8q1pKIVWyqOiTK66r18BN8r74/AE71fdC3yPS2MxdOpnE1tlVxD9JmVOoggN+r4PjAXVFPa3Eg5jVJGFVUGNolH20GVrUB7BOySWq6WqYQdWR92pcFMYMwckbSgCKCqD67DiiWu1g8MQC9ByfcFqW1L+jL714qNCuznoSxt0da2gtWN1G8F0BK0NN0nuimelUF9dIdAfjO44UT3CjQLoUeLHJFTO3gmpRuIIOvwBQCbqNeo3qtZ9iF6xVK13GRlo4zqimq+CGdTiR1uRY8oqgE02hZBa79kZXPMquxRHKla2saZWN4mRqZUj0vLCKhkjKnqOQHNuSZVJoKvAqS1wpEquvWDC1B2ypwrCPsRMEPVTODMLJMDv6qeKXwi2JYV5Sq4qKyvgGsHCLiuj2jR59V8gMqSJ2FJZRXEHVRHj3sFPrct6OpqlW1GpatQdt0GvwfM6n63InsGVFhJGaBqgqqIV6IsXllZgySPq4R3bnt3wi5cv+cN2yqQLW1T95KYVsWWtKk4cB9W53WQQflQYR6Wl4HaJZjvVE0D5yvq+RKgZCs5qdBEP5sD94cAvQLlSgNaSMAtHx88BuNQ41zdFsX30zKbcs0MLD/ihkpQzl0wiTqKLTfbKmCmyYICnK0IbaieC4CG9iSyLQ7cIMGQwau6TKoq60Apl3WN40LZpca1CKKK9VQyyIEn8w0F8F6CL2h8o3ixGwC7s7EWzCOqmcApYxYD4jsAzVS0sl2t98pA7vrKophCVSonbYpgH6mvSn24pTBV4sdtV3BtMq5k82y+IADvUJ0uAlkCVTxIaPm+UNu/qkV4F1TzHXCGrXIAqItBKypqK99VtAOVs64O4ObX7pHLVCpYHcRmwvLR7TvYAKBBN58LGVzDuFz+hQbWgncQyCZAk+VbsPSouf93261iZgmfCpwRbAvqmSqriU2PwhjaoOyYqtIegVXViTsmyta6bGySpY3gyRrpIyAeaWDDxtpsXwKyalMDKNP7YBXMqEskUsi2uC8FNAPxAKTVfT1o6VzM0E0jF+1rWcUuHvdyg7vgoFplX8HpvHpMCOMRUPHzZkInsqlFKNX/EIO52E0SxSzOwob2VmRLW5D1XIU0rbgM1AzWgyC7fe8G7xUAK/taEBat7luqtyP7EmsaJQOj5F+mrnZfCuYCfBUAWwShyd6pMY/vAHG1UqOYpbI/gy5T0CMKm+UO3gFuC85dgfDVeguPDfITrIBLsLrcgdh3CFgFZjaKJ4Iv3F8ANEqvuxR1tVKOgLoCa1jxboBAkj6v7j/icFbA7f4rfRnQDLRViG13i0vqBQrYVqBbADZT0ZpiHoSzvQpopKIFS3sE1HfBWlHXd0H7LnArqvougMtljHBgZnh3Eoz/BKjLML4Z2Aq0+hEJr9jaVUBbvNzCIUiroC7AWmmFw4o5AK3MtB5VypZMSFgs05JyGVwlwBqsEGAAa2ZU1CjUexXGsE4rKriilBvFzOKKo3AuAroE6QFQU3u8YpNXwS5k+1TZt5UrwouN4KiUEw+k3ZWDp1RXHNRqXb21Ts39945yZSg3VnZFNQ9CF3XeZyr5DgBXKiwCMa2MxeTDYXgP1Fsf9QNKZc0k81RJk3r6EQ3rCmBVyLL75EjZ1pIVDHoFtiOAHoB0BdTVylqBsKKKS+AeBXJVLY+CXASuGvO/Auq7GuEjDfGKg1oKa1z/dmmi9I9SUGNhl0AtfulHAawoYrnSkmNXAVuGEhrEVXvUF+A5Ct2PqNOjDetyna4CmeUolmeXLN4Aq7C5Sj10Q7yjgl+t6CNxSRHmI5X+CpwreYB3Qfdqna4q21KdBuc4GoZsn49ZOOiVinwHqK9WzjvgeweEh2AU5+vtxZ9Cd9Wqkh49V18E5oj6vVyn0RStAyGIO5edXRKd5B0VGVXq2yr3xYp+5Ut+C4QJ4P1N339pQMjRejj4vb/Dcr6rQc3O/0rjmtZpeYCBiCHfCemRbNhbK/pNUPc3wfKy5f2D7OlL3/uPhve/oU4T0F8f+VNM2vyoiv0jK+KHQfdHq+0bncz4oz73/+Y6LbKw1o/5B7eOf1Rl/0du9B9tn/9bvrf/j+v0h6ttn2tp/r/4819y4/zv5391uvzzfwDifz6phT1MPgAAAABJRU5ErkJggg=='); -} - -.color-picker .cp-add-color-button-class { - position: absolute; - - display: inline; - padding: 0; - margin: 3px -3px; - border: 0; - - cursor: pointer; - background: transparent; -} - -.color-picker .cp-add-color-button-class:hover { - text-decoration: underline; -} - -.color-picker .cp-add-color-button-class:disabled { - cursor: not-allowed; - color: var(--color-common-grey); -} - -.color-picker .cp-add-color-button-class:disabled:hover { - text-decoration: none; -} - -.color-picker .cp-remove-color-button-class { - position: absolute; - top: -5px; - right: -5px; - - display: block; - width: 10px; - height: 10px; - border-radius: 50%; - - cursor: pointer; - text-align: center; - background: var(--color-common-white); - - box-shadow: 1px 1px 5px #333; -} - -.color-picker .cp-remove-color-button-class::before { - content: 'x'; - - position: relative; - bottom: 3.5px; - - display: inline-block; - - font-size: 10px; -} diff --git a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.ts b/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.ts deleted file mode 100644 index 36467050..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/component/color-picker.component.ts +++ /dev/null @@ -1,1087 +0,0 @@ -import { - Component, - OnInit, - OnDestroy, - AfterViewInit, - ViewChild, - HostListener, - ViewEncapsulation, - ElementRef, - ChangeDetectorRef, -} from '@angular/core'; - -import { detectIE, calculateAutoPositioning } from '../helpers'; - -import { ColorFormats, Cmyk, Hsla, Hsva, Rgba } from '../formats'; -import { AlphaChannel, OutputFormat, SliderDimension, SliderPosition } from '../helpers'; - -import { ColorPickerService } from '../color-picker.service'; - -@Component({ - selector: 'lib-color-picker', - templateUrl: './color-picker.component.html', - styleUrls: ['../component/color-picker.component.scss'], -}) -export class ColorPickerComponent implements OnInit, OnDestroy, AfterViewInit { - private isIE10: boolean = false; - - private cmyk: Cmyk; - private hsva: Hsva; - - private width: number; - private height: number; - - private cmykColor: string; - private outputColor: string; - private initialColor: string; - private fallbackColor: string; - - private listenerResize: any; - private listenerMouseDown: any; - - private directiveInstance: any; - - private sliderH: number; - private sliderDimMax: SliderDimension; - private directiveElementRef: ElementRef; - - private dialogArrowSize: number = 10; - private dialogArrowOffset: number = 15; - - private dialogInputFields: ColorFormats[] = [ - ColorFormats.HEX, - ColorFormats.RGBA, - ColorFormats.HSLA, - ColorFormats.CMYK, - ]; - - private useRootViewContainer: boolean = false; - - public show: boolean; - public hidden: boolean; - - public top: number; - public left: number; - public position: string; - - public format: ColorFormats; - public slider: SliderPosition; - - public hexText: string; - public hexAlpha: number; - - public cmykText: Cmyk; - public hslaText: Hsla; - public rgbaText: Rgba; - - public arrowTop: number; - - public selectedColor: string; - public hueSliderColor: string; - public alphaSliderColor: string; - - public cpWidth: number; - public cpHeight: number; - - public cpColorMode: number; - - public cpCmykEnabled: boolean; - - public cpAlphaChannel: AlphaChannel; - public cpOutputFormat: OutputFormat; - - public cpDisableInput: boolean; - public cpDialogDisplay: string; - - public cpIgnoredElements: any; - - public cpSaveClickOutside: boolean; - public cpCloseClickOutside: boolean; - - public cpPosition: string; - public cpUsePosition: string; - public cpPositionOffset: number; - - public cpOKButton: boolean; - public cpOKButtonText: string; - public cpOKButtonClass: string; - - public cpCancelButton: boolean; - public cpCancelButtonText: string; - public cpCancelButtonClass: string; - - public cpPresetLabel: string; - public cpPresetColors: string[]; - public cpPresetColorsClass: string; - public cpMaxPresetColorsLength: number; - - public cpPresetEmptyMessage: string; - public cpPresetEmptyMessageClass: string; - - public cpAddColorButton: boolean; - public cpAddColorButtonText: string; - public cpAddColorButtonClass: string; - public cpRemoveColorButtonClass: string; - - @ViewChild('dialogPopup', { static: true }) dialogElement: ElementRef; - - @ViewChild('hueSlider', { static: true }) hueSlider: ElementRef; - @ViewChild('alphaSlider', { static: true }) alphaSlider: ElementRef; - - @HostListener('document:keyup.esc', ['$event']) handleEsc(event: any): void { - if (this.show && this.cpDialogDisplay === 'popup') { - this.onCancelColor(event); - } - } - - @HostListener('document:keyup.enter', ['$event']) handleEnter(event: any): void { - if (this.show && this.cpDialogDisplay === 'popup') { - this.onAcceptColor(event); - } - } - - constructor(private elRef: ElementRef, private cdRef: ChangeDetectorRef, private service: ColorPickerService) {} - - ngOnInit(): void { - this.slider = new SliderPosition(0, 0, 0, 0); - - const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140; - const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140; - - this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth); - - if (this.cpCmykEnabled) { - this.format = ColorFormats.CMYK; - } else if (this.cpOutputFormat === 'rgba') { - this.format = ColorFormats.RGBA; - } else if (this.cpOutputFormat === 'hsla') { - this.format = ColorFormats.HSLA; - } else { - this.format = ColorFormats.HEX; - } - - this.listenerMouseDown = (event: any) => { - this.onMouseDown(event); - }; - this.listenerResize = () => { - this.onResize(); - }; - - this.openDialog(this.initialColor, false); - } - - ngOnDestroy(): void { - this.closeDialog(); - } - - ngAfterViewInit(): void { - if (this.cpWidth !== 230 || this.cpDialogDisplay === 'inline') { - const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140; - const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140; - - this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth); - - this.updateColorPicker(false); - - this.cdRef.detectChanges(); - } - } - - public openDialog(color: any, emit: boolean = true): void { - this.service.setActive(this); - - if (!this.width) { - this.cpWidth = this.directiveElementRef.nativeElement.offsetWidth; - } - - if (!this.height) { - this.height = 320; - } - - this.setInitialColor(color); - - this.setColorFromString(color, emit); - - this.openColorPicker(); - } - - public closeDialog(): void { - this.closeColorPicker(); - } - - public setupDialog( - instance: any, - elementRef: ElementRef, - color: any, - cpWidth: string, - cpHeight: string, - cpDialogDisplay: string, - cpFallbackColor: string, - cpColorMode: string, - cpCmykEnabled: boolean, - cpAlphaChannel: AlphaChannel, - cpOutputFormat: OutputFormat, - cpDisableInput: boolean, - cpIgnoredElements: any, - cpSaveClickOutside: boolean, - cpCloseClickOutside: boolean, - cpUseRootViewContainer: boolean, - cpPosition: string, - cpPositionOffset: string, - cpPositionRelativeToArrow: boolean, - cpPresetLabel: string, - cpPresetColors: string[], - cpPresetColorsClass: string, - cpMaxPresetColorsLength: number, - cpPresetEmptyMessage: string, - cpPresetEmptyMessageClass: string, - cpOKButton: boolean, - cpOKButtonClass: string, - cpOKButtonText: string, - cpCancelButton: boolean, - cpCancelButtonClass: string, - cpCancelButtonText: string, - cpAddColorButton: boolean, - cpAddColorButtonClass: string, - cpAddColorButtonText: string, - cpRemoveColorButtonClass: string - ): void { - this.setInitialColor(color); - - this.setColorMode(cpColorMode); - - this.isIE10 = detectIE() === 10; - - this.directiveInstance = instance; - this.directiveElementRef = elementRef; - - this.cpDisableInput = cpDisableInput; - - this.cpCmykEnabled = cpCmykEnabled; - this.cpAlphaChannel = cpAlphaChannel; - this.cpOutputFormat = cpOutputFormat; - - this.cpDialogDisplay = cpDialogDisplay; - - this.cpIgnoredElements = cpIgnoredElements; - - this.cpSaveClickOutside = cpSaveClickOutside; - this.cpCloseClickOutside = cpCloseClickOutside; - - this.useRootViewContainer = cpUseRootViewContainer; - - this.width = this.cpWidth = parseInt(cpWidth, 10); - this.height = this.cpHeight = parseInt(cpHeight, 10); - - this.cpPosition = cpPosition; - this.cpPositionOffset = parseInt(cpPositionOffset, 10); - - this.cpOKButton = cpOKButton; - this.cpOKButtonText = cpOKButtonText; - this.cpOKButtonClass = cpOKButtonClass; - - this.cpCancelButton = cpCancelButton; - this.cpCancelButtonText = cpCancelButtonText; - this.cpCancelButtonClass = cpCancelButtonClass; - - this.fallbackColor = cpFallbackColor || '#fff'; - - this.setPresetConfig(cpPresetLabel, cpPresetColors); - - this.cpPresetColorsClass = cpPresetColorsClass; - this.cpMaxPresetColorsLength = cpMaxPresetColorsLength; - this.cpPresetEmptyMessage = cpPresetEmptyMessage; - this.cpPresetEmptyMessageClass = cpPresetEmptyMessageClass; - - this.cpAddColorButton = cpAddColorButton; - this.cpAddColorButtonText = cpAddColorButtonText; - this.cpAddColorButtonClass = cpAddColorButtonClass; - this.cpRemoveColorButtonClass = cpRemoveColorButtonClass; - - if (!cpPositionRelativeToArrow) { - this.dialogArrowOffset = 0; - } - - if (cpDialogDisplay === 'inline') { - this.dialogArrowSize = 0; - this.dialogArrowOffset = 0; - } - - if (cpOutputFormat === 'hex' && cpAlphaChannel !== 'always' && cpAlphaChannel !== 'forced') { - this.cpAlphaChannel = 'disabled'; - } - } - - public setColorMode(mode: string): void { - switch (mode.toString().toUpperCase()) { - case '1': - case 'C': - case 'COLOR': - this.cpColorMode = 1; - break; - case '2': - case 'G': - case 'GRAYSCALE': - this.cpColorMode = 2; - break; - case '3': - case 'P': - case 'PRESETS': - this.cpColorMode = 3; - break; - default: - this.cpColorMode = 1; - } - } - - public setInitialColor(color: any): void { - this.initialColor = color; - } - - public setPresetConfig(cpPresetLabel: string, cpPresetColors: string[]): void { - this.cpPresetLabel = cpPresetLabel; - this.cpPresetColors = cpPresetColors; - } - - public setColorFromString(value: string, emit: boolean = true, update: boolean = true): void { - let hsva: Hsva | null; - - if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'forced') { - hsva = this.service.stringToHsva(value, true); - - if (!hsva && !this.hsva) { - hsva = this.service.stringToHsva(value, false); - } - } else { - hsva = this.service.stringToHsva(value, false); - } - - if (!hsva && !this.hsva) { - hsva = this.service.stringToHsva(this.fallbackColor, false); - } - - if (hsva) { - this.hsva = hsva; - - this.sliderH = this.hsva.h; - - if (this.cpOutputFormat === 'hex' && this.cpAlphaChannel === 'disabled') { - this.hsva.a = 1; - } - - this.updateColorPicker(emit, update); - } - } - - public onResize(): void { - if (this.position === 'fixed') { - this.setDialogPosition(); - } else if (this.cpDialogDisplay !== 'inline') { - this.closeColorPicker(); - } - } - - public onDragEnd(slider: string): void { - this.directiveInstance.sliderDragEnd({ slider: slider, color: this.outputColor }); - } - - public onDragStart(slider: string): void { - this.directiveInstance.sliderDragStart({ slider: slider, color: this.outputColor }); - } - - public onMouseDown(event: MouseEvent): void { - if ( - this.show && - !this.isIE10 && - this.cpDialogDisplay === 'popup' && - event.target !== this.directiveElementRef.nativeElement && - !this.isDescendant(this.elRef.nativeElement, event.target) && - !this.isDescendant(this.directiveElementRef.nativeElement, event.target) && - this.cpIgnoredElements.filter((item: any) => item === event.target).length === 0 - ) { - if (this.cpSaveClickOutside) { - this.directiveInstance.colorSelected(this.outputColor); - } else { - this.hsva = null; - - this.setColorFromString(this.initialColor, false); - - if (this.cpCmykEnabled) { - this.directiveInstance.cmykChanged(this.cmykColor); - } - - this.directiveInstance.colorChanged(this.initialColor); - - this.directiveInstance.colorCanceled(); - } - - if (this.cpCloseClickOutside) { - this.closeColorPicker(); - } - } - } - - public onAcceptColor(event: Event): void { - event.stopPropagation(); - - if (this.outputColor) { - this.directiveInstance.colorSelected(this.outputColor); - } - - if (this.cpDialogDisplay === 'popup') { - this.closeColorPicker(); - } - } - - public onCancelColor(event: Event): void { - this.hsva = null; - - event.stopPropagation(); - - this.directiveInstance.colorCanceled(); - - this.setColorFromString(this.initialColor, true); - - if (this.cpDialogDisplay === 'popup') { - if (this.cpCmykEnabled) { - this.directiveInstance.cmykChanged(this.cmykColor); - } - - this.directiveInstance.colorChanged(this.initialColor, true); - - this.closeColorPicker(); - } - } - - public onFormatToggle(change: number): void { - const availableFormats = this.dialogInputFields.length - (this.cpCmykEnabled ? 0 : 1); - - const nextFormat = - (((this.dialogInputFields.indexOf(this.format) + change) % availableFormats) + availableFormats) % - availableFormats; - - this.format = this.dialogInputFields[nextFormat]; - } - - public onColorChange(value: { s: number; v: number; rgX: number; rgY: number }): void { - this.hsva.s = value.s / value.rgX; - this.hsva.v = value.v / value.rgY; - - this.updateColorPicker(); - - this.directiveInstance.sliderChanged({ - slider: 'lightness', - value: this.hsva.v, - color: this.outputColor, - }); - - this.directiveInstance.sliderChanged({ - slider: 'saturation', - value: this.hsva.s, - color: this.outputColor, - }); - } - - public onHueChange(value: { v: number; rgX: number }): void { - this.hsva.h = value.v / value.rgX; - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - - this.directiveInstance.sliderChanged({ - slider: 'hue', - value: this.hsva.h, - color: this.outputColor, - }); - } - - public onValueChange(value: { v: number; rgX: number }): void { - this.hsva.v = value.v / value.rgX; - - this.updateColorPicker(); - - this.directiveInstance.sliderChanged({ - slider: 'value', - value: this.hsva.v, - color: this.outputColor, - }); - } - - public onAlphaChange(value: { v: number; rgX: number }): void { - this.hsva.a = value.v / value.rgX; - - this.updateColorPicker(); - - this.directiveInstance.sliderChanged({ - slider: 'alpha', - value: this.hsva.a, - color: this.outputColor, - }); - } - - public onHexInput(value: string | null): void { - if (value === null) { - this.updateColorPicker(); - } else { - if (value && value[0] !== '#') { - value = '#' + value; - } - - let validHex = /^#([a-f0-9]{3}|[a-f0-9]{6})$/gi; - - if (this.cpAlphaChannel === 'always') { - validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi; - } - - const valid = validHex.test(value); - - if (valid) { - if (value.length < 5) { - value = - '#' + - value - .substring(1) - .split('') - .map((c) => c + c) - .join(''); - } - - if (this.cpAlphaChannel === 'forced') { - value += Math.round(this.hsva.a * 255).toString(16); - } - - this.setColorFromString(value, true, false); - } - - this.directiveInstance.inputChanged({ - input: 'hex', - valid: valid, - value: value, - color: this.outputColor, - }); - } - } - - public onRedInput(value: { v: number; rg: number }): void { - const rgba = this.service.hsvaToRgba(this.hsva); - - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - rgba.r = value.v / value.rg; - - this.hsva = this.service.rgbaToHsva(rgba); - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'red', - valid: valid, - value: rgba.r, - color: this.outputColor, - }); - } - - public onBlueInput(value: { v: number; rg: number }): void { - const rgba = this.service.hsvaToRgba(this.hsva); - - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - rgba.b = value.v / value.rg; - - this.hsva = this.service.rgbaToHsva(rgba); - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'blue', - valid: valid, - value: rgba.b, - color: this.outputColor, - }); - } - - public onGreenInput(value: { v: number; rg: number }): void { - const rgba = this.service.hsvaToRgba(this.hsva); - - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - rgba.g = value.v / value.rg; - - this.hsva = this.service.rgbaToHsva(rgba); - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'green', - valid: valid, - value: rgba.g, - color: this.outputColor, - }); - } - - public onHueInput(value: { v: number; rg: number }) { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.hsva.h = value.v / value.rg; - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'hue', - valid: valid, - value: this.hsva.h, - color: this.outputColor, - }); - } - - public onValueInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.hsva.v = value.v / value.rg; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'value', - valid: valid, - value: this.hsva.v, - color: this.outputColor, - }); - } - - public onAlphaInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.hsva.a = value.v / value.rg; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'alpha', - valid: valid, - value: this.hsva.a, - color: this.outputColor, - }); - } - - public onLightnessInput(value: { v: number; rg: number }): void { - const hsla = this.service.hsva2hsla(this.hsva); - - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - hsla.l = value.v / value.rg; - - this.hsva = this.service.hsla2hsva(hsla); - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'lightness', - valid: valid, - value: hsla.l, - color: this.outputColor, - }); - } - - public onSaturationInput(value: { v: number; rg: number }): void { - const hsla = this.service.hsva2hsla(this.hsva); - - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - hsla.s = value.v / value.rg; - - this.hsva = this.service.hsla2hsva(hsla); - - this.sliderH = this.hsva.h; - - this.updateColorPicker(); - } - - this.directiveInstance.inputChanged({ - input: 'saturation', - valid: valid, - value: hsla.s, - color: this.outputColor, - }); - } - - public onCyanInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.cmyk.c = value.v; - - this.updateColorPicker(false, true, true); - } - - this.directiveInstance.inputChanged({ - input: 'cyan', - valid: true, - value: this.cmyk.c, - color: this.outputColor, - }); - } - - public onMagentaInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.cmyk.m = value.v; - - this.updateColorPicker(false, true, true); - } - - this.directiveInstance.inputChanged({ - input: 'magenta', - valid: true, - value: this.cmyk.m, - color: this.outputColor, - }); - } - - public onYellowInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.cmyk.y = value.v; - - this.updateColorPicker(false, true, true); - } - - this.directiveInstance.inputChanged({ - input: 'yellow', - valid: true, - value: this.cmyk.y, - color: this.outputColor, - }); - } - - public onBlackInput(value: { v: number; rg: number }): void { - const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg; - - if (valid) { - this.cmyk.k = value.v; - - this.updateColorPicker(false, true, true); - } - - this.directiveInstance.inputChanged({ - input: 'black', - valid: true, - value: this.cmyk.k, - color: this.outputColor, - }); - } - - public onAddPresetColor(event: any, value: string): void { - event.stopPropagation(); - - if (!this.cpPresetColors.filter((color) => color === value).length) { - this.cpPresetColors = this.cpPresetColors.concat(value); - - this.directiveInstance.presetColorsChanged(this.cpPresetColors); - } - } - - public onRemovePresetColor(event: any, value: string): void { - event.stopPropagation(); - - this.cpPresetColors = this.cpPresetColors.filter((color) => color !== value); - - this.directiveInstance.presetColorsChanged(this.cpPresetColors); - } - - // Private helper functions for the color picker dialog status - - private openColorPicker(): void { - if (!this.show) { - this.show = true; - this.hidden = true; - - setTimeout(() => { - this.hidden = false; - - this.setDialogPosition(); - - this.cdRef.detectChanges(); - }, 0); - - this.directiveInstance.stateChanged(true); - - if (!this.isIE10) { - document.addEventListener('mousedown', this.listenerMouseDown); - document.addEventListener('touchstart', this.listenerMouseDown); - } - - window.addEventListener('resize', this.listenerResize); - } - } - - private closeColorPicker(): void { - if (this.show) { - this.show = false; - - this.directiveInstance.stateChanged(false); - - if (!this.isIE10) { - document.removeEventListener('mousedown', this.listenerMouseDown); - document.removeEventListener('touchstart', this.listenerMouseDown); - } - - window.removeEventListener('resize', this.listenerResize); - - if (!this.cdRef['destroyed']) { - this.cdRef.detectChanges(); - } - } - } - - private updateColorPicker(emit: boolean = true, update: boolean = true, cmykInput: boolean = false): void { - if (this.sliderDimMax) { - if (this.cpColorMode === 2) { - this.hsva.s = 0; - } - - let hue: Rgba, hsla: Hsla, rgba: Rgba; - - const lastOutput = this.outputColor; - - hsla = this.service.hsva2hsla(this.hsva); - - if (!this.cpCmykEnabled) { - rgba = this.service.denormalizeRGBA(this.service.hsvaToRgba(this.hsva)); - } else { - if (!cmykInput) { - rgba = this.service.hsvaToRgba(this.hsva); - - this.cmyk = this.service.denormalizeCMYK(this.service.rgbaToCmyk(rgba)); - } else { - rgba = this.service.cmykToRgb(this.service.normalizeCMYK(this.cmyk)); - - this.hsva = this.service.rgbaToHsva(rgba); - } - - rgba = this.service.denormalizeRGBA(rgba); - - this.sliderH = this.hsva.h; - } - - hue = this.service.denormalizeRGBA(this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1))); - - if (update) { - this.hslaText = new Hsla( - Math.round(hsla.h * 360), - Math.round(hsla.s * 100), - Math.round(hsla.l * 100), - Math.round(hsla.a * 100) / 100 - ); - - this.rgbaText = new Rgba(rgba.r, rgba.g, rgba.b, Math.round(rgba.a * 100) / 100); - - if (this.cpCmykEnabled) { - this.cmykText = new Cmyk( - this.cmyk.c, - this.cmyk.m, - this.cmyk.y, - this.cmyk.k, - Math.round(this.cmyk.a * 100) / 100 - ); - } - - const allowHex8 = this.cpAlphaChannel === 'always'; - - this.hexText = this.service.rgbaToHex(rgba, allowHex8); - this.hexAlpha = this.rgbaText.a; - } - - if (this.cpOutputFormat === 'auto') { - if (this.format !== ColorFormats.RGBA && this.format !== ColorFormats.CMYK) { - if (this.hsva.a < 1) { - this.format = this.hsva.a < 1 ? ColorFormats.RGBA : ColorFormats.HEX; - } - } - } - - this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')'; - this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')'; - - this.outputColor = this.service.outputFormat(this.hsva, this.cpOutputFormat, this.cpAlphaChannel); - this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null); - - if (this.format !== ColorFormats.CMYK) { - this.cmykColor = ''; - } else { - if ( - this.cpAlphaChannel === 'always' || - this.cpAlphaChannel === 'enabled' || - this.cpAlphaChannel === 'forced' - ) { - const alpha = Math.round(this.cmyk.a * 100) / 100; - - this.cmykColor = `cmyka(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k},${alpha})`; - } else { - this.cmykColor = `cmyk(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k})`; - } - } - - this.slider = new SliderPosition( - (this.sliderH || this.hsva.h) * this.sliderDimMax.h - 8, - this.hsva.s * this.sliderDimMax.s - 8, - (1 - this.hsva.v) * this.sliderDimMax.v - 8, - this.hsva.a * this.sliderDimMax.a - 8 - ); - - if (emit && lastOutput !== this.outputColor) { - if (this.cpCmykEnabled) { - this.directiveInstance.cmykChanged(this.cmykColor); - } - - this.directiveInstance.colorChanged(this.outputColor); - } - } - } - - // Private helper functions for the color picker dialog positioning - - private setDialogPosition(): void { - if (this.cpDialogDisplay === 'inline') { - this.position = 'relative'; - } else { - let position = 'static', - transform = '', - style; - - let parentNode: any = null, - transformNode: any = null; - - let node = this.directiveElementRef.nativeElement.parentNode; - - const dialogHeight = this.dialogElement.nativeElement.offsetHeight; - - while (node !== null && node.tagName !== 'HTML') { - style = window.getComputedStyle(node); - position = style.getPropertyValue('position'); - transform = style.getPropertyValue('transform'); - - if (position !== 'static' && parentNode === null) { - parentNode = node; - } - - if (transform && transform !== 'none' && transformNode === null) { - transformNode = node; - } - - if (position === 'fixed') { - parentNode = transformNode; - - break; - } - - node = node.parentNode; - } - - const boxDirective = this.createDialogBox(this.directiveElementRef.nativeElement, position !== 'fixed'); - - if ( - this.useRootViewContainer || - (position === 'fixed' && (!parentNode || parentNode instanceof HTMLUnknownElement)) - ) { - this.top = boxDirective.top; - this.left = boxDirective.left; - } else { - if (parentNode === null) { - parentNode = node; - } - - const boxParent = this.createDialogBox(parentNode, position !== 'fixed'); - - this.top = boxDirective.top - boxParent.top; - this.left = boxDirective.left - boxParent.left; - } - - if (position === 'fixed') { - this.position = 'fixed'; - } - - let usePosition = this.cpPosition; - - if (this.cpPosition === 'auto') { - const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect(); - usePosition = calculateAutoPositioning(dialogBounds); - } - - if (usePosition === 'top') { - this.arrowTop = dialogHeight - 1; - - this.top -= dialogHeight + this.dialogArrowSize; - this.left += (this.cpPositionOffset / 100) * boxDirective.width - this.dialogArrowOffset; - } else if (usePosition === 'bottom') { - this.top += boxDirective.height + this.dialogArrowSize; - this.left += (this.cpPositionOffset / 100) * boxDirective.width - this.dialogArrowOffset; - } else if (usePosition === 'top-left' || usePosition === 'left-top') { - this.top -= dialogHeight - boxDirective.height + (boxDirective.height * this.cpPositionOffset) / 100; - this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset; - } else if (usePosition === 'top-right' || usePosition === 'right-top') { - this.top -= dialogHeight - boxDirective.height + (boxDirective.height * this.cpPositionOffset) / 100; - this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset; - } else if (usePosition === 'left' || usePosition === 'bottom-left' || usePosition === 'left-bottom') { - this.top += (boxDirective.height * this.cpPositionOffset) / 100 - this.dialogArrowOffset; - this.left -= this.cpWidth + this.dialogArrowSize - 2; - } else { - // usePosition === 'right' || usePosition === 'bottom-right' || usePosition === 'right-bottom' - this.top += (boxDirective.height * this.cpPositionOffset) / 100 - this.dialogArrowOffset; - this.left += boxDirective.width + this.dialogArrowSize - 2; - } - } - } - - // Private helper functions for the color picker dialog positioning and opening - - private isDescendant(parent: any, child: any): boolean { - let node: any = child.parentNode; - - while (node !== null) { - if (node === parent) { - return true; - } - - node = node.parentNode; - } - - return false; - } - - private createDialogBox(element: any, offset: boolean): any { - return { - top: element.getBoundingClientRect().top + (offset ? window.pageYOffset : 0), - left: element.getBoundingClientRect().left + (offset ? window.pageXOffset : 0), - width: element.offsetWidth, - height: element.offsetHeight, - }; - } -} diff --git a/libs/ui/color-picker/src/lib/color-picker/formats.ts b/libs/ui/color-picker/src/lib/color-picker/formats.ts deleted file mode 100644 index e54779c5..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/formats.ts +++ /dev/null @@ -1,22 +0,0 @@ -export enum ColorFormats { - HEX, - RGBA, - HSLA, - CMYK, -} - -export class Rgba { - constructor(public r: number, public g: number, public b: number, public a: number) {} -} - -export class Hsva { - constructor(public h: number, public s: number, public v: number, public a: number) {} -} - -export class Hsla { - constructor(public h: number, public s: number, public l: number, public a: number) {} -} - -export class Cmyk { - constructor(public c: number, public m: number, public y: number, public k: number, public a: number = 1) {} -} diff --git a/libs/ui/color-picker/src/lib/color-picker/helpers.ts b/libs/ui/color-picker/src/lib/color-picker/helpers.ts deleted file mode 100644 index 9bee5efa..00000000 --- a/libs/ui/color-picker/src/lib/color-picker/helpers.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { Directive, Input, Output, EventEmitter, HostListener, ElementRef } from '@angular/core'; - -export type ColorMode = 'color' | 'c' | '1' | 'grayscale' | 'g' | '2' | 'presets' | 'p' | '3'; - -export type AlphaChannel = 'enabled' | 'disabled' | 'always' | 'forced'; - -export type BoundingRectangle = { - top: number; - bottom: number; - left: number; - right: number; - height: number; - width: number; -}; - -export type OutputFormat = 'auto' | 'hex' | 'rgba' | 'hsla'; - -export function calculateAutoPositioning(elBounds: BoundingRectangle): string { - // Defaults - let usePositionX = 'right'; - let usePositionY = 'bottom'; - - // Calculate collisions - const { height, width, top, bottom, left, right } = elBounds; - const collisionTop = top - height < 0; - const collisionBottom = bottom + height > (window.innerHeight || document.documentElement.clientHeight); - const collisionLeft = left - width < 0; - const collisionRight = right + width > (window.innerWidth || document.documentElement.clientWidth); - const collisionAll = collisionTop && collisionBottom && collisionLeft && collisionRight; - - // Generate X & Y position values - if (collisionBottom) { - usePositionY = 'top'; - } - - if (collisionTop) { - usePositionY = 'bottom'; - } - - if (collisionLeft) { - usePositionX = 'right'; - } - - if (collisionRight) { - usePositionX = 'left'; - } - - // Choose the largest gap available - if (collisionAll) { - const postions = ['left', 'right', 'top', 'bottom']; - return postions.reduce((prev, next) => (elBounds[prev] > elBounds[next] ? prev : next)); - } - - if (collisionLeft && collisionRight) { - if (collisionTop) return 'bottom'; - if (collisionBottom) return 'top'; - return top > bottom ? 'top' : 'bottom'; - } - - if (collisionTop && collisionBottom) { - if (collisionLeft) return 'right'; - if (collisionRight) return 'left'; - return left > right ? 'left' : 'right'; - } - - return `${usePositionY}-${usePositionX}`; -} - -export function detectIE(): boolean | number { - let ua = ''; - - if (typeof navigator !== 'undefined') { - ua = navigator.userAgent.toLowerCase(); - } - - const msie = ua.indexOf('msie '); - - if (msie > 0) { - // IE 10 or older => return version number - return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); - } - - // Other browser - return false; -} - -@Directive({ - selector: '[text]', -}) -export class TextDirective { - @Input() rg: number; - @Input() text: any; - - @Output() newValue = new EventEmitter(); - - @HostListener('input', ['$event']) inputChange(event: any): void { - const value = event.target.value; - - if (this.rg === undefined) { - this.newValue.emit(value); - } else { - const numeric = parseFloat(value); - - this.newValue.emit({ v: numeric, rg: this.rg }); - } - } -} - -@Directive({ - selector: '[slider]', -}) -export class SliderDirective { - private listenerMove: any; - private listenerStop: any; - - @Input() rgX: number; - @Input() rgY: number; - - @Input() slider: string; - - @Output() dragEnd = new EventEmitter(); - @Output() dragStart = new EventEmitter(); - - @Output() newValue = new EventEmitter(); - - @HostListener('mousedown', ['$event']) mouseDown(event: any): void { - this.start(event); - } - - @HostListener('touchstart', ['$event']) touchStart(event: any): void { - this.start(event); - } - - constructor(private elRef: ElementRef) { - this.listenerMove = (event: any) => this.move(event); - - this.listenerStop = () => this.stop(); - } - - private move(event: any): void { - event.preventDefault(); - - this.setCursor(event); - } - - private start(event: any): void { - this.setCursor(event); - - event.stopPropagation(); - - document.addEventListener('mouseup', this.listenerStop); - document.addEventListener('touchend', this.listenerStop); - document.addEventListener('mousemove', this.listenerMove); - document.addEventListener('touchmove', this.listenerMove); - - this.dragStart.emit(); - } - - private stop(): void { - document.removeEventListener('mouseup', this.listenerStop); - document.removeEventListener('touchend', this.listenerStop); - document.removeEventListener('mousemove', this.listenerMove); - document.removeEventListener('touchmove', this.listenerMove); - - this.dragEnd.emit(); - } - - private getX(event: any): number { - const position = this.elRef.nativeElement.getBoundingClientRect(); - - const pageX = event.pageX !== undefined ? event.pageX : event.touches[0].pageX; - - return pageX - position.left - window.pageXOffset; - } - - private getY(event: any): number { - const position = this.elRef.nativeElement.getBoundingClientRect(); - - const pageY = event.pageY !== undefined ? event.pageY : event.touches[0].pageY; - - return pageY - position.top - window.pageYOffset; - } - - private setCursor(event: any): void { - const width = this.elRef.nativeElement.offsetWidth; - const height = this.elRef.nativeElement.offsetHeight; - - const x = Math.max(0, Math.min(this.getX(event), width)); - const y = Math.max(0, Math.min(this.getY(event), height)); - - if (this.rgX !== undefined && this.rgY !== undefined) { - this.newValue.emit({ s: x / width, v: 1 - y / height, rgX: this.rgX, rgY: this.rgY }); - } else if (this.rgX === undefined && this.rgY !== undefined) { - this.newValue.emit({ v: y / height, rgY: this.rgY }); - } else if (this.rgX !== undefined && this.rgY === undefined) { - this.newValue.emit({ v: x / width, rgX: this.rgX }); - } - } -} - -export class SliderPosition { - constructor(public h: number, public s: number, public v: number, public a: number) {} -} - -export class SliderDimension { - constructor(public h: number, public s: number, public v: number, public a: number) {} -} diff --git a/libs/ui/color-picker/src/lib/ui-color-picker.module.ts b/libs/ui/color-picker/src/lib/ui-color-picker.module.ts deleted file mode 100644 index a9f0e434..00000000 --- a/libs/ui/color-picker/src/lib/ui-color-picker.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { LibColorPickerModule } from './color-picker/color-picker.module'; - -@NgModule({ - imports: [CommonModule, LibColorPickerModule], - exports: [LibColorPickerModule], -}) -export class UiColorPickerModule {} diff --git a/libs/ui/color-picker/tsconfig.json b/libs/ui/color-picker/tsconfig.json deleted file mode 100644 index fbba9f7d..00000000 --- a/libs/ui/color-picker/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/color-picker/tsconfig.lib.json b/libs/ui/color-picker/tsconfig.lib.json deleted file mode 100644 index 476ca8bc..00000000 --- a/libs/ui/color-picker/tsconfig.lib.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "target": "es2015", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [], - "lib": ["dom", "es2018"] - }, - "angularCompilerOptions": { - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "enableResourceInlining": true - }, - "exclude": ["jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/color-picker/tsconfig.spec.json b/libs/ui/color-picker/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/color-picker/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/compose-wrapper/.eslintrc.json b/libs/ui/compose-wrapper/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/compose-wrapper/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/compose-wrapper/README.md b/libs/ui/compose-wrapper/README.md deleted file mode 100644 index 86dbf4fe..00000000 --- a/libs/ui/compose-wrapper/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-compose-wrapper - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/compose-wrapper/project.json b/libs/ui/compose-wrapper/project.json deleted file mode 100644 index 4671e8aa..00000000 --- a/libs/ui/compose-wrapper/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-compose-wrapper", - "projectType": "library", - "sourceRoot": "libs/ui/compose-wrapper/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/compose-wrapper/**/*.ts", "libs/ui/compose-wrapper/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/compose-wrapper/src/index.ts b/libs/ui/compose-wrapper/src/index.ts deleted file mode 100644 index e3f42ba7..00000000 --- a/libs/ui/compose-wrapper/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-compose-wrapper.module'; diff --git a/libs/ui/compose-wrapper/src/lib/compose/compose.component.html b/libs/ui/compose-wrapper/src/lib/compose/compose.component.html deleted file mode 100644 index 746bed37..00000000 --- a/libs/ui/compose-wrapper/src/lib/compose/compose.component.html +++ /dev/null @@ -1,47 +0,0 @@ -
    -
    - -

    - {{ composeTitle }} -

    -
    - - - -
    -
    - -
    diff --git a/libs/ui/compose-wrapper/src/lib/compose/compose.component.ts b/libs/ui/compose-wrapper/src/lib/compose/compose.component.ts deleted file mode 100644 index 27e3e718..00000000 --- a/libs/ui/compose-wrapper/src/lib/compose/compose.component.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { - Component, - EventEmitter, - Inject, - Input, - OnChanges, - OnDestroy, - OnInit, - Output, - SimpleChanges, -} from '@angular/core'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; -import { DOCUMENT } from '@angular/common'; -// import { Agent } from '../../hello/models/team'; -// import { distinctUntilChanged, takeUntil } from 'rxjs/operators'; -// import { isEqual } from 'lodash'; -// import { select, Store } from '@ngrx/store'; -// import { Agent } from 'http'; -// import { IAppState } from '../../store/reducers/app.state'; -// import { selectRootUserSetting } from '../../store/selectors'; -// import { generalActions } from '../../store/actions'; - -@Component({ - selector: 'proxy-compose-wrapper', - templateUrl: './compose.component.html', - styleUrls: ['./compose.component.scss'], -}) -export class ComposeWrapperComponent extends BaseComponent implements OnInit, OnDestroy, OnChanges { - // public loggedInAgent$: Observable; - // @Input() public loggedInAgent: Agent; - @Input() public minimizeMailCompose: boolean = false; - @Input() public fullScreenMailCompose: boolean = false; - @Input() public composeTitle: string = ''; - @Output() public fullScreenMailComposeValue = new EventEmitter(); - @Output() public minimizeMailComposeValue = new EventEmitter(); - @Output() public closeDialogModel = new EventEmitter(); - - constructor( - // private rootStore: Store, - public dialog: MatDialog, - // public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data, - @Inject(DOCUMENT) private document: Document - ) { - super(); - - // this.loggedInAgent$ = this.rootStore.pipe( - // select(selectRootUserSetting), - // distinctUntilChanged(isEqual), - // takeUntil(this.destroy$) - // ); - } - - public ngOnInit(): void { - // this.loggedInAgent$.pipe(distinctUntilChanged(isEqual), takeUntil(this.destroy$)).subscribe((res) => { - // this.loggedInAgent = { - // id: res?.id, - // email_id: res?.email, - // personal_number: res?.mobileNo, - // username: res?.userName, - // name: res?.firstName + ' ' + res?.lastName, - // }; - // }); - } - - public ngOnDestroy(): void { - this.exitFullScreen(); - super.ngOnDestroy(); - } - - public onNoClick(): void { - const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = dialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure you want to discard?`; - componentInstance.confirmButtonText = 'Confirm'; - dialogRef.afterClosed().subscribe((action) => { - if (action === 'yes') { - // this.resetComposeState(); - // this.dialogRef.close(); - this.closeDialogModel.emit(null); - this.exitFullScreen(); - } - }); - } - - public closeComposeDialog(res): void { - // this.resetComposeState(); - // this.dialogRef.close(res); - this.closeDialogModel.emit(res); - } - - private resetComposeState(): void { - switch (this.data.composeType) { - // case 'mail': - // this.rootStore.dispatch(generalActions.mailComposeState({ mailComposeOpenState: false })); - // break; - // case 'campaign': - // this.rootStore.dispatch(generalActions.campaignComposeState({ campaignComposeOpenState: false })); - // break; - default: - break; - } - } - - /** - * Show Compose Header Title - * - * @param {string} event - * @memberof ComposeDialogComponent - */ - public showComposeTitle(event: string) { - this.composeTitle = event ? `- ${event}` : ''; - } - - public showFullScreen(): void { - const doc = this.document.getElementsByTagName('body')[0]; - if (!doc.classList.contains('compose-full-screen')) { - doc.classList.add('compose-full-screen'); - } else { - doc.classList.remove('compose-full-screen'); - } - } - - public exitFullScreen(): void { - const doc = this.document.getElementsByTagName('body')[0]; - if (doc.classList.contains('compose-full-screen')) { - doc.classList.remove('compose-full-screen'); - } - } - - public ngOnChanges(changes: SimpleChanges): void { - if (changes?.minimizeMailCompose?.currentValue) { - this.exitFullScreen(); - setTimeout(() => { - this.fullScreenMailComposeValue.emit(false); - }, 0); - } - } -} diff --git a/libs/ui/compose-wrapper/src/lib/ui-compose-wrapper.module.ts b/libs/ui/compose-wrapper/src/lib/ui-compose-wrapper.module.ts deleted file mode 100644 index d47b879d..00000000 --- a/libs/ui/compose-wrapper/src/lib/ui-compose-wrapper.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIconModule } from '@angular/material/icon'; -import { UiConfirmDialogModule } from '@proxy/ui/confirm-dialog'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { ComposeWrapperComponent } from './compose/compose.component'; - -@NgModule({ - declarations: [ComposeWrapperComponent], - imports: [CommonModule, MatButtonModule, MatIconModule, UiConfirmDialogModule, MatTooltipModule], - exports: [ComposeWrapperComponent], -}) -export class UiComposeWrapperModule {} diff --git a/libs/ui/compose-wrapper/tsconfig.json b/libs/ui/compose-wrapper/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/compose-wrapper/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/compose-wrapper/tsconfig.lib.json b/libs/ui/compose-wrapper/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/compose-wrapper/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/confirm-dialog/project.json b/libs/ui/confirm-dialog/project.json index 4484979d..22cd33d6 100644 --- a/libs/ui/confirm-dialog/project.json +++ b/libs/ui/confirm-dialog/project.json @@ -5,7 +5,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/confirm-dialog/**/*.ts", "libs/ui/confirm-dialog/**/*.html"] } diff --git a/libs/ui/confirm-dialog/src/index.ts b/libs/ui/confirm-dialog/src/index.ts index fb8c6832..396cd28d 100644 --- a/libs/ui/confirm-dialog/src/index.ts +++ b/libs/ui/confirm-dialog/src/index.ts @@ -1,2 +1 @@ -export * from './lib/ui-confirm-dialog.module'; export * from './lib/confirm-dialog/confirm-dialog.component'; diff --git a/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.html b/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.html index bf93e8df..98706459 100644 --- a/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.html +++ b/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.html @@ -1,31 +1,32 @@ -

    -
    -

    -
    -
    +

    + +

    +
    + + @if (showCancelButton()) { + } @if (showConfirmButton()) { -
    + } + diff --git a/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.ts b/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.ts index 9c1b8e95..4365de63 100644 --- a/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.ts +++ b/libs/ui/confirm-dialog/src/lib/confirm-dialog/confirm-dialog.component.ts @@ -1,36 +1,40 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, input, inject } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { A11yModule } from '@angular/cdk/a11y'; import { MatDialogRef } from '@angular/material/dialog'; +import { MatDialogModule } from '@angular/material/dialog'; @Component({ selector: 'proxy-confirm-dialog', + imports: [MatButtonModule, A11yModule, MatDialogModule], templateUrl: './confirm-dialog.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class ConfirmDialogComponent { + public dialogRef = inject>(MatDialogRef); + /** Title of dialog */ - @Input() public title: string = 'Confirmation'; + public title = input('Confirmation'); /** Confirmation message of dialog */ - @Input() public confirmationMessage: string = 'Are you sure to perform this operation?'; + public confirmationMessage = input('Are you sure to perform this operation?'); /** Confirm button text of dialog */ - @Input() public confirmButtonText: string = 'Yes'; + public confirmButtonText = input('Yes'); /** Cancel button text of dialog */ - @Input() public cancelButtonText: string = 'Cancel'; + public cancelButtonText = input('Cancel'); /** Show Footer Action Button Position */ - @Input() public footerButtonPosition: string = 'justify-content-end'; + public footerButtonPosition = input('justify-content-end'); /** Confirm button color */ - @Input() public confirmButtonColor: string = 'warn'; + public confirmButtonColor = input('warn'); /** Cancel button color */ - @Input() public cancelButtonColor: string = ''; + public cancelButtonColor = input(''); /** True, if need to show confirm button */ - @Input() public showConfirmButton: boolean = true; + public showConfirmButton = input(true); /** True, if need to show cancel button */ - @Input() public showCancelButton: boolean = true; + public showCancelButton = input(true); /** True, if need to change confirm button type */ - @Input() public confirmButtonClass: string = 'mat-flat-button'; + public confirmButtonClass = input('mat-flat-button'); /** True, if need to change cancel button type*/ - @Input() public cancelButtonClass: string = 'mat-button'; - - constructor(public dialogRef: MatDialogRef) {} + public cancelButtonClass = input('mat-button'); /** * Closes the dialog with user provided action diff --git a/libs/ui/confirm-dialog/src/lib/ui-confirm-dialog.module.ts b/libs/ui/confirm-dialog/src/lib/ui-confirm-dialog.module.ts deleted file mode 100644 index 29ce3609..00000000 --- a/libs/ui/confirm-dialog/src/lib/ui-confirm-dialog.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { A11yModule } from '@angular/cdk/a11y'; -import { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component'; - -@NgModule({ - declarations: [ConfirmDialogComponent], - exports: [ConfirmDialogComponent], - imports: [CommonModule, MatButtonModule, A11yModule], -}) -export class UiConfirmDialogModule {} diff --git a/libs/ui/copy-button/project.json b/libs/ui/copy-button/project.json index 958051be..def68d99 100644 --- a/libs/ui/copy-button/project.json +++ b/libs/ui/copy-button/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/copy-button/**/*.ts", "libs/ui/copy-button/**/*.html"] } diff --git a/libs/ui/copy-button/src/index.ts b/libs/ui/copy-button/src/index.ts index bf83c834..e4cc5470 100644 --- a/libs/ui/copy-button/src/index.ts +++ b/libs/ui/copy-button/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-copy-button.module'; +export * from './lib/copy-button.component'; diff --git a/libs/ui/copy-button/src/lib/ui-copy-button.module.ts b/libs/ui/copy-button/src/lib/copy-button.component.ts similarity index 53% rename from libs/ui/copy-button/src/lib/ui-copy-button.module.ts rename to libs/ui/copy-button/src/lib/copy-button.component.ts index 5d30bae2..a4f2d75d 100644 --- a/libs/ui/copy-button/src/lib/ui-copy-button.module.ts +++ b/libs/ui/copy-button/src/lib/copy-button.component.ts @@ -1,6 +1,5 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { Component, Input } from '@angular/core'; +import { AsyncPipe } from '@angular/common'; +import { Component, ChangeDetectionStrategy, input } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; import { ClipboardModule } from '@angular/cdk/clipboard'; @@ -9,21 +8,23 @@ import { MatTooltipModule } from '@angular/material/tooltip'; @Component({ selector: 'proxy-copy-button', + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [AsyncPipe, MatButtonModule, MatIconModule, ClipboardModule, MatTooltipModule], template: ` @@ -74,7 +74,7 @@
    - + From today - Invalid Date Format. + @if (range.get('start').errors?.pattern) { + Invalid Date Format. + } - + To today - Invalid Date Format. + @if (range.get('end').errors?.pattern) { + Invalid Date Format. + }
    @@ -106,31 +110,27 @@ [selected]="calenderDateRange" (selectedChange)="selectedChange($event)" [maxDate]="today" - [minDate]="minDate" + [minDate]="minDate()" >
    -

    - Future Date Selected. -

    -

    + @if (selectedDateIsGreaterThenToday) { +

    Future Date Selected.

    + } @if (selectedDateIsSmallerThenMinDate) { +

    Date Selected older then available data.

    + }
    - -
    - - +
    + + -
    -
    -
    diff --git a/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.scss b/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.scss deleted file mode 100644 index 5de9d1b5..00000000 --- a/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.scss +++ /dev/null @@ -1,6 +0,0 @@ -.upload-attached-file { - border: 1px dashed var(--color-common-border); - background-color: var(--color-common-bg); - border-radius: var(--border-common-radius); - padding: 10px; -} diff --git a/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.ts b/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.ts deleted file mode 100644 index f9119ea5..00000000 --- a/libs/ui/file-upload/src/lib/upload-attached-file-preview/upload-attached-file-preview.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; - -@Component({ - selector: 'proxy-upload-attached-file-preview', - templateUrl: './upload-attached-file-preview.component.html', - styleUrls: ['./upload-attached-file-preview.component.scss'], -}) -export class UploadAttachedFilePreviewComponent implements OnInit { - /** File upload preview details */ - @Input() public filePreviewDetails; - /** Emits when the preview delete */ - @Output() public deleteFile: EventEmitter = new EventEmitter(); - - constructor() {} - - public ngOnInit(): void {} -} diff --git a/libs/ui/file-upload/tsconfig.json b/libs/ui/file-upload/tsconfig.json deleted file mode 100644 index d5046229..00000000 --- a/libs/ui/file-upload/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ] -} diff --git a/libs/ui/file-upload/tsconfig.lib.json b/libs/ui/file-upload/tsconfig.lib.json deleted file mode 100644 index d48e70eb..00000000 --- a/libs/ui/file-upload/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/handle-domain/jest.config.ts b/libs/ui/handle-domain/jest.config.ts index 9af01c15..a1752553 100644 --- a/libs/ui/handle-domain/jest.config.ts +++ b/libs/ui/handle-domain/jest.config.ts @@ -2,10 +2,6 @@ export default { displayName: 'ui-handle-domain', preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, + globals: {}, coverageDirectory: '../../../coverage/libs/ui/handle-domain', }; diff --git a/libs/ui/handle-domain/project.json b/libs/ui/handle-domain/project.json index 1652cc4e..f16a15c9 100644 --- a/libs/ui/handle-domain/project.json +++ b/libs/ui/handle-domain/project.json @@ -6,13 +6,13 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/handle-domain/src/**/*.ts", "libs/ui/handle-domain/src/**/*.html"] } }, "test": { - "executor": "@nrwl/jest:jest", + "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/libs/ui/handle-domain"], "options": { "tsConfig": "libs/ui/handle-domain/tsconfig.lib.json", diff --git a/libs/ui/handle-domain/src/index.ts b/libs/ui/handle-domain/src/index.ts index 44da56fc..22ffdeea 100644 --- a/libs/ui/handle-domain/src/index.ts +++ b/libs/ui/handle-domain/src/index.ts @@ -1,2 +1 @@ -export * from './lib/ui-handle-domain.module'; export * from './lib/handle-domain/handle-domain'; diff --git a/libs/ui/handle-domain/src/lib/ui-handle-domain.module.ts b/libs/ui/handle-domain/src/lib/ui-handle-domain.module.ts deleted file mode 100644 index 6cf43ce4..00000000 --- a/libs/ui/handle-domain/src/lib/ui-handle-domain.module.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -@NgModule({ - imports: [CommonModule], -}) -export class UiHandleDomainModule {} diff --git a/libs/ui/handle-domain/tsconfig.lib.json b/libs/ui/handle-domain/tsconfig.lib.json index 794bd57e..627ec1a3 100644 --- a/libs/ui/handle-domain/tsconfig.lib.json +++ b/libs/ui/handle-domain/tsconfig.lib.json @@ -2,13 +2,14 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../../dist/out-tsc", - "target": "es2015", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], "lib": ["dom", "es2018"], - "resolveJsonModule": true + "resolveJsonModule": true, + "useDefineForClassFields": false }, "angularCompilerOptions": { "skipTemplateCodegen": true, diff --git a/libs/ui/ivr-dialer/.eslintrc.json b/libs/ui/ivr-dialer/.eslintrc.json deleted file mode 100644 index d65592ca..00000000 --- a/libs/ui/ivr-dialer/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/ivr-dialer/README.md b/libs/ui/ivr-dialer/README.md deleted file mode 100644 index eec2c17c..00000000 --- a/libs/ui/ivr-dialer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-components-ivr-dialer - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/ivr-dialer/project.json b/libs/ui/ivr-dialer/project.json deleted file mode 100644 index a5c801cd..00000000 --- a/libs/ui/ivr-dialer/project.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ui-components-ivr-dialer", - "$schema": "../../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/ivr-dialer/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/ivr-dialer/**/*.ts", "libs/ui/ivr-dialer/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/ivr-dialer/src/index.ts b/libs/ui/ivr-dialer/src/index.ts deleted file mode 100644 index ce5ed79e..00000000 --- a/libs/ui/ivr-dialer/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-components-ivr-dialer.module'; -export * from './lib/ivr-dialer/ivr-dialer.component'; diff --git a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.html b/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.html deleted file mode 100644 index 48feafc6..00000000 --- a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
    - -
    -
    -
    - - -
    -
    -
    -
    -
    -
    1
    -
    -
    2
    -
    -
    3
    -
    -
    -
    -
    4
    -
    -
    5
    -
    -
    6
    -
    -
    -
    -
    7
    -
    -
    8
    -
    -
    9
    -
    -
    -
    -
    *
    -
    -
    0
    -
    -
    #
    -
    -
    -
    diff --git a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.scss b/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.scss deleted file mode 100644 index 7bb54abb..00000000 --- a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.scss +++ /dev/null @@ -1,75 +0,0 @@ -.digit { - float: left; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - flex: 1; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', var(--font-family-common), 'Helvetica Neue', Arial, - sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - font-style: normal; - font-weight: 500; - font-size: 16px; - line-height: 45px; - width: 86px; - height: 62px; - color: var(--color-common-text); - span { - height: 45px; - width: 45px; - display: flex; - border-radius: 100%; - align-items: center; - justify-content: center; - - .plus-btn { - pointer-events: none; - } - } -} - -.sipcall-dialer { - input { - width: 100%; - height: 40px; - border-radius: var(--border-common-radius); - padding: 10px 8px 8px 8px; - outline: none; - display: block; - border: none; - background-color: #f2f2f3; - font-size: 16px; - font-weight: 400; - color: var(--color-common-text); - } - .input-wrapper { - position: relative; - .dig { - position: absolute; - height: 28px; - width: 28px; - padding: 0px; - right: 6px; - top: 6px; - background-color: transparent; - border-radius: var(--border-common-radius); - border: none !important; - border-color: transparent; - font-size: 33px; - display: flex; - justify-content: center; - align-items: center; - line-height: 1.2; - z-index: 99; - &:hover { - background-color: rgba(0, 0, 0, 0.2); - } - } - } -} - -.divider { - border-top: 1px solid; - border-left: 1px solid; - border-color: var(--color-common-border); -} diff --git a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.ts b/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.ts deleted file mode 100644 index 2ada0716..00000000 --- a/libs/ui/ivr-dialer/src/lib/ivr-dialer/ivr-dialer.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { BaseComponent } from '@proxy/ui/base-component'; -import { Component, Output, EventEmitter, OnDestroy } from '@angular/core'; -import { MatDialogRef } from '@angular/material/dialog'; - -@Component({ - selector: 'proxy-ivr-dialer', - templateUrl: './ivr-dialer.component.html', - styleUrls: ['./ivr-dialer.component.scss'], -}) -export class IvrDialerComponent extends BaseComponent implements OnDestroy { - @Output() sendDTMF = new EventEmitter(); - public dtmfInput = ''; - - constructor(public dialogRef: MatDialogRef) { - super(); - } - - public ngOnDestroy(): void { - super.ngOnDestroy(); - } - - public digitClicked(event): void { - this.dtmfInput += event.srcElement.id; - this.sendDTMF.emit(event.srcElement.id); - } - - public onNoClick() { - this.dialogRef.close(); - } -} diff --git a/libs/ui/ivr-dialer/src/lib/ui-components-ivr-dialer.module.ts b/libs/ui/ivr-dialer/src/lib/ui-components-ivr-dialer.module.ts deleted file mode 100644 index 212e99d1..00000000 --- a/libs/ui/ivr-dialer/src/lib/ui-components-ivr-dialer.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { MatInputModule } from '@angular/material/input'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIconModule } from '@angular/material/icon'; -import { MatRippleModule } from '@angular/material/core'; -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { IvrDialerComponent } from './ivr-dialer/ivr-dialer.component'; -import { FormsModule } from '@angular/forms'; - -@NgModule({ - imports: [CommonModule, MatRippleModule, MatIconModule, MatButtonModule, MatInputModule, FormsModule], - declarations: [IvrDialerComponent], - exports: [IvrDialerComponent], -}) -export class UiComponentsIvrDialerModule {} diff --git a/libs/ui/ivr-dialer/tsconfig.json b/libs/ui/ivr-dialer/tsconfig.json deleted file mode 100644 index 18bcf55f..00000000 --- a/libs/ui/ivr-dialer/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/ivr-dialer/tsconfig.lib.json b/libs/ui/ivr-dialer/tsconfig.lib.json deleted file mode 100644 index b8537fcc..00000000 --- a/libs/ui/ivr-dialer/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/loader/jest.config.ts b/libs/ui/loader/jest.config.ts index eac58141..23509b06 100644 --- a/libs/ui/loader/jest.config.ts +++ b/libs/ui/loader/jest.config.ts @@ -2,10 +2,6 @@ export default { displayName: 'ui-loader', preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, + globals: {}, coverageDirectory: '../../../coverage/libs/ui/loader', }; diff --git a/libs/ui/loader/project.json b/libs/ui/loader/project.json index 9ea37486..fdbe94e6 100644 --- a/libs/ui/loader/project.json +++ b/libs/ui/loader/project.json @@ -6,13 +6,13 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/loader/src/**/*.ts", "libs/ui/loader/src/**/*.html"] } }, "test": { - "executor": "@nrwl/jest:jest", + "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/libs/ui/loader"], "options": { "tsConfig": "libs/ui/loader/tsconfig.lib.json", diff --git a/libs/ui/loader/src/index.ts b/libs/ui/loader/src/index.ts index 4fa29bb7..fc0a7f90 100644 --- a/libs/ui/loader/src/index.ts +++ b/libs/ui/loader/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-loader.module'; +export * from './lib/loader.component'; diff --git a/libs/ui/loader/src/lib/loader.component.ts b/libs/ui/loader/src/lib/loader.component.ts index 5bf49105..35d12e33 100644 --- a/libs/ui/loader/src/lib/loader.component.ts +++ b/libs/ui/loader/src/lib/loader.component.ts @@ -1,16 +1,21 @@ -import { Component, Input, TemplateRef } from '@angular/core'; +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; @Component({ selector: 'proxy-loader', + imports: [MatProgressSpinnerModule], + changeDetection: ChangeDetectionStrategy.OnPush, template: ` -
    -
    +
    +
    - {{ message }} + {{ message() }}
    `, }) export class LoaderComponent { - @Input() public message: string = 'Loading...'; + public message = input('Loading...'); } diff --git a/libs/ui/loader/src/lib/ui-loader.module.ts b/libs/ui/loader/src/lib/ui-loader.module.ts deleted file mode 100644 index e0af4a2b..00000000 --- a/libs/ui/loader/src/lib/ui-loader.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { LoaderComponent } from './loader.component'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; - -@NgModule({ - declarations: [LoaderComponent], - imports: [CommonModule, MatProgressSpinnerModule], - exports: [LoaderComponent], -}) -export class UiLoaderModule {} diff --git a/libs/ui/loader/tsconfig.lib.json b/libs/ui/loader/tsconfig.lib.json index a89d0c95..b7f1cf56 100644 --- a/libs/ui/loader/tsconfig.lib.json +++ b/libs/ui/loader/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../../dist/out-tsc", - "target": "es2015", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["jest.config.ts"], "include": ["**/*.ts"] diff --git a/libs/ui/mat-autocomplete-wrapper/.eslintrc.json b/libs/ui/mat-autocomplete-wrapper/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/mat-autocomplete-wrapper/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/mat-autocomplete-wrapper/README.md b/libs/ui/mat-autocomplete-wrapper/README.md deleted file mode 100644 index 05638759..00000000 --- a/libs/ui/mat-autocomplete-wrapper/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-mat-autocomplete-wrapper - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/mat-autocomplete-wrapper/project.json b/libs/ui/mat-autocomplete-wrapper/project.json deleted file mode 100644 index 3d8ebb7e..00000000 --- a/libs/ui/mat-autocomplete-wrapper/project.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "ui-mat-autocomplete-wrapper", - "projectType": "library", - "sourceRoot": "libs/ui/mat-autocomplete-wrapper/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": [ - "libs/ui/mat-autocomplete-wrapper/**/*.ts", - "libs/ui/mat-autocomplete-wrapper/**/*.html" - ] - } - } - }, - "tags": [] -} diff --git a/libs/ui/mat-autocomplete-wrapper/src/index.ts b/libs/ui/mat-autocomplete-wrapper/src/index.ts deleted file mode 100644 index ab3e5b69..00000000 --- a/libs/ui/mat-autocomplete-wrapper/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-mat-autocomplete-wrapper.module'; diff --git a/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.html b/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.html deleted file mode 100644 index 3533c142..00000000 --- a/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.html +++ /dev/null @@ -1,35 +0,0 @@ - - Select {{ fieldName }} * - - - - {{ option.name }} - - - - {{ fieldName }} is required. - {{ fieldName }} select from list. - - - diff --git a/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.scss b/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.ts b/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.ts deleted file mode 100644 index 25c171b0..00000000 --- a/libs/ui/mat-autocomplete-wrapper/src/lib/mat-autocomplete/mat-autocomplete.component.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { - AfterViewInit, - Component, - ElementRef, - EventEmitter, - Input, - OnChanges, - OnInit, - Output, - SimpleChanges, - ViewChild, -} from '@angular/core'; -import { FormControl, Validators } from '@angular/forms'; -import { fromEvent } from 'rxjs'; -import { debounceTime, filter, take, takeUntil } from 'rxjs/operators'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { MatAutocompleteTrigger } from '@angular/material/autocomplete'; -import { cloneDeep } from 'lodash-es'; -import { CustomValidators } from '@proxy/custom-validator'; - -@Component({ - selector: 'proxy-mat-autocomplete', - templateUrl: './mat-autocomplete.component.html', - styleUrls: ['./mat-autocomplete.component.scss'], -}) -export class MatAutocompleteComponent extends BaseComponent implements OnInit, AfterViewInit, OnChanges { - @ViewChild('autoCompleteInput') public autoCompleteInput: ElementRef; - @ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger; - @Input() matFormControl: FormControl; - @Input() appearance = 'outline'; - @Input() labelFloat: boolean = true; - @Input() optionsList: any[] = []; - @Input() filteredKey: string; - @Input() fieldName: string; - @Input() disabledField: boolean = false; - @Input() useAutoSelect: boolean = true; - @Output() getSelectedValue: EventEmitter = new EventEmitter(); - public filteredList: any[] = []; - - constructor() { - super(); - } - - public ngOnInit(): void { - this.matFormControl.valueChanges - .pipe( - filter((e) => e), - take(1) - ) - .subscribe((res) => { - this.filteredList = cloneDeep(this.optionsList)?.filter((e) => - e[this.filteredKey]?.toLowerCase()?.includes(res?.toLowerCase()) - ); - this.updateValidations(); - }); - } - - public ngAfterViewInit() { - fromEvent(this.autoCompleteInput.nativeElement, 'input') - .pipe(debounceTime(700), takeUntil(this.destroy$)) - .subscribe((event: any) => { - this.filteredList = cloneDeep(this.optionsList)?.filter((e) => - e[this.filteredKey]?.toLowerCase()?.includes(event?.target?.value?.toLowerCase()) - ); - this.updateValidations(); - }); - } - - public ngOnChanges(changes: SimpleChanges): void { - if (changes?.optionsList && this.optionsList?.length) { - this.filteredList = cloneDeep(this.optionsList); - this.updateValidations(); - } - if (changes?.matFormControl && this.matFormControl?.value && this.optionsList?.length) { - this.filteredList = cloneDeep(this.optionsList)?.filter((e) => - e[this.filteredKey]?.toLowerCase()?.includes(this.matFormControl.value?.toLowerCase()) - ); - this.updateValidations(); - } - if (changes?.disabledField) { - this.matFormControl.disable(); - this.matFormControl.updateValueAndValidity(); - } - } - - public setControlValue(event): void { - if (this.useAutoSelect) { - this.matFormControl.setValue(event); - this.matFormControl.markAsDirty(); - this.selectOption(); - } - } - - public selectOption(): void { - this.getSelectedValue.emit(this.matFormControl.value); - } - - public clearValue(): void { - this.getSelectedValue.emit(null); - this.matFormControl.setValue(null); - this.filteredList = cloneDeep(this.optionsList); - this.updateValidations(); - } - - private updateValidations(): void { - this.matFormControl.setValidators([ - Validators.required, - CustomValidators.elementExistsInList(this.filteredList?.map((e) => e[this.filteredKey])), - ]); - this.matFormControl.updateValueAndValidity(); - } -} diff --git a/libs/ui/mat-autocomplete-wrapper/src/lib/ui-mat-autocomplete-wrapper.module.ts b/libs/ui/mat-autocomplete-wrapper/src/lib/ui-mat-autocomplete-wrapper.module.ts deleted file mode 100644 index 25a6617b..00000000 --- a/libs/ui/mat-autocomplete-wrapper/src/lib/ui-mat-autocomplete-wrapper.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatAutocompleteComponent } from './mat-autocomplete/mat-autocomplete.component'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatIconModule } from '@angular/material/icon'; -import { MatButtonModule } from '@angular/material/button'; - -@NgModule({ - declarations: [MatAutocompleteComponent], - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - MatAutocompleteModule, - MatFormFieldModule, - MatInputModule, - MatIconModule, - MatButtonModule, - ], - exports: [MatAutocompleteComponent], -}) -export class UiMatAutocompleteWrapperModule {} diff --git a/libs/ui/mat-autocomplete-wrapper/tsconfig.json b/libs/ui/mat-autocomplete-wrapper/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/mat-autocomplete-wrapper/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/mat-autocomplete-wrapper/tsconfig.lib.json b/libs/ui/mat-autocomplete-wrapper/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/mat-autocomplete-wrapper/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/mat-paginator-goto/project.json b/libs/ui/mat-paginator-goto/project.json index 20c0b17f..427e7974 100644 --- a/libs/ui/mat-paginator-goto/project.json +++ b/libs/ui/mat-paginator-goto/project.json @@ -5,7 +5,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/mat-paginator-goto/**/*.ts", "libs/ui/mat-paginator-goto/**/*.html"] } diff --git a/libs/ui/mat-paginator-goto/src/index.ts b/libs/ui/mat-paginator-goto/src/index.ts index 2b9183f9..f9215249 100644 --- a/libs/ui/mat-paginator-goto/src/index.ts +++ b/libs/ui/mat-paginator-goto/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-mat-paginator-goto.module'; +export * from './lib/mat-paginator-goto/mat-paginator-goto.component'; diff --git a/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.html b/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.html index 96cb33e8..091dffd9 100755 --- a/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.html +++ b/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.html @@ -1,44 +1,37 @@ -
    -
    +@if (length > showPaginatorLength) { +
    +
    +} diff --git a/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.ts b/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.ts index 51ca42f7..e279e473 100755 --- a/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.ts +++ b/libs/ui/mat-paginator-goto/src/lib/mat-paginator-goto/mat-paginator-goto.component.ts @@ -1,13 +1,20 @@ -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, Component, OnInit, ViewChild, effect, input, output } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatSelectModule } from '@angular/material/select'; import { MatPaginator, PageEvent } from '@angular/material/paginator'; import { MatSelect, MAT_SELECT_CONFIG } from '@angular/material/select'; import { SHOW_PAGINATOR_LENGTH } from '@proxy/constant'; @Component({ selector: 'mat-paginator-goto', + imports: [CommonModule, MatPaginatorModule, MatFormFieldModule, MatSelectModule, FormsModule, ScrollingModule], templateUrl: './mat-paginator-goto.component.html', styleUrls: ['./mat-paginator-goto.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { provide: MAT_SELECT_CONFIG, @@ -24,32 +31,47 @@ export class MatPaginatorGotoComponent implements OnInit { @ViewChild(MatPaginator) paginator: MatPaginator; @ViewChild(CdkVirtualScrollViewport, { static: false }) cdkVirtualScrollViewPort: CdkVirtualScrollViewport; @ViewChild('goToDropdown', { read: MatSelect, static: false }) goToDropdown: MatSelect; - @Input() disabled: boolean = false; - @Input() hidePageSize: boolean = false; - @Input() pageSizeOptions: number[]; - @Input() showFirstLastButtons: boolean = false; - @Input() enableVirtualScroll: boolean; - @Input() itemSize: number = 35; - @Input() hidePaginationArrows: boolean = false; - @Output() page = new EventEmitter(); + disabled = input(false); + hidePageSize = input(false); + pageSizeOptions = input(); + showFirstLastButtons = input(false); + enableVirtualScroll: boolean; + itemSize = input(35); + hidePaginationArrows = input(false); + page = output(); minWidth: number = 64; public showPaginatorLength = SHOW_PAGINATOR_LENGTH; - @Input('pageIndex') set pageIndexChanged(pageIndex: number) { - this.pageIndex = pageIndex; - this.updateGoto(!this.enableVirtualScroll); - } + constructor() { + effect(() => { + const pageIndex = this.pageIndexInput(); + if (pageIndex !== undefined) { + this.pageIndex = pageIndex; + this.updateGoto(!this.enableVirtualScroll); + } + }); - @Input('length') set lengthChanged(length: number) { - this.length = length; - this.updateGoto(); - } + effect(() => { + const length = this.lengthInput(); + if (length !== undefined) { + this.length = length; + this.updateGoto(); + } + }); - @Input('pageSize') set pageSizeChanged(pageSize: number) { - this.pageSize = pageSize; - this.updateGoto(); + effect(() => { + const pageSize = this.pageSizeInput(); + if (pageSize !== undefined) { + this.pageSize = pageSize; + this.updateGoto(); + } + }); } + pageIndexInput = input(undefined, { alias: 'pageIndex' }); + lengthInput = input(undefined, { alias: 'length' }); + pageSizeInput = input(undefined, { alias: 'pageSize' }); + ngOnInit() { this.updateGoto(); } @@ -122,7 +144,7 @@ export class MatPaginatorGotoComponent implements OnInit { } emitPageEvent(pageEvent: PageEvent) { - this.page.next(pageEvent); + this.page.emit(pageEvent); } openChange(event: boolean): void { diff --git a/libs/ui/mat-paginator-goto/src/lib/ui-mat-paginator-goto.module.ts b/libs/ui/mat-paginator-goto/src/lib/ui-mat-paginator-goto.module.ts deleted file mode 100644 index 2cb1d637..00000000 --- a/libs/ui/mat-paginator-goto/src/lib/ui-mat-paginator-goto.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ScrollingModule } from '@angular/cdk/scrolling'; -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatPaginatorModule } from '@angular/material/paginator'; -import { MatSelectModule } from '@angular/material/select'; -import { MatPaginatorGotoComponent } from './mat-paginator-goto/mat-paginator-goto.component'; - -@NgModule({ - declarations: [MatPaginatorGotoComponent], - imports: [CommonModule, MatPaginatorModule, MatFormFieldModule, MatSelectModule, FormsModule, ScrollingModule], - exports: [MatPaginatorGotoComponent], -}) -export class UiMatPaginatorGotoModule {} diff --git a/libs/ui/multi-select/.eslintrc.json b/libs/ui/multi-select/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/multi-select/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/multi-select/README.md b/libs/ui/multi-select/README.md deleted file mode 100644 index ccb80395..00000000 --- a/libs/ui/multi-select/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-multi-select - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/multi-select/project.json b/libs/ui/multi-select/project.json deleted file mode 100644 index a0e800af..00000000 --- a/libs/ui/multi-select/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-multi-select", - "projectType": "library", - "sourceRoot": "libs/ui/multi-select/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/multi-select/**/*.ts", "libs/ui/multi-select/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/multi-select/src/index.ts b/libs/ui/multi-select/src/index.ts deleted file mode 100644 index 153cab27..00000000 --- a/libs/ui/multi-select/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-multi-select.module'; -export * from './lib/multi-select/multi-select.model'; diff --git a/libs/ui/multi-select/src/lib/multi-select/multi-select.component.html b/libs/ui/multi-select/src/lib/multi-select/multi-select.component.html deleted file mode 100755 index cdd90114..00000000 --- a/libs/ui/multi-select/src/lib/multi-select/multi-select.component.html +++ /dev/null @@ -1,68 +0,0 @@ - - {{ multiSelectLabelValue }} - - - {{ selectAllLabel }} - - - - - {{ multiSelectValuesLabel ? item[multiSelectValuesLabel] : item }} - - - - - - - Microservice icon - {{ group.name }} - - {{ multiSelectValuesLabel ? item[multiSelectValuesLabel] : item }} - - - - diff --git a/libs/ui/multi-select/src/lib/multi-select/multi-select.component.scss b/libs/ui/multi-select/src/lib/multi-select/multi-select.component.scss deleted file mode 100755 index e69de29b..00000000 diff --git a/libs/ui/multi-select/src/lib/multi-select/multi-select.component.ts b/libs/ui/multi-select/src/lib/multi-select/multi-select.component.ts deleted file mode 100755 index 5f72c544..00000000 --- a/libs/ui/multi-select/src/lib/multi-select/multi-select.component.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'; -import { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms'; -import { MatCheckboxChange } from '@angular/material/checkbox'; -import { MAT_SELECT_CONFIG } from '@angular/material/select'; -import { DEBOUNCE_TIME } from '@proxy/constant'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { isEqual } from 'lodash-es'; -import { debounceTime, takeUntil } from 'rxjs'; - -import { MultiSelectGroupOptions } from './multi-select.model'; - -@Component({ - selector: 'proxy-multi-select', - templateUrl: './multi-select.component.html', - styleUrls: ['./multi-select.component.scss'], - providers: [ - { - provide: NG_VALUE_ACCESSOR, - useExisting: MultiSelectComponent, - multi: true, - }, - { - provide: MAT_SELECT_CONFIG, - useValue: { overlayPanelClass: 'multi-select-below-position' }, - }, - ], -}) -export class MultiSelectComponent extends BaseComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor { - /** Input field label */ - @Input() multiSelectLabelValue = ''; - /** Input placeholder text */ - @Input() multiSelectPlaceholder = ''; - /** Custom CSS class */ - @Input() multiSelectClass = ''; - /** Stores the records to be shown as mat-option */ - @Input() multiSelectValues: Array | Array = []; - /** Stores the label key which is to be shown to the user in dropdown */ - @Input() multiSelectValuesLabel: string; - /** Stores the value ID with which the comparison will be made between option and selected value of the dropdown */ - @Input() multiSelectValuesId: string; - /** If true, then a 'All' entry will be displayed in the dropdown */ - @Input() showSelectAll: boolean; - /** Stores the label text to be shown for 'All' option */ - @Input() selectAllLabel = 'All'; - /** If true, mat select options will be grouped based on the provided 'multiSelectValuesLabel' */ - @Input() shouldGroupOptions: boolean; - /** Stores the debounce time before which select event should not be triggered */ - @Input() debounceTime: number = DEBOUNCE_TIME; - /** If true, will emit the value after menu close */ - @Input() emitSelectedValueOnMenuClose: boolean; - - /** Form control instance to store selected values */ - public multiSelectControl: FormControl> = new FormControl([]); - /** Stores the all grouped values, required to set the 'All' option in checked state for group scenario*/ - public allGroupedValues: Array; - /** True, if touched */ - public touched: boolean; - /** Stores the previously selected values, required to compare the current value and previous value to only - * emit selected event when user has made a change - */ - private previousSelectedValues: Array | Array = []; - - constructor() { - super(); - } - - /** Stores the touch handler funciton obtained in registerOnTouched */ - public onTouch = () => {}; - /** Stores the touch handler funciton obtained in registerOnTouched */ - public onChange = (value) => {}; - - writeValue(value: Array | Array): void { - this.setControlValue(value, false); - } - registerOnChange(fn: any): void { - this.onChange = fn; - if (!this.emitSelectedValueOnMenuClose) { - this.multiSelectControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(this.onChange); - } - } - registerOnTouched(fn: any): void { - this.onTouch = fn; - } - setDisabledState(isDisabled: boolean): void { - if (isDisabled) { - this.multiSelectControl.disable(); - } else { - this.multiSelectControl.enable(); - } - } - - public ngOnChanges(changes: SimpleChanges): void { - if ( - changes.multiSelectValues && - !isEqual(changes.multiSelectValues.currentValue, changes.multiSelectValues.previousValue) - ) { - if (this.showSelectAll) { - // 'All' options is enabled, set the form value with all the values - this.setControlValue(this.multiSelectValues); - } - } - } - - public ngOnInit(): void { - this.multiSelectControl.valueChanges - .pipe(debounceTime(this.debounceTime), takeUntil(this.destroy$)) - .subscribe(() => { - if (!isEqual(this.previousSelectedValues, this.multiSelectControl.value)) { - // Only emit when there is a difference between the previous value and the current value - if (!this.emitSelectedValueOnMenuClose) { - this.previousSelectedValues = this.multiSelectControl.value; - // Only emit on change of selection when parent has not opted to emit on mat select menu close - this.onChange(this.multiSelectControl.value); - } - } - }); - } - - public toggleSelectAll(event: MatCheckboxChange): void { - if (event.checked) { - if (!this.shouldGroupOptions) { - this.multiSelectControl.setValue(this.multiSelectValues); - } else { - this.multiSelectControl.setValue(this.allGroupedValues); - } - } else { - this.multiSelectControl.setValue([]); - } - } - - /** - * Compares the item values conditionally. If multiSelectValuesLabel - * is provided then that is used to compare otherwise the two items are - * compared directly - * - * @param {*} firstValue First value for comparison - * @param {*} secondValue Second value for comparison - * @return {boolean} True, if values are equal - * @memberof MultiSelectComponent - */ - public compareConditionally = (firstValue: any, secondValue: any): boolean => { - return this.multiSelectValuesId - ? firstValue[this.multiSelectValuesId] === secondValue[this.multiSelectValuesId] - : firstValue === secondValue; - }; - - /** - * Mat select 'opened' change handler, emits the selected value - * on mat select close if 'emitSelectedValueOnMenuClose' is true - * - * @param {boolean} isOpen True, if mat select is in open state - * @memberof MultiSelectComponent - */ - public handleStateChange(isOpen: boolean): void { - this.markAsTouched(); - if (!isOpen && !isEqual(this.previousSelectedValues, this.multiSelectControl.value)) { - // Only emit when parent has opted for menu close and there is a difference between previous and current value - this.previousSelectedValues = this.multiSelectControl.value; - this.onChange(this.multiSelectControl.value); - } - } - - public ngOnDestroy(): void { - super.ngOnDestroy(); - this.destroy$.next(true); - this.destroy$.complete(); - } - - private markAsTouched(): void { - if (!this.touched) { - this.onTouch(); - this.touched = true; - } - } - - private setControlValue(val: Array | Array, shouldEmit: boolean = true): void { - const currentValue = val || []; - if (!this.shouldGroupOptions) { - // Grouping of options is not enabled, directly assign the values to the form control - this.multiSelectControl.setValue(val); - } else { - // Grouping of options is enabled, find all the values of groups and then assign the values to the form control - this.allGroupedValues = []; - (currentValue as Array).forEach((value) => { - this.allGroupedValues.push(...value.value); - }); - this.multiSelectControl.setValue(this.allGroupedValues); - } - if (shouldEmit) { - this.onChange(this.multiSelectControl.value); - } - this.previousSelectedValues = this.multiSelectControl.value; - } -} diff --git a/libs/ui/multi-select/src/lib/multi-select/multi-select.model.ts b/libs/ui/multi-select/src/lib/multi-select/multi-select.model.ts deleted file mode 100644 index 31959082..00000000 --- a/libs/ui/multi-select/src/lib/multi-select/multi-select.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** Interface for multi select with group options */ -export interface MultiSelectGroupOptions { - name: string; - value: Array; - imgSrc?: string; -} diff --git a/libs/ui/multi-select/src/lib/ui-multi-select.module.ts b/libs/ui/multi-select/src/lib/ui-multi-select.module.ts deleted file mode 100644 index 6d766960..00000000 --- a/libs/ui/multi-select/src/lib/ui-multi-select.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MultiSelectComponent } from './multi-select/multi-select.component'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatSelectModule } from '@angular/material/select'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatCheckboxModule } from '@angular/material/checkbox'; - -@NgModule({ - declarations: [MultiSelectComponent], - imports: [CommonModule, MatFormFieldModule, MatSelectModule, FormsModule, ReactiveFormsModule, MatCheckboxModule], - exports: [MultiSelectComponent], -}) -export class UiMultiSelectModule {} diff --git a/libs/ui/multi-select/tsconfig.json b/libs/ui/multi-select/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/multi-select/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/multi-select/tsconfig.lib.json b/libs/ui/multi-select/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/multi-select/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/no-network/.eslintrc.json b/libs/ui/no-network/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/no-network/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/no-network/README.md b/libs/ui/no-network/README.md deleted file mode 100644 index 33d3c496..00000000 --- a/libs/ui/no-network/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-no-network - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/no-network/project.json b/libs/ui/no-network/project.json deleted file mode 100644 index 144559fe..00000000 --- a/libs/ui/no-network/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-no-network", - "projectType": "library", - "sourceRoot": "libs/ui/no-network/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/no-network/**/*.ts", "libs/ui/no-network/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/no-network/src/index.ts b/libs/ui/no-network/src/index.ts deleted file mode 100644 index e5a6baf2..00000000 --- a/libs/ui/no-network/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-no-network.module'; -export * from './lib/no-network.component'; diff --git a/libs/ui/no-network/src/lib/no-network.component.ts b/libs/ui/no-network/src/lib/no-network.component.ts deleted file mode 100644 index adf16a56..00000000 --- a/libs/ui/no-network/src/lib/no-network.component.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Component, Inject } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; - -@Component({ - selector: 'proxy-no-network-connection', - template: `
    - -
    -
    -
    - wifi_off -
    -

    No network connection!

    -

    - Your network is not connected. The application cannot be used without an active connection. -

    -
    `, - styles: [ - ` - .network-off-icon { - height: 80px; - width: 80px; - font-size: 52px; - background-color: #ff000017; - border-radius: 100%; - color: #d70000; - padding: 16px; - } - `, - ], -}) -export class NoNetworkConnection { - constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) {} -} diff --git a/libs/ui/no-network/src/lib/ui-no-network.module.ts b/libs/ui/no-network/src/lib/ui-no-network.module.ts deleted file mode 100644 index ad916268..00000000 --- a/libs/ui/no-network/src/lib/ui-no-network.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { NoNetworkConnection } from './no-network.component'; -import { MatIconModule } from '@angular/material/icon'; -import { MatButtonModule } from '@angular/material/button'; - -@NgModule({ - declarations: [NoNetworkConnection], - imports: [CommonModule, MatIconModule, MatButtonModule], - exports: [NoNetworkConnection], -}) -export class UiNoNetworkModule {} diff --git a/libs/ui/no-network/tsconfig.json b/libs/ui/no-network/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/no-network/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/no-network/tsconfig.lib.json b/libs/ui/no-network/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/no-network/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/no-permission/.eslintrc.json b/libs/ui/no-permission/.eslintrc.json deleted file mode 100644 index f82e3ac9..00000000 --- a/libs/ui/no-permission/.eslintrc.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "parserOptions": { - "project": ["libs/ui/no-permission/tsconfig.*?.json"] - }, - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { "type": "attribute", "prefix": "proxy", "style": "camelCase" } - ], - "@angular-eslint/component-selector": [ - "error", - { "type": "element", "prefix": "proxy", "style": "kebab-case" } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/no-permission/README.md b/libs/ui/no-permission/README.md deleted file mode 100644 index b1574c03..00000000 --- a/libs/ui/no-permission/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# ui-no-permission - -This library was generated with [Nx](https://nx.dev). - -## Running unit tests - -Run `nx test ui-no-permission` to execute the unit tests. diff --git a/libs/ui/no-permission/jest.config.ts b/libs/ui/no-permission/jest.config.ts deleted file mode 100644 index abddf72d..00000000 --- a/libs/ui/no-permission/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'ui-no-permission', - preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - coverageDirectory: '../../../coverage/libs/ui/no-permission', -}; diff --git a/libs/ui/no-permission/project.json b/libs/ui/no-permission/project.json deleted file mode 100644 index 11df1a5f..00000000 --- a/libs/ui/no-permission/project.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "ui-no-permission", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/no-permission/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/no-permission/src/**/*.ts", "libs/ui/no-permission/src/**/*.html"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/no-permission"], - "options": { - "tsConfig": "libs/ui/no-permission/tsconfig.lib.json", - "jestConfig": "libs/ui/no-permission/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/no-permission/src/index.ts b/libs/ui/no-permission/src/index.ts deleted file mode 100644 index aead4ed8..00000000 --- a/libs/ui/no-permission/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-no-permission.module'; diff --git a/libs/ui/no-permission/src/lib/no-permission/no-permission.component.html b/libs/ui/no-permission/src/lib/no-permission/no-permission.component.html deleted file mode 100644 index 0dc328d5..00000000 --- a/libs/ui/no-permission/src/lib/no-permission/no-permission.component.html +++ /dev/null @@ -1,14 +0,0 @@ - - -
    - - - -

    No Permission

    -

    Sorry, you don't have permission to access this page.

    -

    -
    -
    -
    diff --git a/libs/ui/no-permission/src/lib/no-permission/no-permission.component.scss b/libs/ui/no-permission/src/lib/no-permission/no-permission.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/libs/ui/no-permission/src/lib/no-permission/no-permission.component.ts b/libs/ui/no-permission/src/lib/no-permission/no-permission.component.ts deleted file mode 100644 index db7720d7..00000000 --- a/libs/ui/no-permission/src/lib/no-permission/no-permission.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'proxy-no-permission', - templateUrl: './no-permission.component.html', - styleUrls: ['./no-permission.component.scss'], -}) -export class NoPermissionComponent { - @Input() additionalMsg: string = null; -} diff --git a/libs/ui/no-permission/src/lib/ui-no-permission.module.ts b/libs/ui/no-permission/src/lib/ui-no-permission.module.ts deleted file mode 100644 index f2aff8df..00000000 --- a/libs/ui/no-permission/src/lib/ui-no-permission.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatCardModule } from '@angular/material/card'; -import { NoPermissionComponent } from './no-permission/no-permission.component'; - -@NgModule({ - imports: [CommonModule, MatCardModule], - exports: [NoPermissionComponent], - declarations: [NoPermissionComponent], -}) -export class UiNoPermissionModule {} diff --git a/libs/ui/no-permission/tsconfig.json b/libs/ui/no-permission/tsconfig.json deleted file mode 100644 index fb59f497..00000000 --- a/libs/ui/no-permission/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/no-permission/tsconfig.lib.json b/libs/ui/no-permission/tsconfig.lib.json deleted file mode 100644 index ae62e47a..00000000 --- a/libs/ui/no-permission/tsconfig.lib.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "target": "es2015", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [], - "lib": ["dom", "es2018"] - }, - "angularCompilerOptions": { - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "enableResourceInlining": true - }, - "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/no-permission/tsconfig.spec.json b/libs/ui/no-permission/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/no-permission/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/no-record-found/project.json b/libs/ui/no-record-found/project.json index b5bb6612..10f9b6fa 100644 --- a/libs/ui/no-record-found/project.json +++ b/libs/ui/no-record-found/project.json @@ -5,7 +5,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/no-record-found/**/*.ts", "libs/ui/no-record-found/**/*.html"] } diff --git a/libs/ui/no-record-found/src/index.ts b/libs/ui/no-record-found/src/index.ts index 25b6894c..2429aaf2 100644 --- a/libs/ui/no-record-found/src/index.ts +++ b/libs/ui/no-record-found/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-no-record-found.module'; +export * from './lib/no-record-found.component'; diff --git a/libs/ui/no-record-found/src/lib/no-record-found.component.html b/libs/ui/no-record-found/src/lib/no-record-found.component.html index 2ad15ebe..8d5fff6b 100644 --- a/libs/ui/no-record-found/src/lib/no-record-found.component.html +++ b/libs/ui/no-record-found/src/lib/no-record-found.component.html @@ -1,6 +1,6 @@ - - -
    + + +

    Nothing Here

    -
    +

    - There are no {{ title }} to show. + There are no {{ title() }} to show.

    - + @if (showBtn()) { + + }
    diff --git a/libs/ui/no-record-found/src/lib/no-record-found.component.scss b/libs/ui/no-record-found/src/lib/no-record-found.component.scss index 3440ad38..b02b7580 100644 --- a/libs/ui/no-record-found/src/lib/no-record-found.component.scss +++ b/libs/ui/no-record-found/src/lib/no-record-found.component.scss @@ -1,16 +1,7 @@ .no-record-card { - .card-title { - font-weight: bold; - font-size: 20px; - line-height: 23px; - text-align: center; - color: var(--color-common-grey); - margin-top: 40px; - margin-bottom: 10px; - } - .card-subtitle { + .no-record-title { + font-weight: 700; font-size: 16px; - line-height: 19px; text-align: center; color: var(--color-common-grey); font-weight: normal; diff --git a/libs/ui/no-record-found/src/lib/no-record-found.component.ts b/libs/ui/no-record-found/src/lib/no-record-found.component.ts index 8a9f42b1..12b77fbc 100644 --- a/libs/ui/no-record-found/src/lib/no-record-found.component.ts +++ b/libs/ui/no-record-found/src/lib/no-record-found.component.ts @@ -1,11 +1,15 @@ -import { Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, input } from '@angular/core'; +import { MatCardModule } from '@angular/material/card'; +import { MatButtonModule } from '@angular/material/button'; @Component({ selector: 'proxy-no-record-found', + imports: [MatCardModule, MatButtonModule], templateUrl: './no-record-found.component.html', styleUrls: ['./no-record-found.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class NoRecordFoundComponent { - @Input() showBtn: boolean = false; - @Input() title: string; + showBtn = input(false); + title = input(); } diff --git a/libs/ui/no-record-found/src/lib/ui-no-record-found.module.ts b/libs/ui/no-record-found/src/lib/ui-no-record-found.module.ts deleted file mode 100644 index ec185fdf..00000000 --- a/libs/ui/no-record-found/src/lib/ui-no-record-found.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { NoRecordFoundComponent } from './no-record-found.component'; - -@NgModule({ - imports: [CommonModule, MatCardModule, MatButtonModule], - exports: [NoRecordFoundComponent], - declarations: [NoRecordFoundComponent], -}) -export class UiNoRecordFoundModule {} diff --git a/libs/ui/object-viewer/.eslintrc.json b/libs/ui/object-viewer/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/object-viewer/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/object-viewer/README.md b/libs/ui/object-viewer/README.md deleted file mode 100644 index ad196ede..00000000 --- a/libs/ui/object-viewer/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-object-viewer - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/object-viewer/project.json b/libs/ui/object-viewer/project.json deleted file mode 100644 index d93862a4..00000000 --- a/libs/ui/object-viewer/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-object-viewer", - "projectType": "library", - "sourceRoot": "libs/ui/object-viewer/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/object-viewer/**/*.ts", "libs/ui/object-viewer/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/object-viewer/src/index.ts b/libs/ui/object-viewer/src/index.ts deleted file mode 100644 index a14800f9..00000000 --- a/libs/ui/object-viewer/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-object-viewer.module'; diff --git a/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.html b/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.html deleted file mode 100644 index 6c52dee5..00000000 --- a/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.html +++ /dev/null @@ -1,60 +0,0 @@ -
    - - - -
    - - - -
    -
    -
    - - - - - - -
    - - {{ obj.key }} - - : - - - - - - - - {{ obj.value }} , - - -
    -
    - - { - - - } - diff --git a/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.scss b/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.ts b/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.ts deleted file mode 100644 index 65cce3c5..00000000 --- a/libs/ui/object-viewer/src/lib/object-viewer/object-viewer.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Component, Input, ViewChild } from '@angular/core'; -import { MatMenuTrigger } from '@angular/material/menu'; - -@Component({ - selector: 'proxy-object-viewer', - templateUrl: './object-viewer.component.html', - styleUrls: ['./object-viewer.component.scss'], -}) -export class ObjectViewerComponent { - /** reference of mat menu */ - @ViewChild('trigger') trigger: MatMenuTrigger; - /** Data to show. */ - @Input() data: Object; - /** class to add on icon button */ - @Input() buttonClass: string = 'mat-icon-button'; - /** Object key color. */ - @Input() classesForKey: string = 'obj-key-color'; - /** Object value color. */ - @Input() classesForValue: string = 'obj-value-color'; -} diff --git a/libs/ui/object-viewer/src/lib/ui-object-viewer.module.ts b/libs/ui/object-viewer/src/lib/ui-object-viewer.module.ts deleted file mode 100644 index 0c089a72..00000000 --- a/libs/ui/object-viewer/src/lib/ui-object-viewer.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ObjectViewerComponent } from './object-viewer/object-viewer.component'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatIconModule } from '@angular/material/icon'; -import { MatButtonModule } from '@angular/material/button'; -import { PipesTypeofModule } from '@proxy/pipes/typeof'; - -@NgModule({ - declarations: [ObjectViewerComponent], - imports: [ - CommonModule, - FormsModule, - ReactiveFormsModule, - MatMenuModule, - MatIconModule, - MatButtonModule, - PipesTypeofModule, - ], - exports: [ObjectViewerComponent], -}) -export class UiObjectViewerModule {} diff --git a/libs/ui/object-viewer/tsconfig.json b/libs/ui/object-viewer/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/object-viewer/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/object-viewer/tsconfig.lib.json b/libs/ui/object-viewer/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/object-viewer/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/phone-number-material/.eslintrc.json b/libs/ui/phone-number-material/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/phone-number-material/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/phone-number-material/README.md b/libs/ui/phone-number-material/README.md deleted file mode 100644 index a60d5501..00000000 --- a/libs/ui/phone-number-material/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-phone-number-material - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/phone-number-material/project.json b/libs/ui/phone-number-material/project.json deleted file mode 100644 index 2dfcf727..00000000 --- a/libs/ui/phone-number-material/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-phone-number-material", - "projectType": "library", - "sourceRoot": "libs/ui/phone-number-material/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/phone-number-material/**/*.ts", "libs/ui/phone-number-material/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/phone-number-material/src/index.ts b/libs/ui/phone-number-material/src/index.ts deleted file mode 100644 index ac07fd8f..00000000 --- a/libs/ui/phone-number-material/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-phone-number-material.module'; -export { PhoneNumber, PhoneNumberControl } from './lib/phone-number-material/phone-number-control'; diff --git a/libs/ui/phone-number-material/src/lib/phone-number-material/country.ts b/libs/ui/phone-number-material/src/lib/phone-number-material/country.ts deleted file mode 100644 index 0475af5f..00000000 --- a/libs/ui/phone-number-material/src/lib/phone-number-material/country.ts +++ /dev/null @@ -1,1212 +0,0 @@ -export const countries = [ - { - name: 'Israel', - dial_code: '+972', - code: 'IL', - }, - { - name: 'Afghanistan', - dial_code: '+93', - code: 'AF', - }, - { - name: 'Albania', - dial_code: '+355', - code: 'AL', - }, - { - name: 'Algeria', - dial_code: '+213', - code: 'DZ', - }, - { - name: 'AmericanSamoa', - dial_code: '+1 684', - code: 'AS', - }, - { - name: 'Andorra', - dial_code: '+376', - code: 'AD', - }, - { - name: 'Angola', - dial_code: '+244', - code: 'AO', - }, - { - name: 'Anguilla', - dial_code: '+1 264', - code: 'AI', - }, - { - name: 'Antigua and Barbuda', - dial_code: '+1268', - code: 'AG', - }, - { - name: 'Argentina', - dial_code: '+54', - code: 'AR', - }, - { - name: 'Armenia', - dial_code: '+374', - code: 'AM', - }, - { - name: 'Aruba', - dial_code: '+297', - code: 'AW', - }, - { - name: 'Australia', - dial_code: '+61', - code: 'AU', - }, - { - name: 'Austria', - dial_code: '+43', - code: 'AT', - }, - { - name: 'Azerbaijan', - dial_code: '+994', - code: 'AZ', - }, - { - name: 'Bahamas', - dial_code: '+1 242', - code: 'BS', - }, - { - name: 'Bahrain', - dial_code: '+973', - code: 'BH', - }, - { - name: 'Bangladesh', - dial_code: '+880', - code: 'BD', - }, - { - name: 'Barbados', - dial_code: '+1 246', - code: 'BB', - }, - { - name: 'Belarus', - dial_code: '+375', - code: 'BY', - }, - { - name: 'Belgium', - dial_code: '+32', - code: 'BE', - }, - { - name: 'Belize', - dial_code: '+501', - code: 'BZ', - }, - { - name: 'Benin', - dial_code: '+229', - code: 'BJ', - }, - { - name: 'Bermuda', - dial_code: '+1 441', - code: 'BM', - }, - { - name: 'Bhutan', - dial_code: '+975', - code: 'BT', - }, - { - name: 'Bosnia and Herzegovina', - dial_code: '+387', - code: 'BA', - }, - { - name: 'Botswana', - dial_code: '+267', - code: 'BW', - }, - { - name: 'Brazil', - dial_code: '+55', - code: 'BR', - }, - { - name: 'British Indian Ocean Territory', - dial_code: '+246', - code: 'IO', - }, - { - name: 'Bulgaria', - dial_code: '+359', - code: 'BG', - }, - { - name: 'Burkina Faso', - dial_code: '+226', - code: 'BF', - }, - { - name: 'Burundi', - dial_code: '+257', - code: 'BI', - }, - { - name: 'Cambodia', - dial_code: '+855', - code: 'KH', - }, - { - name: 'Cameroon', - dial_code: '+237', - code: 'CM', - }, - { - name: 'Canada', - dial_code: '+1', - code: 'CA', - }, - { - name: 'Cape Verde', - dial_code: '+238', - code: 'CV', - }, - { - name: 'Cayman Islands', - dial_code: '+ 345', - code: 'KY', - }, - { - name: 'Central African Republic', - dial_code: '+236', - code: 'CF', - }, - { - name: 'Chad', - dial_code: '+235', - code: 'TD', - }, - { - name: 'Chile', - dial_code: '+56', - code: 'CL', - }, - { - name: 'China', - dial_code: '+86', - code: 'CN', - }, - { - name: 'Christmas Island', - dial_code: '+61', - code: 'CX', - }, - { - name: 'Colombia', - dial_code: '+57', - code: 'CO', - }, - { - name: 'Comoros', - dial_code: '+269', - code: 'KM', - }, - { - name: 'Congo', - dial_code: '+242', - code: 'CG', - }, - { - name: 'Cook Islands', - dial_code: '+682', - code: 'CK', - }, - { - name: 'Costa Rica', - dial_code: '+506', - code: 'CR', - }, - { - name: 'Croatia', - dial_code: '+385', - code: 'HR', - }, - { - name: 'Cuba', - dial_code: '+53', - code: 'CU', - }, - { - name: 'Cyprus', - dial_code: '+537', - code: 'CY', - }, - { - name: 'Czech Republic', - dial_code: '+420', - code: 'CZ', - }, - { - name: 'Denmark', - dial_code: '+45', - code: 'DK', - }, - { - name: 'Djibouti', - dial_code: '+253', - code: 'DJ', - }, - { - name: 'Dominica', - dial_code: '+1 767', - code: 'DM', - }, - { - name: 'Dominican Republic', - dial_code: '+1 849', - code: 'DO', - }, - { - name: 'Ecuador', - dial_code: '+593', - code: 'EC', - }, - { - name: 'Egypt', - dial_code: '+20', - code: 'EG', - }, - { - name: 'El Salvador', - dial_code: '+503', - code: 'SV', - }, - { - name: 'Equatorial Guinea', - dial_code: '+240', - code: 'GQ', - }, - { - name: 'Eritrea', - dial_code: '+291', - code: 'ER', - }, - { - name: 'Estonia', - dial_code: '+372', - code: 'EE', - }, - { - name: 'Ethiopia', - dial_code: '+251', - code: 'ET', - }, - { - name: 'Faroe Islands', - dial_code: '+298', - code: 'FO', - }, - { - name: 'Fiji', - dial_code: '+679', - code: 'FJ', - }, - { - name: 'Finland', - dial_code: '+358', - code: 'FI', - }, - { - name: 'France', - dial_code: '+33', - code: 'FR', - }, - { - name: 'French Guiana', - dial_code: '+594', - code: 'GF', - }, - { - name: 'French Polynesia', - dial_code: '+689', - code: 'PF', - }, - { - name: 'Gabon', - dial_code: '+241', - code: 'GA', - }, - { - name: 'Gambia', - dial_code: '+220', - code: 'GM', - }, - { - name: 'Georgia', - dial_code: '+995', - code: 'GE', - }, - { - name: 'Germany', - dial_code: '+49', - code: 'DE', - }, - { - name: 'Ghana', - dial_code: '+233', - code: 'GH', - }, - { - name: 'Gibraltar', - dial_code: '+350', - code: 'GI', - }, - { - name: 'Greece', - dial_code: '+30', - code: 'GR', - }, - { - name: 'Greenland', - dial_code: '+299', - code: 'GL', - }, - { - name: 'Grenada', - dial_code: '+1 473', - code: 'GD', - }, - { - name: 'Guadeloupe', - dial_code: '+590', - code: 'GP', - }, - { - name: 'Guam', - dial_code: '+1 671', - code: 'GU', - }, - { - name: 'Guatemala', - dial_code: '+502', - code: 'GT', - }, - { - name: 'Guinea', - dial_code: '+224', - code: 'GN', - }, - { - name: 'Guinea-Bissau', - dial_code: '+245', - code: 'GW', - }, - { - name: 'Guyana', - dial_code: '+595', - code: 'GY', - }, - { - name: 'Haiti', - dial_code: '+509', - code: 'HT', - }, - { - name: 'Honduras', - dial_code: '+504', - code: 'HN', - }, - { - name: 'Hungary', - dial_code: '+36', - code: 'HU', - }, - { - name: 'Iceland', - dial_code: '+354', - code: 'IS', - }, - { - name: 'India', - dial_code: '+91', - code: 'IN', - }, - { - name: 'Indonesia', - dial_code: '+62', - code: 'ID', - }, - { - name: 'Iraq', - dial_code: '+964', - code: 'IQ', - }, - { - name: 'Ireland', - dial_code: '+353', - code: 'IE', - }, - { - name: 'Israel', - dial_code: '+972', - code: 'IL', - }, - { - name: 'Italy', - dial_code: '+39', - code: 'IT', - }, - { - name: 'Jamaica', - dial_code: '+1 876', - code: 'JM', - }, - { - name: 'Japan', - dial_code: '+81', - code: 'JP', - }, - { - name: 'Jordan', - dial_code: '+962', - code: 'JO', - }, - { - name: 'Kazakhstan', - dial_code: '+7 7', - code: 'KZ', - }, - { - name: 'Kenya', - dial_code: '+254', - code: 'KE', - }, - { - name: 'Kiribati', - dial_code: '+686', - code: 'KI', - }, - { - name: 'Kuwait', - dial_code: '+965', - code: 'KW', - }, - { - name: 'Kyrgyzstan', - dial_code: '+996', - code: 'KG', - }, - { - name: 'Latvia', - dial_code: '+371', - code: 'LV', - }, - { - name: 'Lebanon', - dial_code: '+961', - code: 'LB', - }, - { - name: 'Lesotho', - dial_code: '+266', - code: 'LS', - }, - { - name: 'Liberia', - dial_code: '+231', - code: 'LR', - }, - { - name: 'Liechtenstein', - dial_code: '+423', - code: 'LI', - }, - { - name: 'Lithuania', - dial_code: '+370', - code: 'LT', - }, - { - name: 'Luxembourg', - dial_code: '+352', - code: 'LU', - }, - { - name: 'Madagascar', - dial_code: '+261', - code: 'MG', - }, - { - name: 'Malawi', - dial_code: '+265', - code: 'MW', - }, - { - name: 'Malaysia', - dial_code: '+60', - code: 'MY', - }, - { - name: 'Maldives', - dial_code: '+960', - code: 'MV', - }, - { - name: 'Mali', - dial_code: '+223', - code: 'ML', - }, - { - name: 'Malta', - dial_code: '+356', - code: 'MT', - }, - { - name: 'Marshall Islands', - dial_code: '+692', - code: 'MH', - }, - { - name: 'Martinique', - dial_code: '+596', - code: 'MQ', - }, - { - name: 'Mauritania', - dial_code: '+222', - code: 'MR', - }, - { - name: 'Mauritius', - dial_code: '+230', - code: 'MU', - }, - { - name: 'Mayotte', - dial_code: '+262', - code: 'YT', - }, - { - name: 'Mexico', - dial_code: '+52', - code: 'MX', - }, - { - name: 'Monaco', - dial_code: '+377', - code: 'MC', - }, - { - name: 'Mongolia', - dial_code: '+976', - code: 'MN', - }, - { - name: 'Montenegro', - dial_code: '+382', - code: 'ME', - }, - { - name: 'Montserrat', - dial_code: '+1664', - code: 'MS', - }, - { - name: 'Morocco', - dial_code: '+212', - code: 'MA', - }, - { - name: 'Myanmar', - dial_code: '+95', - code: 'MM', - }, - { - name: 'Namibia', - dial_code: '+264', - code: 'NA', - }, - { - name: 'Nauru', - dial_code: '+674', - code: 'NR', - }, - { - name: 'Nepal', - dial_code: '+977', - code: 'NP', - }, - { - name: 'Netherlands', - dial_code: '+31', - code: 'NL', - }, - { - name: 'Netherlands Antilles', - dial_code: '+599', - code: 'AN', - }, - { - name: 'New Caledonia', - dial_code: '+687', - code: 'NC', - }, - { - name: 'New Zealand', - dial_code: '+64', - code: 'NZ', - }, - { - name: 'Nicaragua', - dial_code: '+505', - code: 'NI', - }, - { - name: 'Niger', - dial_code: '+227', - code: 'NE', - }, - { - name: 'Nigeria', - dial_code: '+234', - code: 'NG', - }, - { - name: 'Niue', - dial_code: '+683', - code: 'NU', - }, - { - name: 'Norfolk Island', - dial_code: '+672', - code: 'NF', - }, - { - name: 'Northern Mariana Islands', - dial_code: '+1 670', - code: 'MP', - }, - { - name: 'Norway', - dial_code: '+47', - code: 'NO', - }, - { - name: 'Oman', - dial_code: '+968', - code: 'OM', - }, - { - name: 'Pakistan', - dial_code: '+92', - code: 'PK', - }, - { - name: 'Palau', - dial_code: '+680', - code: 'PW', - }, - { - name: 'Panama', - dial_code: '+507', - code: 'PA', - }, - { - name: 'Papua New Guinea', - dial_code: '+675', - code: 'PG', - }, - { - name: 'Paraguay', - dial_code: '+595', - code: 'PY', - }, - { - name: 'Peru', - dial_code: '+51', - code: 'PE', - }, - { - name: 'Philippines', - dial_code: '+63', - code: 'PH', - }, - { - name: 'Poland', - dial_code: '+48', - code: 'PL', - }, - { - name: 'Portugal', - dial_code: '+351', - code: 'PT', - }, - { - name: 'Puerto Rico', - dial_code: '+1 939', - code: 'PR', - }, - { - name: 'Qatar', - dial_code: '+974', - code: 'QA', - }, - { - name: 'Romania', - dial_code: '+40', - code: 'RO', - }, - { - name: 'Rwanda', - dial_code: '+250', - code: 'RW', - }, - { - name: 'Samoa', - dial_code: '+685', - code: 'WS', - }, - { - name: 'San Marino', - dial_code: '+378', - code: 'SM', - }, - { - name: 'Saudi Arabia', - dial_code: '+966', - code: 'SA', - }, - { - name: 'Senegal', - dial_code: '+221', - code: 'SN', - }, - { - name: 'Serbia', - dial_code: '+381', - code: 'RS', - }, - { - name: 'Seychelles', - dial_code: '+248', - code: 'SC', - }, - { - name: 'Sierra Leone', - dial_code: '+232', - code: 'SL', - }, - { - name: 'Singapore', - dial_code: '+65', - code: 'SG', - }, - { - name: 'Slovakia', - dial_code: '+421', - code: 'SK', - }, - { - name: 'Slovenia', - dial_code: '+386', - code: 'SI', - }, - { - name: 'Solomon Islands', - dial_code: '+677', - code: 'SB', - }, - { - name: 'South Africa', - dial_code: '+27', - code: 'ZA', - }, - { - name: 'South Georgia and the South Sandwich Islands', - dial_code: '+500', - code: 'GS', - }, - { - name: 'Spain', - dial_code: '+34', - code: 'ES', - }, - { - name: 'Sri Lanka', - dial_code: '+94', - code: 'LK', - }, - { - name: 'Sudan', - dial_code: '+249', - code: 'SD', - }, - { - name: 'Suriname', - dial_code: '+597', - code: 'SR', - }, - { - name: 'Swaziland', - dial_code: '+268', - code: 'SZ', - }, - { - name: 'Sweden', - dial_code: '+46', - code: 'SE', - }, - { - name: 'Switzerland', - dial_code: '+41', - code: 'CH', - }, - { - name: 'Tajikistan', - dial_code: '+992', - code: 'TJ', - }, - { - name: 'Thailand', - dial_code: '+66', - code: 'TH', - }, - { - name: 'Togo', - dial_code: '+228', - code: 'TG', - }, - { - name: 'Tokelau', - dial_code: '+690', - code: 'TK', - }, - { - name: 'Tonga', - dial_code: '+676', - code: 'TO', - }, - { - name: 'Trinidad and Tobago', - dial_code: '+1 868', - code: 'TT', - }, - { - name: 'Tunisia', - dial_code: '+216', - code: 'TN', - }, - { - name: 'Turkey', - dial_code: '+90', - code: 'TR', - }, - { - name: 'Turkmenistan', - dial_code: '+993', - code: 'TM', - }, - { - name: 'Turks and Caicos Islands', - dial_code: '+1 649', - code: 'TC', - }, - { - name: 'Tuvalu', - dial_code: '+688', - code: 'TV', - }, - { - name: 'Uganda', - dial_code: '+256', - code: 'UG', - }, - { - name: 'Ukraine', - dial_code: '+380', - code: 'UA', - }, - { - name: 'United Arab Emirates', - dial_code: '+971', - code: 'AE', - }, - { - name: 'United Kingdom', - dial_code: '+44', - code: 'GB', - }, - { - name: 'United States', - dial_code: '+1', - code: 'US', - }, - { - name: 'Uruguay', - dial_code: '+598', - code: 'UY', - }, - { - name: 'Uzbekistan', - dial_code: '+998', - code: 'UZ', - }, - { - name: 'Vanuatu', - dial_code: '+678', - code: 'VU', - }, - { - name: 'Wallis and Futuna', - dial_code: '+681', - code: 'WF', - }, - { - name: 'Yemen', - dial_code: '+967', - code: 'YE', - }, - { - name: 'Zambia', - dial_code: '+260', - code: 'ZM', - }, - { - name: 'Zimbabwe', - dial_code: '+263', - code: 'ZW', - }, - { - name: 'land Islands', - dial_code: '', - code: 'AX', - }, - { - name: 'Antarctica', - dial_code: null, - code: 'AQ', - }, - { - name: 'Bolivia, Plurinational State of', - dial_code: '+591', - code: 'BO', - }, - { - name: 'Brunei Darussalam', - dial_code: '+673', - code: 'BN', - }, - { - name: 'Cocos (Keeling) Islands', - dial_code: '+61', - code: 'CC', - }, - { - name: 'Congo, The Democratic Republic of the', - dial_code: '+243', - code: 'CD', - }, - { - name: "Cote d'Ivoire", - dial_code: '+225', - code: 'CI', - }, - { - name: 'Falkland Islands (Malvinas)', - dial_code: '+500', - code: 'FK', - }, - { - name: 'Guernsey', - dial_code: '+44', - code: 'GG', - }, - { - name: 'Holy See (Vatican City State)', - dial_code: '+379', - code: 'VA', - }, - { - name: 'Hong Kong', - dial_code: '+852', - code: 'HK', - }, - { - name: 'Iran, Islamic Republic of', - dial_code: '+98', - code: 'IR', - }, - { - name: 'Isle of Man', - dial_code: '+44', - code: 'IM', - }, - { - name: 'Jersey', - dial_code: '+44', - code: 'JE', - }, - { - name: "Korea, Democratic People's Republic of", - dial_code: '+850', - code: 'KP', - }, - { - name: 'Korea, Republic of', - dial_code: '+82', - code: 'KR', - }, - { - name: "Lao People's Democratic Republic", - dial_code: '+856', - code: 'LA', - }, - { - name: 'Libyan Arab Jamahiriya', - dial_code: '+218', - code: 'LY', - }, - { - name: 'Macao', - dial_code: '+853', - code: 'MO', - }, - { - name: 'Macedonia, The Former Yugoslav Republic of', - dial_code: '+389', - code: 'MK', - }, - { - name: 'Micronesia, Federated States of', - dial_code: '+691', - code: 'FM', - }, - { - name: 'Moldova, Republic of', - dial_code: '+373', - code: 'MD', - }, - { - name: 'Mozambique', - dial_code: '+258', - code: 'MZ', - }, - { - name: 'Palestinian Territory, Occupied', - dial_code: '+970', - code: 'PS', - }, - { - name: 'Pitcairn', - dial_code: '+872', - code: 'PN', - }, - { - name: 'Réunion', - dial_code: '+262', - code: 'RE', - }, - { - name: 'Russia', - dial_code: '+7', - code: 'RU', - }, - { - name: 'Saint Barthélemy', - dial_code: '+590', - code: 'BL', - }, - { - name: 'Saint Helena, Ascension and Tristan Da Cunha', - dial_code: '+290', - code: 'SH', - }, - { - name: 'Saint Kitts and Nevis', - dial_code: '+1 869', - code: 'KN', - }, - { - name: 'Saint Lucia', - dial_code: '+1 758', - code: 'LC', - }, - { - name: 'Saint Martin', - dial_code: '+590', - code: 'MF', - }, - { - name: 'Saint Pierre and Miquelon', - dial_code: '+508', - code: 'PM', - }, - { - name: 'Saint Vincent and the Grenadines', - dial_code: '+1 784', - code: 'VC', - }, - { - name: 'Sao Tome and Principe', - dial_code: '+239', - code: 'ST', - }, - { - name: 'Somalia', - dial_code: '+252', - code: 'SO', - }, - { - name: 'Svalbard and Jan Mayen', - dial_code: '+47', - code: 'SJ', - }, - { - name: 'Syrian Arab Republic', - dial_code: '+963', - code: 'SY', - }, - { - name: 'Taiwan, Province of China', - dial_code: '+886', - code: 'TW', - }, - { - name: 'Tanzania, United Republic of', - dial_code: '+255', - code: 'TZ', - }, - { - name: 'Timor-Leste', - dial_code: '+670', - code: 'TL', - }, - { - name: 'Venezuela, Bolivarian Republic of', - dial_code: '+58', - code: 'VE', - }, - { - name: 'Viet Nam', - dial_code: '+84', - code: 'VN', - }, - { - name: 'Virgin Islands, British', - dial_code: '+1 284', - code: 'VG', - }, - { - name: 'Virgin Islands, U.S.', - dial_code: '+1 340', - code: 'VI', - }, -]; diff --git a/libs/ui/phone-number-material/src/lib/phone-number-material/index.ts b/libs/ui/phone-number-material/src/lib/phone-number-material/index.ts deleted file mode 100644 index fdf9d4e3..00000000 --- a/libs/ui/phone-number-material/src/lib/phone-number-material/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './phone-number-control'; diff --git a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.html b/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.html deleted file mode 100644 index d1660ba9..00000000 --- a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.html +++ /dev/null @@ -1,56 +0,0 @@ -
    -
    -
    -
    -
      -
    • - - {{country.name}} - ({{country.dial_code}}) -
    • -
    -
    -
    -
    - - - -
    - -Select Country diff --git a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.scss b/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.scss deleted file mode 100644 index 3d8698e2..00000000 --- a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.scss +++ /dev/null @@ -1,220 +0,0 @@ -:host { - opacity: 0; - display: flex; - flex-flow: column-reverse; -} - -:host.floating { - opacity: 1; -} - -.phone-number-control-container { - display: flex; -} - -.phone-number-control-element { - border: none; - background: none; - padding: 0; - outline: none; - font: inherit; - text-align: center; -} - -.phone-number-control-spacer { - opacity: 0; - transition: opacity 200ms; -} - -:host.example-floating .phone-number-control-spacer { - opacity: 1; -} - -.custom-select-wrapper { - position: relative; - user-select: none; -} - -.custom-select { - position: relative; - display: flex; - flex-direction: column; - border-width: 0 2px 0 2px; - border-color: #394a6d; -} - -.custom-select__trigger { - position: relative; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0px 5px 0 0; - font-size: 13px !important; - font-weight: 300; - color: #3b3b3b; - height: 100%; - line-height: 0px; - background: #ffffff; - cursor: pointer; - min-width: 32px; -} - -.custom-options { - position: absolute; - display: block; - top: 143%; - left: -12px; - right: 0; - border-top: 0; - background: #ffffff; - transition: all 0.5s; - opacity: 0; - visibility: hidden; - z-index: 2; - width: 226px; - display: inline-block; - overflow: scroll; - min-height: 125px; - max-height: 127px; - min-width: 215px; - max-width: 215px; - overflow-x: hidden; - box-shadow: 0px 6px 9px #00000040; -} - -.custom-select.open .custom-options { - opacity: 1; - visibility: visible; - pointer-events: all; -} - -.custom-option { - position: relative; - display: flex; - font-weight: 300; - color: #3b3b3b; - cursor: pointer; - transition: all 0.5s; - padding: 7px 12px; - align-items: center; - justify-content: space-between; -} - -.custom-option:hover { - cursor: pointer; - background-color: #2638b9 !important; - color: white; -} - -div { - display: flex; -} - -span { - opacity: 0; - transition: opacity 200ms; -} - -:host.floating span { - opacity: 1; - display: inline-block; -} - -input { - background: none; - outline: none; - font-size: 12px; - text-align: left; - color: currentColor; - border: none; - padding: 0 10px; - min-width: 92px; -} - -.arrow { - position: relative; - height: 8px; - width: 6px; -} - -.arrow::before, -.arrow::after { - content: ''; - position: absolute; - bottom: 0px; - width: 0.12rem; - height: 100%; - transition: all 0.5s; -} - -.arrow::before { - left: 0px; - transform: rotate(45deg); - background-color: #394a6d; -} - -.arrow::after { - left: 4px; - transform: rotate(-45deg); - background-color: #394a6d; -} - -.open .arrow::before { - left: 0px; - transform: rotate(135deg); -} - -.open .arrow::after { - left: 4px; - transform: rotate(48deg); -} - -.countery-name { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: inline-block !important; -} - -.countery-code { - max-width: 42px !important; - text-align: left; - padding: 0px 2px; - font-size: 12px; - min-width: 0; -} - -.custom-options::-webkit-scrollbar { - width: 8px; -} - -.custom-options::-webkit-scrollbar-track { - background: #dcdcdc; -} - -.custom-options::-webkit-scrollbar-thumb { - background-color: #c9c1c1; - border-radius: 6px; -} -ul.country-selection { - padding: 0; -} -ul.country-selection li img { - margin-right: 10px; -} -ul.country-selection li img { - margin-right: 10px; - object-fit: contain; -} -ul.country-selection li span { - font-size: 11px; - width: 113px; - font-weight: 400; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; -} -ul.country-selection li small { - font-size: 10px; - font-weight: 600; -} diff --git a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.ts b/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.ts deleted file mode 100644 index 4afb4157..00000000 --- a/libs/ui/phone-number-material/src/lib/phone-number-material/phone-number-control.ts +++ /dev/null @@ -1,316 +0,0 @@ -import { - AbstractControl, - ControlValueAccessor, - UntypedFormBuilder, - UntypedFormControl, - UntypedFormGroup, - NgControl, - Validators, -} from '@angular/forms'; -import { Component, ElementRef, HostBinding, Input, OnDestroy, OnInit, Optional, Self, ViewChild } from '@angular/core'; -import { countries } from './country'; -import { MatFormField, MatFormFieldAppearance, MatFormFieldControl } from '@angular/material/form-field'; -import { Subject, Subscription } from 'rxjs'; -import { FocusMonitor } from '@angular/cdk/a11y'; -import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'; -import { DIAL_CODE_REGEX, ONLY_INTEGER_REGEX } from '@proxy/regex'; - -export class PhoneNumber { - constructor(public countryIso2: string, public phonenumber: string) {} -} - -@Component({ - selector: 'phone-number-control', - templateUrl: './phone-number-control.html', - styleUrls: ['./phone-number-control.scss'], - providers: [ - { - provide: MatFormFieldControl, - useExisting: PhoneNumberControl, - }, - ], - host: { - '[class.example-floating]': 'shouldLabelFloat', - '[id]': 'id', - '(blur)': 'onTouched()', - }, -}) -export class PhoneNumberControl implements ControlValueAccessor, MatFormFieldControl, OnDestroy, OnInit { - isOpen: boolean = false; - _appearance: MatFormFieldAppearance = this.parentFormField?._appearance; - @ViewChild('code', { static: true }) codeInput; - @ViewChild('phoneNumber', { static: true }) phoneNumberInput; - @Input() appurl: string = ''; - - @Input() - get disabled(): boolean { - return this._disabled; - } - - set disabled(value: boolean) { - this._disabled = coerceBooleanProperty(value); - this._disabled ? this.phoneForm.disable() : this.phoneForm.enable(); - if (this._disabled) { - this.isOpen = false; - } - this.stateChanges.next(); - } - - private _disabled = false; - - @Input() - get required(): boolean { - return this._required; - } - - set required(req) { - this._required = coerceBooleanProperty(req); - this.stateChanges.next(); - } - - private _required = false; - - @Input() - get placeholder(): string { - return this._placeholder; - } - - set placeholder(plh) { - this._placeholder = plh; - this.stateChanges.next(); - } - - private _placeholder = ''; - - @Input() - get value(): PhoneNumber | null { - const n: any = this.phoneForm.getRawValue(); - if (n.countryIso2 && n.dial_code && n.phonenumber) { - return new PhoneNumber(n.countryIso2, n.dial_code + n.phonenumber); - } - return null; - } - - set value(tel: PhoneNumber | null) { - let countryIso2 = '' || tel?.countryIso2; - let dial_code = ''; - let phonenumber = ''; - if (tel?.phonenumber?.startsWith('+')) { - const twoDigit = tel?.phonenumber.replace(/ /g, '').substr(0, 3); - const threeDigit = tel?.phonenumber.replace(/ /g, '').substr(0, 4); - const fourDigit = tel?.phonenumber.replace(/ /g, '').substr(0, 5); - const i2 = this.countries.findIndex((x) => x.dial_code?.replace(/ /g, '') === twoDigit); - const i3 = this.countries.findIndex((x) => x.dial_code?.replace(/ /g, '') === threeDigit); - const i4 = this.countries.findIndex((x) => x.dial_code?.replace(/ /g, '') === fourDigit); - if (i2 > -1) { - countryIso2 = this.countries[i2].code; - dial_code = this.countries[i2].dial_code || ''; - phonenumber = tel?.phonenumber.substr(3); - } - if (i3 > -1) { - countryIso2 = this.countries[i3].code; - dial_code = this.countries[i3].dial_code || ''; - phonenumber = tel?.phonenumber.substr(4); - } - if (i4 > -1) { - countryIso2 = this.countries[i4].code; - dial_code = this.countries[i4].dial_code || ''; - phonenumber = tel?.phonenumber.substr(5); - } - } else if (tel) { - phonenumber = tel.phonenumber; - dial_code = - this.countries.find((x) => x.code.toUpperCase() === tel.countryIso2?.toUpperCase())?.dial_code || ''; - countryIso2 = tel.countryIso2; - } - if (this.countries.find((x) => x.code === countryIso2)) { - this.selectCountry(this.countries.find((x) => x.code === countryIso2)); - } - this.phoneForm.patchValue({ countryIso2, dial_code, phonenumber }); - this.phoneForm.updateValueAndValidity(); - this.stateChanges.next(); - } - - get empty(): boolean { - const n = this.phoneForm.value; - return !n.phonenumber && !n.dial_code; - } - - @Input('aria-describedby') describedBy = ''; - - @HostBinding('class.floating') - get shouldLabelFloat(): boolean { - return this.focused || !this.empty || this.isOpen; - } - - constructor( - fb: UntypedFormBuilder, - private fm: FocusMonitor, - private elRef: ElementRef, - @Optional() @Self() public ngControl: NgControl, - @Optional() public parentFormField: MatFormField - ) { - this.phoneForm = fb.group({ - countryIso2: new UntypedFormControl('', [Validators.required]), - dial_code: new UntypedFormControl('', [Validators.pattern(DIAL_CODE_REGEX), Validators.required]), - phonenumber: new UntypedFormControl('', [Validators.pattern(ONLY_INTEGER_REGEX)]), - }); - if (this.ngControl != null) { - this.ngControl.valueAccessor = this; - } - } - - get errorState(): boolean { - return (this.phoneForm.invalid && this.phoneForm.dirty) || this.ngControl?.invalid; - } - - static nextId = 0; - - static ngAcceptInputType_disabled: BooleanInput; - static ngAcceptInputType_required: BooleanInput; - phoneForm: UntypedFormGroup; - countries = countries; - stateChanges = new Subject(); - focused = false; - controlType = 'phone-number-control'; - hideCountryList = true; - private subscription: Subscription | undefined; - private subscription2: Subscription | undefined; - private subscription3: Subscription | undefined; - public selectedCountry: any; - @HostBinding() id = `phone-number-control-${PhoneNumberControl.nextId++}`; - - onChange = (_: any) => {}; - onTouched = () => {}; - - ngOnInit(): void { - this.fm.monitor(this.codeInput).subscribe((origin) => { - this.focused = !!origin; - this.stateChanges.next(); - }); - this.fm.monitor(this.phoneNumberInput).subscribe((origin) => { - this.focused = !!origin; - this.stateChanges.next(); - }); - this.subscription = this.phoneForm.get('countryIso2')?.valueChanges.subscribe((res) => { - if (res?.length) { - const dialCode = this.countries.find((x) => x.code === res)?.dial_code; - this.selectedCountry = this.countries.find((x) => x.code === res); - if (this.phoneForm.get('dial_code')?.value !== dialCode) { - this.phoneForm.get('dial_code')?.setValue(dialCode); - this.phoneForm.updateValueAndValidity(); - } - } - }); - this.subscription2 = this.phoneForm.get('dial_code')?.valueChanges.subscribe((res) => { - if (res?.length) { - const countryIso2 = this.countries.find((x) => x.dial_code === res)?.code; - this.selectedCountry = this.countries.find((x) => x.dial_code === res); - if (this.phoneForm.get('countryIso2')?.value !== countryIso2) { - this.phoneForm.get('countryIso2')?.setValue(countryIso2); - this.phoneForm.updateValueAndValidity(); - } - } - }); - this.subscription3 = this.phoneForm.valueChanges.subscribe((res) => { - if (res.countryIso2 && res.dial_code && res.phonenumber) { - this.onChange({ countryIso2: res.countryIso2 || '', phonenumber: res.dial_code + res.phonenumber }); - } else { - this.onChange(null); - } - }); - } - - ngOnDestroy(): void { - this.stateChanges.complete(); - this.fm.stopMonitoring(this.codeInput); - this.fm.stopMonitoring(this.phoneNumberInput); - if (this.subscription) { - this.subscription.unsubscribe(); - } - if (this.subscription2) { - this.subscription2.unsubscribe(); - } - if (this.subscription3) { - this.subscription3.unsubscribe(); - } - } - - writeValue(tel: PhoneNumber | null): void { - this.value = tel; - } - - registerOnChange(fn: any): void { - this.onChange = fn; - } - - registerOnTouched(fn: any): void { - this.onTouched = fn; - } - - setDisabledState(isDisabled: boolean): void { - this.disabled = isDisabled; - } - - _handleInput(control: AbstractControl, nextElement?: HTMLInputElement): void { - this.autoFocusNext(control, nextElement); - this.onChange(this.value); - } - - autoFocusNext(control: AbstractControl, nextElement?: HTMLInputElement): void { - if (!control.errors && nextElement) { - this.fm.focusVia(nextElement, 'program'); - } - } - - autoFocusPrev(control: AbstractControl, prevElement: HTMLInputElement): void { - console.log('called'); - if (control.value.length < 1) { - this.fm.focusVia(prevElement, 'program'); - } - } - - onContainerClick(event: MouseEvent): void { - if (this.shouldLabelFloat && !this.focused) { - this.fm.focusVia(this.phoneNumberInput, 'program'); - } - } - - setDescribedByIds(ids: string[]): void { - const controlElement = this.elRef.nativeElement.querySelector('.phone-number-control-container'); - controlElement?.setAttribute('aria-describedby', ids.join(' ')); - } - - selectCountry(country: any): void { - this.phoneForm.get('countryIso2')?.setValue(country?.code); - this.phoneForm.updateValueAndValidity(); - this.selectedCountry = country; - if (this.focused) { - this.fm.focusVia(this.phoneNumberInput, 'program'); - } - } - - blockKeys(event: KeyboardEvent | ClipboardEvent, allowPlus: boolean = false): boolean | void { - let text; - if (event instanceof KeyboardEvent) { - text = event.key; - } else if (event instanceof ClipboardEvent) { - text = event.clipboardData?.getData('text'); - } - if (allowPlus && !text?.match(/^[0-9\+]*$/)) { - event.stopImmediatePropagation(); - event.stopPropagation(); - return false; - } else if (!allowPlus && !text?.match(/^[0-9]*$/)) { - event.stopImmediatePropagation(); - event.stopPropagation(); - return false; - } - } - - public openCountryFlag(): void { - setTimeout(() => { - this.isOpen = true; - }, 300); - } -} diff --git a/libs/ui/phone-number-material/src/lib/ui-phone-number-material.module.ts b/libs/ui/phone-number-material/src/lib/ui-phone-number-material.module.ts deleted file mode 100644 index 8dd0edba..00000000 --- a/libs/ui/phone-number-material/src/lib/ui-phone-number-material.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { CommonModule } from '@angular/common'; -import { MatRippleModule } from '@angular/material/core'; -import { MatDividerModule } from '@angular/material/divider'; -import { ClickOutsideModule } from 'ng-click-outside'; -import { PhoneNumberControl } from './phone-number-material'; - -@NgModule({ - declarations: [PhoneNumberControl], - imports: [FormsModule, ReactiveFormsModule, CommonModule, MatRippleModule, MatDividerModule, ClickOutsideModule], - providers: [PhoneNumberControl], - exports: [PhoneNumberControl], - schemas: [CUSTOM_ELEMENTS_SCHEMA], -}) -export class UiPhoneNumberMaterialModule {} diff --git a/libs/ui/phone-number-material/tsconfig.json b/libs/ui/phone-number-material/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/phone-number-material/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/phone-number-material/tsconfig.lib.json b/libs/ui/phone-number-material/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/phone-number-material/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/phone-recording/.browserslistrc b/libs/ui/phone-recording/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/libs/ui/phone-recording/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/libs/ui/phone-recording/.eslintrc.json b/libs/ui/phone-recording/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/phone-recording/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/phone-recording/README.md b/libs/ui/phone-recording/README.md deleted file mode 100644 index 45ed4206..00000000 --- a/libs/ui/phone-recording/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-phone-recording - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/phone-recording/jest.config.ts b/libs/ui/phone-recording/jest.config.ts deleted file mode 100644 index c249fb63..00000000 --- a/libs/ui/phone-recording/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'ui-phone-recording', - preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - coverageDirectory: '../../../coverage/libs/ui/phone-recording', -}; diff --git a/libs/ui/phone-recording/project.json b/libs/ui/phone-recording/project.json deleted file mode 100644 index 67fef1c8..00000000 --- a/libs/ui/phone-recording/project.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "ui-phone-recording", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/phone-recording/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/phone-recording/src/**/*.ts", "libs/ui/phone-recording/src/**/*.html"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/phone-recording"], - "options": { - "jestConfig": "libs/ui/phone-recording/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/phone-recording/src/index.ts b/libs/ui/phone-recording/src/index.ts deleted file mode 100644 index 7c259521..00000000 --- a/libs/ui/phone-recording/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-phone-recording.module'; diff --git a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.html b/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.html deleted file mode 100644 index 6df19bf1..00000000 --- a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.html +++ /dev/null @@ -1,59 +0,0 @@ -
    -
    -
    -
    - - File Name - - - Invalid Value - - -
    - -
    - - Number to Dial - - - Invalid Value - - -
    -
    - -
    -
    diff --git a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.scss b/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.scss deleted file mode 100644 index f24ec700..00000000 --- a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.scss +++ /dev/null @@ -1,215 +0,0 @@ -.manage-audio-modal { - .modal-body { - padding: 0; - overflow: hidden; - overflow-y: auto; - background-color: #fff; - } - - .drop-box { - margin: 10px auto; - padding: 10px 0; - cursor: pointer; - } - - .drop-box { - background: #fff; - border: 2px dashed #e6e6e6; - color: #b5b5b5; - text-align: center; - } - - .dragover { - border: 2px dashed blue; - } - - .invalid-drag { - border: 5px dashed red; - } -} - -.loader, -.loader:before, -.loader:after { - background: #87ee07; - -webkit-animation: load1 1s infinite ease-in-out; - animation: load1 1s infinite ease-in-out; - width: 5px; - height: 10px; -} - -.loader { - color: #87ee07; - text-indent: -9999em; - margin: 10px auto; - position: relative; - font-size: 11px; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - -webkit-animation-delay: -0.16s; - animation-delay: -0.16s; -} - -.loader:before, -.loader:after { - position: absolute; - top: 0; - content: ''; -} - -.loader:before { - left: -1.5em; - -webkit-animation-delay: -0.32s; - animation-delay: -0.32s; -} - -.loader:after { - left: 1.5em; -} - -@-webkit-keyframes load1 { - 0%, - 80%, - 100% { - box-shadow: 0 0; - height: 4em; - } - 40% { - box-shadow: 0 -2em; - height: 5em; - } -} - -@keyframes load1 { - 0%, - 80%, - 100% { - box-shadow: 0 0; - height: 4em; - } - 40% { - box-shadow: 0 -2em; - height: 5em; - } -} - -.control-btn a { - color: #333333; - margin: 0 5px; -} -.browser-recording { - i { - font-size: 16px; - color: #b5b5b5; - border-radius: 5px; - border: 1px solid #b5b5b5; - align-self: center; - margin-right: 5px; - } - - .no-border { - border: 0; - } - - a { - color: #434343; - font-size: 12px; - display: flex; - } -} - -.audio { - div.audio-controls { - display: flex; - align-items: center; - color: #666666; - - i { - color: #b5b5b5; - font-size: 18px; - } - - span.filename { - flex: 0.5; - } - } - .nav-tabs { - border-bottom: 2px solid #c6c6c6; - } - - .p-25 { - padding: 25px; - } - - .file-list { - background-color: #fafafa; - padding: 25px 10px; - - ul { - overflow: scroll; - max-height: 200px; - } - - li.list-group-item { - background-color: #fafafa; - margin-bottom: 0; - border: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.125); - } - } - - .sub-heading { - font-size: 16px; - font-weight: bold; - } - - .nav-link { - padding: 0.5rem 0.5rem; - margin: 0 1rem; - - &.active { - color: #005485; - font-weight: bold; - background-color: initial; - border-color: #fff; - border-bottom: 2px solid #005485; - } - } -} - -.slider { - -webkit-appearance: none; - height: 3px; - border-radius: 5px; - background: #d3d3d3; - outline: none; - opacity: 0.7; - -webkit-transition: 0.2s; - transition: opacity 0.2s; -} - -.slider:hover { - opacity: 1; -} - -.slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 10px; - height: 10px; - border-radius: 50%; - background: #005485; - cursor: pointer; -} - -.slider::-moz-range-thumb { - width: 10px; - height: 10px; - border-radius: 50%; - background: #005485; - cursor: pointer; -} -.modal label { - color: #465165 !important; -} diff --git a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.ts b/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.ts deleted file mode 100644 index 344d5aed..00000000 --- a/libs/ui/phone-recording/src/lib/phone-recording/phone-recording.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; - -@Component({ - selector: 'proxy-phone-recording', - templateUrl: './phone-recording.component.html', - styleUrls: ['./phone-recording.component.scss'], -}) -export class PhoneRecordingComponent { - /** Call form group */ - public callForm: UntypedFormGroup; - /** Stores the current phone recording progress */ - @Input() public phoneRecordInProcess: boolean; - /** Stores the phone record error */ - @Input() public phoneRecordError: string; - /** Emits when phone recording needs to be started */ - @Output() public recordPhone: EventEmitter = new EventEmitter(); - - constructor(private formBuilder: UntypedFormBuilder) { - this.callForm = this.formBuilder.group({ - filename: ['', [Validators.required, Validators.pattern(/^([a-zA-Z0-9]+_)*[a-zA-Z0-9]+$/)]], - number: ['', [Validators.required, Validators.pattern(/^\d+$/)]], - }); - } - - /** - * Starts the phone recording - * - * @memberof PhoneRecordingComponent - */ - phoneRec(): void { - this.recordPhone.emit(this.callForm.value); - } -} diff --git a/libs/ui/phone-recording/src/lib/ui-phone-recording.module.ts b/libs/ui/phone-recording/src/lib/ui-phone-recording.module.ts deleted file mode 100644 index b63fb72f..00000000 --- a/libs/ui/phone-recording/src/lib/ui-phone-recording.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { PhoneRecordingComponent } from './phone-recording/phone-recording.component'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatInputModule } from '@angular/material/input'; -import { MatButtonModule } from '@angular/material/button'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - FormsModule, - MatInputModule, - MatButtonModule, - MatFormFieldModule, - MatProgressSpinnerModule, - ], - declarations: [PhoneRecordingComponent], - exports: [PhoneRecordingComponent], -}) -export class UiPhoneRecordingModule {} diff --git a/libs/ui/phone-recording/tsconfig.json b/libs/ui/phone-recording/tsconfig.json deleted file mode 100644 index fbba9f7d..00000000 --- a/libs/ui/phone-recording/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/phone-recording/tsconfig.lib.json b/libs/ui/phone-recording/tsconfig.lib.json deleted file mode 100644 index 207c41bf..00000000 --- a/libs/ui/phone-recording/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/phone-recording/tsconfig.spec.json b/libs/ui/phone-recording/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/phone-recording/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/player/jest.config.ts b/libs/ui/player/jest.config.ts index 06366bf6..b6e1c0b6 100644 --- a/libs/ui/player/jest.config.ts +++ b/libs/ui/player/jest.config.ts @@ -2,10 +2,6 @@ export default { displayName: 'ui-player', preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, + globals: {}, coverageDirectory: '../../../coverage/libs/ui/player', }; diff --git a/libs/ui/player/project.json b/libs/ui/player/project.json index a37ccae7..2523cf16 100644 --- a/libs/ui/player/project.json +++ b/libs/ui/player/project.json @@ -6,14 +6,14 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/player/src/**/*.ts", "libs/ui/player/src/**/*.html"] }, "outputs": ["{options.outputFile}"] }, "test": { - "executor": "@nrwl/jest:jest", + "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/libs/ui/player"], "options": { "tsConfig": "libs/ui/player/tsconfig.lib.json", diff --git a/libs/ui/player/src/index.ts b/libs/ui/player/src/index.ts index 898ce280..944559d7 100644 --- a/libs/ui/player/src/index.ts +++ b/libs/ui/player/src/index.ts @@ -1,2 +1 @@ -export * from './lib/ui-player.module'; export * from './lib/player/player.component'; diff --git a/libs/ui/player/src/lib/player/player.component.html b/libs/ui/player/src/lib/player/player.component.html index 0cf64791..072f20da 100644 --- a/libs/ui/player/src/lib/player/player.component.html +++ b/libs/ui/player/src/lib/player/player.component.html @@ -1,23 +1,17 @@ -
    - - - - - +
    + @if (showPlay() && !isLoading && !isPlaying) { + + + + } @if (showPlay() && !isLoading && isPlaying) { + + + + } @if (isLoading) { + + } - {{ duration }}/{{ totalDuration }} - + @if (showTime()) { + {{ duration }}/{{ totalDuration }} + } @if (showDelete()) { - + } @if (showDownload() && blobUrl) { + + }
    diff --git a/libs/ui/player/src/lib/player/player.component.scss b/libs/ui/player/src/lib/player/player.component.scss index abec2e5b..e8e85880 100644 --- a/libs/ui/player/src/lib/player/player.component.scss +++ b/libs/ui/player/src/lib/player/player.component.scss @@ -3,7 +3,7 @@ padding: 0; overflow: hidden; overflow-y: auto; - background-color: #fff; + background-color: var(--color-common-bg); } .drop-box { @@ -13,9 +13,9 @@ } .drop-box { - background: #fff; - border: 2px dashed #e6e6e6; - color: #b5b5b5; + background: var(--color-common-bg); + border: 2px dashed var(--color-common-border); + color: var(--color-common-grey); text-align: center; } @@ -31,7 +31,7 @@ .loader, .loader:before, .loader:after { - background: #87ee07; + background: var(--color-dark-accent); -webkit-animation: load1 1s infinite ease-in-out; animation: load1 1s infinite ease-in-out; width: 5px; @@ -39,7 +39,7 @@ } .loader { - color: #87ee07; + color: var(--color-dark-accent); text-indent: -9999em; margin: 10px auto; position: relative; @@ -95,35 +95,16 @@ } .control-btn a { - color: #333333; + color: var(--color-common-text); margin: 0 5px; } -// .search-containt { -// i { -// position: absolute; -// left: 7%; -// top: 30%; -// color: #aeaeaa; -// } - -// input { -// height: 30px; -// padding-left: 30px; -// font-size: 12px; -// border-radius: 2px; -// border-color: #c4c0c0; -// } - -// position: relative; -// } - .browser-recording { i { font-size: 16px; - color: #b5b5b5; + color: var(--color-common-grey); border-radius: 5px; - border: 1px solid #b5b5b5; + border: 1px solid var(--color-common-grey); align-self: center; margin-right: 5px; } @@ -133,7 +114,7 @@ } a { - color: #434343; + color: var(--color-common-text); font-size: 12px; display: flex; } @@ -143,10 +124,10 @@ div.audio-controls { display: flex; align-items: center; - color: #666666; + color: var(--color-common-text); i { - color: #b5b5b5; + color: var(--color-common-grey); font-size: 18px; } @@ -155,7 +136,7 @@ } } .nav-tabs { - border-bottom: 1px solid #d6d7d6; + border-bottom: 1px solid var(--color-common-border); } .p-25 { @@ -163,7 +144,7 @@ } .file-list { - background-color: #fafafa; + background-color: var(--color-common-app-bg); padding: 0px 10px; ul { @@ -172,7 +153,7 @@ } li.list-group-item { - background-color: #fafafa; + background-color: var(--color-common-app-bg); margin-bottom: 0; border: 0; border-bottom: 1px solid rgba(0, 0, 0, 0.125); @@ -187,23 +168,24 @@ .nav-link { padding: 0.5rem 0.5rem; margin: 0 1rem; - color: #313c46; + color: var(--color-common-text); &.active { - color: #166ab3; + color: var(--color-common-primary); font-weight: bold; background-color: initial; - border-color: #fff; - border-bottom: 2px solid #166ab3; + border-color: var(--color-common-bg); + border-bottom: 2px solid var(--color-common-primary); } } } .slider { -webkit-appearance: none; + appearance: none; height: 3px; border-radius: 5px; - background: #d3d3d3; + background: var(--color-common-border); outline: none; opacity: 0.7; -webkit-transition: 0.2s; @@ -228,7 +210,7 @@ width: 10px; height: 10px; border-radius: 50%; - background: #005485; + background: var(--color-common-primary); cursor: pointer; } @@ -236,12 +218,9 @@ width: 10px; height: 10px; border-radius: 50%; - background: #005485; + background: var(--color-common-primary); cursor: pointer; } -div.audio-controls { - // margin-top: 5px; -} .message-main-sender { span.mr-2 { padding-left: 10px; @@ -260,9 +239,3 @@ div.audio-controls { input.slider::before { display: none; } -.text-success { - color: #166ab3 !important; - &:hover { - color: #166ab3 !important; - } -} diff --git a/libs/ui/player/src/lib/player/player.component.ts b/libs/ui/player/src/lib/player/player.component.ts index 98a817c5..6c6264ad 100644 --- a/libs/ui/player/src/lib/player/player.component.ts +++ b/libs/ui/player/src/lib/player/player.component.ts @@ -3,61 +3,67 @@ import { ChangeDetectorRef, Component, ElementRef, - EventEmitter, - Input, - OnChanges, OnInit, - Output, - SimpleChanges, ViewChild, ViewEncapsulation, + effect, + inject, + input, + output, } from '@angular/core'; -import * as dayjs from 'dayjs'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import dayjs from 'dayjs'; import { Observable } from 'rxjs'; import { DomSanitizer } from '@angular/platform-browser'; import { PrimeNgToastService } from '@proxy/ui/prime-ng-toast'; @Component({ selector: 'proxy-lib-audio-player', + imports: [MatProgressSpinnerModule, MatButtonModule, MatIconModule], templateUrl: './player.component.html', styleUrls: ['./player.component.scss'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, }) -export class PlayerComponent implements OnInit, OnChanges { - @Input() public playDirect = false; - @Input() public filename: string; - @Input() public isLoading: boolean; - @Input() public isPlaying: boolean; - @Input() public showDelete = true; - @Input() public showDownload; - @Input() public showPlay = true; - @Input() public showTime = true; - @Input() public totalDuration = '00:00'; - @Input() public duration = '00:00'; - @Input() public seconds = 0; - @Input() public total = 0; - @Input() public getBuffer: () => Blob | Observable; - @Input() public blobUrl: string; - @Output() public play = new EventEmitter(); - @Output() public pause = new EventEmitter(); - @Output() public remove = new EventEmitter(); - @Output() public seek = new EventEmitter(); +export class PlayerComponent implements OnInit { + public playDirect = input(false); + public filename = input(); + public showDelete = input(true); + public showDownload = input(); + public showPlay = input(true); + public showTime = input(true); + public getBuffer = input<() => Blob | Observable>(); + + public play = output(); + public pause = output(); + public remove = output(); + public seek = output(); + public loadingInProcess = output(); + @ViewChild('audio', { static: true }) public audio: ElementRef; public isSeeking: boolean; public unsafeBlobUrl: string; + public isLoading: boolean; + public isPlaying: boolean; + public totalDuration = '00:00'; + public duration = '00:00'; + public seconds = 0; + public total = 0; + public blobUrl: string; private isError: boolean; - @Output() public loadingInProcess = new EventEmitter(); - constructor(private sanitizer: DomSanitizer, private toast: PrimeNgToastService, private cdr: ChangeDetectorRef) {} + private sanitizer = inject(DomSanitizer); + private toast = inject(PrimeNgToastService); + private cdr = inject(ChangeDetectorRef); - /** - * Initializes the component - * - * @memberof PlayerComponent - */ - public ngOnInit(): void { - this.totalDuration = this.secondsToDuration(this.total); + constructor() { + effect(() => { + if (this.playDirect()) { + this.playAudio(); + } + }); } /** @@ -65,12 +71,8 @@ export class PlayerComponent implements OnInit, OnChanges { * * @memberof PlayerComponent */ - public ngOnChanges(simpleChanges: SimpleChanges): void { - if (simpleChanges.hasOwnProperty('playDirect')) { - if (simpleChanges.playDirect.currentValue) { - this.playAudio(); - } - } + public ngOnInit(): void { + this.totalDuration = this.secondsToDuration(this.total); } /** diff --git a/libs/ui/player/src/lib/ui-player.module.ts b/libs/ui/player/src/lib/ui-player.module.ts deleted file mode 100644 index 905085c1..00000000 --- a/libs/ui/player/src/lib/ui-player.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; - -import { PlayerComponent } from './player/player.component'; -import { MatButtonModule } from '@angular/material/button'; - -@NgModule({ - declarations: [PlayerComponent], - imports: [CommonModule, MatProgressSpinnerModule, MatButtonModule], - exports: [PlayerComponent], -}) -export class UiPlayerModule {} diff --git a/libs/ui/player/tsconfig.lib.json b/libs/ui/player/tsconfig.lib.json index 476ca8bc..e8e94f2b 100644 --- a/libs/ui/player/tsconfig.lib.json +++ b/libs/ui/player/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../../dist/out-tsc", - "target": "es2015", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "angularCompilerOptions": { "skipTemplateCodegen": true, diff --git a/libs/ui/prime-ng-toast/project.json b/libs/ui/prime-ng-toast/project.json index 5332ca29..c1ee7b10 100644 --- a/libs/ui/prime-ng-toast/project.json +++ b/libs/ui/prime-ng-toast/project.json @@ -5,7 +5,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/prime-ng-toast/**/*.ts", "libs/ui/prime-ng-toast/**/*.html"] } diff --git a/libs/ui/prime-ng-toast/src/index.ts b/libs/ui/prime-ng-toast/src/index.ts index e2ec5eb8..3846fa42 100644 --- a/libs/ui/prime-ng-toast/src/index.ts +++ b/libs/ui/prime-ng-toast/src/index.ts @@ -1,2 +1,2 @@ -export * from './lib/ui-prime-ng-toast.module'; export * from './lib/prime-ng-toast.service'; +export * from './lib/prime-ng-toast/prime-ng-toast.component'; diff --git a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.html b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.html index ecd84ad0..06c9f1c2 100644 --- a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.html +++ b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.html @@ -1,26 +1,27 @@ -
    +

    {{ message.detail?.customAction ? message.detail?.message : message.detail }} - - undo in {{ undoTimer }} - + @if (message.detail?.customAction && undoTimer > 0) { + undo in {{ undoTimer }} + }

    + @if ((message.detail?.customAction && undoTimer > 0) || !message.detail?.customAction) { + }
    diff --git a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.scss b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.scss index 3957866d..3f4a903f 100644 --- a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.scss +++ b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.scss @@ -25,9 +25,6 @@ ::ng-deep .p-toast-message-content { padding: 0px !important; } -// ::ng-deep .p-toast-icon-close { -// display: none !important; -// } ::ng-deep .p-toast-icon-close:hover { background: transparent !important; } diff --git a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.ts b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.ts index 6f937ba0..ede183cd 100644 --- a/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.ts +++ b/libs/ui/prime-ng-toast/src/lib/prime-ng-toast/prime-ng-toast.component.ts @@ -1,4 +1,10 @@ -import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, OnDestroy, OnInit, output, inject } from '@angular/core'; +import { ToastModule } from 'primeng/toast'; +import { RippleModule } from 'primeng/ripple'; +import { ButtonModule } from 'primeng/button'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; +import { MatTooltipModule } from '@angular/material/tooltip'; import { errorResolver } from '@proxy/models/root-models'; import { BaseComponent } from '@proxy/ui/base-component'; import { isEqual } from 'lodash-es'; @@ -9,12 +15,14 @@ import { PrimeNgToastService } from '../prime-ng-toast.service'; @Component({ selector: 'proxy-prime-ng-toast', + imports: [ToastModule, RippleModule, ButtonModule, MatIconModule, MatButtonModule, MatTooltipModule], templateUrl: './prime-ng-toast.component.html', styleUrls: ['./prime-ng-toast.component.scss'], providers: [MessageService], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class PrimeNgToastComponent extends BaseComponent implements OnInit, OnDestroy { - @Output() public undoMail = new EventEmitter(); + public undoMail = output(); private toastDefaultSetting = { summary: '', life: 3000, @@ -22,13 +30,9 @@ export class PrimeNgToastComponent extends BaseComponent implements OnInit, OnDe public undoTimerInterval: any; public undoTimer: number = 0; - constructor( - private messageService: MessageService, - private primengConfig: PrimeNGConfig, - private primeNgToastService: PrimeNgToastService - ) { - super(); - } + private messageService = inject(MessageService); + private primengConfig = inject(PrimeNGConfig); + private primeNgToastService = inject(PrimeNgToastService); public ngOnInit(): void { this.primengConfig.ripple = true; @@ -154,7 +158,7 @@ export class PrimeNgToastComponent extends BaseComponent implements OnInit, OnDe public onReject(event): void { setTimeout(() => { if (event.message?.detail?.buttonContent === 'Undo' && this.undoTimer > 0) { - this.undoMail.emit(); + this.undoMail.emit(undefined); clearInterval(this.undoTimerInterval); } }, 500); diff --git a/libs/ui/prime-ng-toast/src/lib/ui-prime-ng-toast.module.ts b/libs/ui/prime-ng-toast/src/lib/ui-prime-ng-toast.module.ts deleted file mode 100644 index 962b79ba..00000000 --- a/libs/ui/prime-ng-toast/src/lib/ui-prime-ng-toast.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ToastModule } from 'primeng/toast'; -import { RippleModule } from 'primeng/ripple'; -import { PrimeNgToastComponent } from './prime-ng-toast/prime-ng-toast.component'; -import { PrimeNgToastService } from './prime-ng-toast.service'; -import { MatIconModule } from '@angular/material/icon'; -import { MatButtonModule } from '@angular/material/button'; -import { ButtonModule } from 'primeng/button'; -import { MatTooltipModule } from '@angular/material/tooltip'; - -@NgModule({ - declarations: [PrimeNgToastComponent], - imports: [CommonModule, ToastModule, RippleModule, ButtonModule, MatIconModule, MatButtonModule, MatTooltipModule], - exports: [PrimeNgToastComponent], - providers: [PrimeNgToastService], -}) -export class UiPrimeNgToastModule {} diff --git a/libs/ui/qr-code/.eslintrc.json b/libs/ui/qr-code/.eslintrc.json deleted file mode 100644 index d65592ca..00000000 --- a/libs/ui/qr-code/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/qr-code/README.md b/libs/ui/qr-code/README.md deleted file mode 100644 index 04baef4d..00000000 --- a/libs/ui/qr-code/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-components-qr-code - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/qr-code/project.json b/libs/ui/qr-code/project.json deleted file mode 100644 index 2378b5e4..00000000 --- a/libs/ui/qr-code/project.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ui-components-qr-code", - "$schema": "../../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/qr-code/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/qr-code/src/**/*.ts", "libs/ui/qr-code/src/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/qr-code/src/index.ts b/libs/ui/qr-code/src/index.ts deleted file mode 100644 index abf4439b..00000000 --- a/libs/ui/qr-code/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-components-qr-code.module'; diff --git a/libs/ui/qr-code/src/lib/qr-code.component.ts b/libs/ui/qr-code/src/lib/qr-code.component.ts deleted file mode 100644 index 949d63e8..00000000 --- a/libs/ui/qr-code/src/lib/qr-code.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { BaseComponent } from '@proxy/ui/base-component'; - -declare var QRious; - -@Component({ - selector: 'proxy-qr-code', - template: '', -}) -export class QRCodeComponent extends BaseComponent implements OnInit { - @Input() qrContent: string; - - constructor() { - super(); - } - - ngOnInit(): void { - let head = document.getElementsByTagName('head')[0]; - let script = document.createElement('script'); - script.type = 'text/javascript'; - script.onload = () => { - this.generateQR(); - }; - script.src = 'https://cdnjs.cloudflare.com/ajax/libs/qrious/4.0.2/qrious.min.js'; - head.appendChild(script); - } - - public generateQR(): void { - if (this.qrContent) { - var qr; - qr = new QRious({ - element: document.getElementById('qr-code'), - size: 200, - value: this.qrContent, - }); - } - } -} diff --git a/libs/ui/qr-code/src/lib/ui-components-qr-code.module.ts b/libs/ui/qr-code/src/lib/ui-components-qr-code.module.ts deleted file mode 100644 index 477223e3..00000000 --- a/libs/ui/qr-code/src/lib/ui-components-qr-code.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { QRCodeComponent } from './qr-code.component'; - -@NgModule({ - declarations: [QRCodeComponent], - imports: [CommonModule], - exports: [QRCodeComponent], -}) -export class UiComponentsQrCodeModule {} diff --git a/libs/ui/qr-code/tsconfig.json b/libs/ui/qr-code/tsconfig.json deleted file mode 100644 index 18bcf55f..00000000 --- a/libs/ui/qr-code/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/qr-code/tsconfig.lib.json b/libs/ui/qr-code/tsconfig.lib.json deleted file mode 100644 index 3f2d9700..00000000 --- a/libs/ui/qr-code/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/reject-reason/.eslintrc.json b/libs/ui/reject-reason/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/reject-reason/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/reject-reason/README.md b/libs/ui/reject-reason/README.md deleted file mode 100644 index d5e09c12..00000000 --- a/libs/ui/reject-reason/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-reject-reason - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/reject-reason/project.json b/libs/ui/reject-reason/project.json deleted file mode 100644 index 9de78c0d..00000000 --- a/libs/ui/reject-reason/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-reject-reason", - "projectType": "library", - "sourceRoot": "libs/ui/reject-reason/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/reject-reason/**/*.ts", "libs/ui/reject-reason/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/reject-reason/src/index.ts b/libs/ui/reject-reason/src/index.ts deleted file mode 100644 index 839383bb..00000000 --- a/libs/ui/reject-reason/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './lib/ui-reject-reason.module'; - -export * from './lib/reject-reason/reject-reason.component'; diff --git a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.html b/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.html deleted file mode 100644 index 04d037a4..00000000 --- a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.html +++ /dev/null @@ -1,138 +0,0 @@ -
    -

    Rejection Reason

    - -
    -
    - -
    - - - - - - - - {{ field.placeholder | titlecase }} field is required. - - - Maximum allow length is - {{ maxLengthError?.requiredLength }}. - - - Minimum allow length is - {{ minLengthError?.requiredLength }}. - - - {{ field.data?.pattern }} - - - {{ field.data?.whitespace }} - - - {{ field.data?.noStartEndSpaces }} - - - - - -
    - - -
    -
    -
    -
    - -
    -
    - -
      -
    • -
      -

      {{ reason?.title }}

      -

      - {{ reason?.content }} -

      -
      -
      - -
      -
    • -
    -
    -
    No reasons found.
    -
    - -
    - -
    diff --git a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.scss b/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.scss deleted file mode 100644 index 62a0d3f6..00000000 --- a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -.border-bottom { - border-bottom: 1px solid var(--color-common-border); -} -.bg-white { - background-color: var(--color-common-white) !important; -} -.rejection-searchbar { - position: sticky; - top: 40px; - z-index: 999; -} diff --git a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.ts b/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.ts deleted file mode 100644 index d88d8a4c..00000000 --- a/libs/ui/reject-reason/src/lib/reject-reason/reject-reason.component.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { - ChangeDetectionStrategy, - Component, - EventEmitter, - Input, - OnChanges, - OnInit, - Output, - SimpleChanges, -} from '@angular/core'; -import { FormControl, FormRecord, ValidatorFn } from '@angular/forms'; -import { MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { ConfirmDialogComponent } from '@proxy/ui/confirm-dialog'; - -export interface RejectFormField { - name: string; - placeholder?: string; - type: string; - data?: { [key: string]: any }; - validations: Array; -} - -export type RejectForm = Array; - -export interface RejectButtons { - name: string; - class?: string; - data?: { [key: string]: string }; -} -export interface NewRejectReason { - form: RejectForm; -} -export interface SearchRejectReason { - placeholder: string; - emitOnEnter: boolean; -} -export interface RejectReasonConfiguration { - newReason: NewRejectReason; - searchReason: SearchRejectReason; -} -@Component({ - selector: 'proxy-reject-reason', - templateUrl: './reject-reason.component.html', - styleUrls: ['./reject-reason.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class RejectReasonComponent implements OnInit, OnChanges { - /** Configuration to initialize form */ - @Input() public configuration: RejectReasonConfiguration; - /** True, if add new reason option needs to be shown */ - @Input() public showAddReason: boolean; - /** Stores the list of all the rejection reasons */ - @Input() public rejectionReasons: Array; - /** True, if rejection API is in progress */ - @Input() public isLoading: boolean; - /** Stores the selected reason */ - @Input() public selectedReason: any; - /** Button text for rejection button */ - @Input() public rejectButtonTxt = 'Reject & Next'; - /** True, if rejection is created successfully */ - @Input() public resetForm: boolean; - @Input() public matMenuOpen: boolean; - - /** Emits when menu is closed */ - @Output() public closeMenu: EventEmitter = new EventEmitter(); - /** Show add reason output emitter for two-way binding */ - @Output() public showAddReasonChange: EventEmitter = new EventEmitter(); - /** Add new reason event */ - @Output() public addNewReason: EventEmitter = new EventEmitter(); - /** Cancel new reason event */ - @Output() public cancelNewReason: EventEmitter = new EventEmitter(); - /** Search event of rejection reason */ - @Output() public searched: EventEmitter = new EventEmitter(); - /** Delete reason event */ - @Output() public reasonDeleted: EventEmitter = new EventEmitter(); - /** Reject event */ - @Output() public rejectAndNext: EventEmitter = new EventEmitter(); - /** Selected reason output emitter for two-way binding */ - @Output() public selectedReasonChange: EventEmitter = new EventEmitter(); - - /** New reason form group instance */ - public addReasonForm: FormRecord>; - - constructor(private dialog: MatDialog) {} - - /** - * Initializes the form - * - * @memberof RejectReasonComponent - */ - public ngOnInit(): void { - if (this.configuration?.newReason?.form) { - this.addReasonForm = new FormRecord>({}); - const formInstance = this.configuration?.newReason?.form; - formInstance.forEach((field) => { - this.addReasonForm.addControl(field.name, new FormControl('', field.validations)); - }); - } - } - - /** - * Resets the form once API succeeds - * - * @param {SimpleChanges} changes - * @memberof RejectReasonComponent - */ - public ngOnChanges(changes: SimpleChanges): void { - if (changes.resetForm?.currentValue) { - this.addReasonForm.reset(); - this.setAddReason(false); - } - } - - /** - * Delete reason handler - * - * @param {*} reason Reason to be deleted - * @memberof RejectReasonComponent - */ - public onDelete(reason: any): void { - const dialogRef: MatDialogRef = this.dialog.open(ConfirmDialogComponent); - const componentInstance = dialogRef.componentInstance; - componentInstance.confirmationMessage = `Are you sure to delete this reason?`; - componentInstance.confirmButtonText = 'Delete'; - dialogRef.afterClosed().subscribe((action) => { - if (action === 'yes') { - this.reasonDeleted.emit({ request: reason?.id }); - } - }); - } - - /** - * Cancels the addition of new reason and resets the form - * - * @memberof RejectReasonComponent - */ - public cancelNewReasonAndReset(): void { - this.setAddReason(false); - this.cancelNewReason.emit(); - this.addReasonForm.reset(); - } - - /** - * Sets the add reason form - * @param {boolean} value Value to be set - */ - public setAddReason(value: boolean): void { - this.showAddReason = value; - this.showAddReasonChange.emit(this.showAddReason); - } -} diff --git a/libs/ui/reject-reason/src/lib/ui-reject-reason.module.ts b/libs/ui/reject-reason/src/lib/ui-reject-reason.module.ts deleted file mode 100644 index b6abd173..00000000 --- a/libs/ui/reject-reason/src/lib/ui-reject-reason.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RejectReasonComponent } from './reject-reason/reject-reason.component'; -import { MatIconModule } from '@angular/material/icon'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { UiLoaderModule } from '@proxy/ui/loader'; -import { MatButtonModule } from '@angular/material/button'; -import { MatRippleModule } from '@angular/material/core'; -import { MatInputModule } from '@angular/material/input'; -import { UiComponentsSearchModule } from '@proxy/ui/search'; -import { MatDialogModule } from '@angular/material/dialog'; -import { UiConfirmDialogModule } from '@proxy/ui/confirm-dialog'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - MatIconModule, - MatDividerModule, - MatFormFieldModule, - MatTooltipModule, - UiLoaderModule, - MatButtonModule, - MatRippleModule, - MatInputModule, - UiComponentsSearchModule, - MatDialogModule, - UiConfirmDialogModule, - ], - declarations: [RejectReasonComponent], - exports: [RejectReasonComponent], -}) -export class UiRejectReasonModule {} diff --git a/libs/ui/reject-reason/tsconfig.json b/libs/ui/reject-reason/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/reject-reason/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/reject-reason/tsconfig.lib.json b/libs/ui/reject-reason/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/reject-reason/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/route-loader/.eslintrc.json b/libs/ui/route-loader/.eslintrc.json deleted file mode 100644 index d65592ca..00000000 --- a/libs/ui/route-loader/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/route-loader/README.md b/libs/ui/route-loader/README.md deleted file mode 100644 index f3110260..00000000 --- a/libs/ui/route-loader/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-components-route-loader - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/route-loader/project.json b/libs/ui/route-loader/project.json deleted file mode 100644 index db418eb0..00000000 --- a/libs/ui/route-loader/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-components-route-loader", - "projectType": "library", - "sourceRoot": "libs/ui/route-loader/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/route-loader/**/*.ts", "libs/ui/route-loader/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/route-loader/src/index.ts b/libs/ui/route-loader/src/index.ts deleted file mode 100644 index 48b30cf9..00000000 --- a/libs/ui/route-loader/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-components-route-loader.module'; diff --git a/libs/ui/route-loader/src/lib/router-loader.component.scss b/libs/ui/route-loader/src/lib/router-loader.component.scss deleted file mode 100644 index 2974da92..00000000 --- a/libs/ui/route-loader/src/lib/router-loader.component.scss +++ /dev/null @@ -1,37 +0,0 @@ -.microservice-route-loader { - inset: 0; - height: 100%; - width: 100%; - position: fixed; - // z-index: 9999999; - z-index: 999; - img.microservice-logo { - width: 70px; - } - p.microservice-name { - font-size: 75px; - } -} - -/* Small devices (landscape phones, 576px and up)*/ -@media screen and (max-width: 576px) { - .microservice-route-loader { - img.microservice-logo { - width: 30px; - } - p.microservice-name { - font-size: 30px; - } - } -} - -@media screen and (min-width: 576px) and (max-width: 768px) { - .microservice-route-loader { - img.microservice-logo { - width: 50px; - } - p.microservice-name { - font-size: 50px; - } - } -} diff --git a/libs/ui/route-loader/src/lib/router-loader.component.ts b/libs/ui/route-loader/src/lib/router-loader.component.ts deleted file mode 100644 index 341f7e6b..00000000 --- a/libs/ui/route-loader/src/lib/router-loader.component.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'proxy-router-loader', - template: ` -
    -
    - proxy logo -
    -
    -
    - -

    - {{ microserviceName | uppercase }} -

    -
    -

    Loading...

    -
    -
    - `, - styleUrls: ['./router-loader.component.scss'], -}) -export class RouterLoaderComponent { - @Input() public microserviceName: string = ''; -} diff --git a/libs/ui/route-loader/src/lib/ui-components-route-loader.module.ts b/libs/ui/route-loader/src/lib/ui-components-route-loader.module.ts deleted file mode 100644 index 57a96a86..00000000 --- a/libs/ui/route-loader/src/lib/ui-components-route-loader.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { RouterLoaderComponent } from './router-loader.component'; -import { PipesReplaceModule } from '@proxy/pipes/replace'; - -@NgModule({ - declarations: [RouterLoaderComponent], - imports: [CommonModule, PipesReplaceModule], - exports: [RouterLoaderComponent], -}) -export class UiComponentsRouteLoaderModule {} diff --git a/libs/ui/route-loader/tsconfig.json b/libs/ui/route-loader/tsconfig.json deleted file mode 100644 index 18bcf55f..00000000 --- a/libs/ui/route-loader/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/route-loader/tsconfig.lib.json b/libs/ui/route-loader/tsconfig.lib.json deleted file mode 100644 index b8537fcc..00000000 --- a/libs/ui/route-loader/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/search/project.json b/libs/ui/search/project.json index 9b884558..4b871a7d 100644 --- a/libs/ui/search/project.json +++ b/libs/ui/search/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/search/src/**/*.ts", "libs/ui/search/src/**/*.html"] } diff --git a/libs/ui/search/src/index.ts b/libs/ui/search/src/index.ts index 3f9d805e..9c231f34 100644 --- a/libs/ui/search/src/index.ts +++ b/libs/ui/search/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-components-search.module'; +export * from './lib/search/search.component'; diff --git a/libs/ui/search/src/lib/search/search.component.html b/libs/ui/search/src/lib/search/search.component.html index 31fdeb0b..d3018a86 100644 --- a/libs/ui/search/src/lib/search/search.component.html +++ b/libs/ui/search/src/lib/search/search.component.html @@ -1,53 +1,47 @@ - - - - - - - + + @if (!isRemoveChar()) { + + } @else { + + } search - - + } @if (hint()) { + + } - - - {{ error.value }} - - + @if (searchFormControl.dirty) { @for (error of formErrors() || {} | keyvalue; track error.key) { @if + (searchFormControl.errors?.[error.key]) { + {{ error.value }} + } } } diff --git a/libs/ui/search/src/lib/search/search.component.ts b/libs/ui/search/src/lib/search/search.component.ts index fdc22481..304082e9 100644 --- a/libs/ui/search/src/lib/search/search.component.ts +++ b/libs/ui/search/src/lib/search/search.component.ts @@ -1,83 +1,107 @@ import { Component, OnInit, - Input, - EventEmitter, - Output, ChangeDetectionStrategy, - OnChanges, - SimpleChanges, + effect, + inject, + input, + output, + ChangeDetectorRef, } from '@angular/core'; -import { UntypedFormControl, Validators } from '@angular/forms'; -import { TooltipPosition } from '@angular/material/tooltip'; +import { FormControl, ValidatorFn, ReactiveFormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; +import { MatTooltipModule, TooltipPosition } from '@angular/material/tooltip'; +import { KeyValuePipe, NgTemplateOutlet } from '@angular/common'; +import { RemoveCharacterDirective } from '@proxy/directives/RemoveCharacterDirective'; import { DEBOUNCE_TIME } from '@proxy/constant'; import { debounceTime } from 'rxjs/operators'; @Component({ selector: 'proxy-lib-search', + imports: [ + ReactiveFormsModule, + MatFormFieldModule, + MatInputModule, + MatIconModule, + MatButtonModule, + MatTooltipModule, + KeyValuePipe, + NgTemplateOutlet, + RemoveCharacterDirective, + ], templateUrl: './search.component.html', styleUrls: ['./search.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class SearchComponent implements OnInit, OnChanges { - @Input() type = 'text'; - @Input() value: string; +export class SearchComponent implements OnInit { + type = input('text'); + value = input(); /** * placeholder for input. * string */ - @Input() placeholder = ''; - @Input() hideCloseIcon: boolean = false; + placeholder = input(''); + hideCloseIcon = input(false); /** * validators (angular mat form supported Validators class members) * Validators[] */ - @Input() validators: Validators[]; - @Input() toolTipString = ''; - @Input() toolTipPosition: TooltipPosition = 'above'; - @Input() toolTipDisable = false; - @Input() inputDisabled: boolean; - @Input() matFormFieldClass = ''; - @Input() formErrors: { [key: string]: string }; - @Input() isRemoveChar: boolean; - @Input() charactersToRemove: Array; - @Input() emitOnEnter = false; - @Input() hint: string = null; + validators = input(); + toolTipString = input(''); + toolTipPosition = input('above'); + toolTipDisable = input(false); + inputDisabled = input(); + matFormFieldClass = input(''); + formErrors = input<{ [key: string]: string }>(); + isRemoveChar = input(); + charactersToRemove = input>(); + emitOnEnter = input(false); + hint = input(null); - @Output() inputChanges: EventEmitter = new EventEmitter(); + inputChanges = output(); - public searchFormControl = new UntypedFormControl(''); + private cdr = inject(ChangeDetectorRef); + public searchFormControl = new FormControl(''); - public ngOnInit(): void { - if (!this.emitOnEnter) { - this.searchFormControl.valueChanges.pipe(debounceTime(DEBOUNCE_TIME)).subscribe((res) => { - this.emitInputChanges(res); - }); - } - } - - public ngOnChanges(changes: SimpleChanges): void { - if (changes?.validators?.currentValue && Array.isArray(changes?.validators.currentValue)) { - this.searchFormControl.setValidators(changes?.validators.currentValue); - this.searchFormControl.updateValueAndValidity(); - } else { - if (Array.isArray(changes?.validators?.previousValue) && !changes?.validators?.currentValue) { + constructor() { + effect(() => { + const v = this.validators(); + if (v && Array.isArray(v)) { + this.searchFormControl.setValidators(v); + } else { this.searchFormControl.setValidators([]); - this.searchFormControl.updateValueAndValidity(); } - } - if (changes?.inputDisabled?.currentValue !== undefined) { - if (changes?.inputDisabled?.currentValue && this.searchFormControl.enabled) { - this.searchFormControl.disable(); - } else if (!changes?.inputDisabled?.currentValue && this.searchFormControl.disabled) { - this.searchFormControl.enable(); + this.searchFormControl.updateValueAndValidity(); + }); + + effect(() => { + const disabled = this.inputDisabled(); + if (disabled !== undefined) { + if (disabled && this.searchFormControl.enabled) { + this.searchFormControl.disable(); + } else if (!disabled && this.searchFormControl.disabled) { + this.searchFormControl.enable(); + } } - } - if (changes?.value?.currentValue !== undefined) { - if (changes?.value?.currentValue !== this.searchFormControl?.value) { - this.searchFormControl.setValue(changes?.value?.currentValue); + }); + + effect(() => { + const val = this.value(); + if (val !== undefined && val !== this.searchFormControl.value) { + this.searchFormControl.setValue(val); this.searchFormControl.markAsDirty(); } + }); + } + + public ngOnInit(): void { + if (!this.emitOnEnter()) { + this.searchFormControl.valueChanges.pipe(debounceTime(DEBOUNCE_TIME)).subscribe((res) => { + this.emitInputChanges(res); + }); } } @@ -90,7 +114,7 @@ export class SearchComponent implements OnInit, OnChanges { /** clear search on close icon click */ public clearSearch(): void { this.searchFormControl.setValue(''); - if (this.emitOnEnter) { + if (this.emitOnEnter()) { this.emitInputChanges(''); } } diff --git a/libs/ui/search/src/lib/ui-components-search.module.ts b/libs/ui/search/src/lib/ui-components-search.module.ts deleted file mode 100644 index 7e012571..00000000 --- a/libs/ui/search/src/lib/ui-components-search.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { SearchComponent } from './search/search.component'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { DirectivesRemoveCharacterDirectiveModule } from '@proxy/directives/RemoveCharacterDirective'; - -@NgModule({ - declarations: [SearchComponent], - imports: [ - CommonModule, - FormsModule, - MatFormFieldModule, - ReactiveFormsModule, - MatIconModule, - MatButtonModule, - MatTooltipModule, - MatInputModule, - DirectivesRemoveCharacterDirectiveModule, - ], - exports: [SearchComponent], -}) -export class UiComponentsSearchModule {} diff --git a/libs/directives/auto-focus-directive/.eslintrc.json b/libs/ui/service-list/.eslintrc.json similarity index 100% rename from libs/directives/auto-focus-directive/.eslintrc.json rename to libs/ui/service-list/.eslintrc.json diff --git a/libs/ui/service-list/README.md b/libs/ui/service-list/README.md new file mode 100644 index 00000000..4e87e9ce --- /dev/null +++ b/libs/ui/service-list/README.md @@ -0,0 +1,3 @@ +# ui-service-list + +Reusable service list sidebar component for displaying a list of services with selection state and validation error indicators. diff --git a/libs/ui/color-picker/jest.config.ts b/libs/ui/service-list/jest.config.ts similarity index 65% rename from libs/ui/color-picker/jest.config.ts rename to libs/ui/service-list/jest.config.ts index f88cbe1b..7ea2d2df 100644 --- a/libs/ui/color-picker/jest.config.ts +++ b/libs/ui/service-list/jest.config.ts @@ -1,11 +1,11 @@ /* eslint-disable */ export default { - displayName: 'ui-color-picker', + displayName: 'ui-service-list', preset: '../../../jest.preset.js', globals: { 'ts-jest': { tsconfig: '/tsconfig.spec.json', }, }, - coverageDirectory: '../../../coverage/libs/ui/color-picker', + coverageDirectory: '../../../coverage/libs/ui/service-list', }; diff --git a/libs/ui/service-list/project.json b/libs/ui/service-list/project.json new file mode 100644 index 00000000..2f069d77 --- /dev/null +++ b/libs/ui/service-list/project.json @@ -0,0 +1,15 @@ +{ + "name": "ui-service-list", + "projectType": "library", + "sourceRoot": "libs/ui/service-list/src", + "prefix": "proxy", + "targets": { + "lint": { + "executor": "@nx/eslint:lint", + "options": { + "lintFilePatterns": ["libs/ui/service-list/**/*.ts", "libs/ui/service-list/**/*.html"] + } + } + }, + "tags": [] +} diff --git a/libs/ui/service-list/src/index.ts b/libs/ui/service-list/src/index.ts new file mode 100644 index 00000000..018effae --- /dev/null +++ b/libs/ui/service-list/src/index.ts @@ -0,0 +1 @@ +export * from './lib/service-list.component'; diff --git a/libs/ui/service-list/src/lib/service-list.component.html b/libs/ui/service-list/src/lib/service-list.component.html new file mode 100644 index 00000000..e635fe80 --- /dev/null +++ b/libs/ui/service-list/src/lib/service-list.component.html @@ -0,0 +1,18 @@ + + @for (service of services(); track service; let i = $index) { + +
    + {{ service.name }} + @if (isInvalid(i)) { + error + } +
    + navigate_next +
    + } +
    diff --git a/libs/ui/service-list/src/lib/service-list.component.scss b/libs/ui/service-list/src/lib/service-list.component.scss new file mode 100644 index 00000000..deb0766e --- /dev/null +++ b/libs/ui/service-list/src/lib/service-list.component.scss @@ -0,0 +1,3 @@ +:host ::ng-deep mat-list-item.active { + background-color: var(--color-dark-accent-light); +} diff --git a/libs/ui/service-list/src/lib/service-list.component.ts b/libs/ui/service-list/src/lib/service-list.component.ts new file mode 100644 index 00000000..13a3ec88 --- /dev/null +++ b/libs/ui/service-list/src/lib/service-list.component.ts @@ -0,0 +1,29 @@ +import { ChangeDetectionStrategy, Component, input, output } from '@angular/core'; +import { MatListModule } from '@angular/material/list'; +import { MatIconModule } from '@angular/material/icon'; +import { AbstractControl } from '@angular/forms'; + +export interface ServiceListItem { + name: string; +} + +@Component({ + selector: 'proxy-service-list', + imports: [MatListModule, MatIconModule], + templateUrl: './service-list.component.html', + styleUrls: ['./service-list.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ServiceListComponent { + services = input.required(); + selectedIndex = input(0); + getFormAt = input<(index: number) => AbstractControl | null>(); + serviceSelect = output(); + + isInvalid(i: number): boolean { + const getter = this.getFormAt(); + if (!getter) return false; + const control = getter(i); + return !!(control && i !== this.selectedIndex() && control.dirty && control.touched && control.invalid); + } +} diff --git a/libs/directives/highlight-directive/tsconfig.json b/libs/ui/service-list/tsconfig.json similarity index 100% rename from libs/directives/highlight-directive/tsconfig.json rename to libs/ui/service-list/tsconfig.json diff --git a/libs/directives/open-datepicker-on-focus-directive/tsconfig.lib.json b/libs/ui/service-list/tsconfig.lib.json similarity index 100% rename from libs/directives/open-datepicker-on-focus-directive/tsconfig.lib.json rename to libs/ui/service-list/tsconfig.lib.json diff --git a/libs/directives/auto-focus-directive/tsconfig.spec.json b/libs/ui/service-list/tsconfig.spec.json similarity index 100% rename from libs/directives/auto-focus-directive/tsconfig.spec.json rename to libs/ui/service-list/tsconfig.spec.json diff --git a/libs/ui/sorting-bottom-sheet/.eslintrc.json b/libs/ui/sorting-bottom-sheet/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/sorting-bottom-sheet/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/sorting-bottom-sheet/README.md b/libs/ui/sorting-bottom-sheet/README.md deleted file mode 100644 index e097adc9..00000000 --- a/libs/ui/sorting-bottom-sheet/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-sorting-bottom-sheet - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/sorting-bottom-sheet/project.json b/libs/ui/sorting-bottom-sheet/project.json deleted file mode 100644 index f9189292..00000000 --- a/libs/ui/sorting-bottom-sheet/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-sorting-bottom-sheet", - "projectType": "library", - "sourceRoot": "libs/ui/sorting-bottom-sheet/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/sorting-bottom-sheet/**/*.ts", "libs/ui/sorting-bottom-sheet/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/sorting-bottom-sheet/src/index.ts b/libs/ui/sorting-bottom-sheet/src/index.ts deleted file mode 100644 index e42fecd6..00000000 --- a/libs/ui/sorting-bottom-sheet/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './lib/ui-sorting-bottom-sheet.module'; -export * from './lib/sorting-bottom-sheet/sorting-bottom-sheet.component'; diff --git a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.html b/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.html deleted file mode 100644 index dd0f554d..00000000 --- a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.html +++ /dev/null @@ -1,35 +0,0 @@ -
    -

    Sort By

    - -
    - - - - {{ - sort.columnName - }} - - ASC - DSC - - - - - -
    - -
    diff --git a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.scss b/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.scss deleted file mode 100644 index c4f42e44..00000000 --- a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -.sort-bottom-sheet { - border-radius: 8px 8px 0px; - padding: 8px 0px !important; - .mat-button-toggle-group { - .mat-button-toggle { - .mat-button-toggle-label-content { - line-height: 30px !important; - } - } - } -} diff --git a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.ts b/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.ts deleted file mode 100644 index c17dde0b..00000000 --- a/libs/ui/sorting-bottom-sheet/src/lib/sorting-bottom-sheet/sorting-bottom-sheet.component.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AfterViewInit, Component, Inject } from '@angular/core'; -import { MatBottomSheetRef, MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet'; -interface ISortColumn { - key: string; - columnName: string; - value: 'asc' | 'desc'; -} -@Component({ - selector: 'proxy-sorting-bottom-sheet', - templateUrl: './sorting-bottom-sheet.component.html', - styleUrls: ['./sorting-bottom-sheet.component.scss'], -}) -export class SortingBottomSheetComponent implements AfterViewInit { - public sortColumns = []; - public updatedSortObj: ISortColumn; - - constructor( - private _bottomSheetRef: MatBottomSheetRef, - @Inject(MAT_BOTTOM_SHEET_DATA) public data: any - ) {} - - public ngAfterViewInit(): void { - for (let a of this.data?.columnsName) { - this.sortColumns.push({ - key: a, - columnName: a.replaceAll('_', ' '), - value: this.data?.sortBy === a ? this.data?.sortOrder : null, - }); - } - } - - public applySorting(): void { - this._bottomSheetRef.dismiss(this.updatedSortObj); - } - - public updateSortValue(sort: ISortColumn, index: any): void { - this.sortColumns.forEach((key, i) => { - if (index != i) { - key.value = null; - } - }); - this.updatedSortObj = sort; - } - - public closeSortingBottomSheet(): void { - this._bottomSheetRef.dismiss(null); - } -} diff --git a/libs/ui/sorting-bottom-sheet/src/lib/ui-sorting-bottom-sheet.module.ts b/libs/ui/sorting-bottom-sheet/src/lib/ui-sorting-bottom-sheet.module.ts deleted file mode 100644 index 6cb61ddd..00000000 --- a/libs/ui/sorting-bottom-sheet/src/lib/ui-sorting-bottom-sheet.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatBottomSheetModule } from '@angular/material/bottom-sheet'; -import { MatButtonModule } from '@angular/material/button'; -import { MatButtonToggleModule } from '@angular/material/button-toggle'; -import { MatDividerModule } from '@angular/material/divider'; -import { MatIconModule } from '@angular/material/icon'; -import { MatListModule } from '@angular/material/list'; -import { MatRippleModule } from '@angular/material/core'; -import { FormsModule } from '@angular/forms'; -import { SortingBottomSheetComponent } from './sorting-bottom-sheet/sorting-bottom-sheet.component'; - -@NgModule({ - declarations: [SortingBottomSheetComponent], - imports: [ - MatBottomSheetModule, - MatButtonToggleModule, - MatDividerModule, - MatListModule, - MatRippleModule, - CommonModule, - MatButtonModule, - MatIconModule, - FormsModule, - ], - exports: [SortingBottomSheetComponent], -}) -export class UiSortingBottomSheetModule {} diff --git a/libs/ui/sorting-bottom-sheet/tsconfig.json b/libs/ui/sorting-bottom-sheet/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/sorting-bottom-sheet/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/sorting-bottom-sheet/tsconfig.lib.json b/libs/ui/sorting-bottom-sheet/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/sorting-bottom-sheet/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/template-preview/.eslintrc.json b/libs/ui/template-preview/.eslintrc.json deleted file mode 100644 index d65592ca..00000000 --- a/libs/ui/template-preview/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/template-preview/README.md b/libs/ui/template-preview/README.md deleted file mode 100644 index a8bc4a14..00000000 --- a/libs/ui/template-preview/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-components-template-preview - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/template-preview/project.json b/libs/ui/template-preview/project.json deleted file mode 100644 index 801d2370..00000000 --- a/libs/ui/template-preview/project.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ui-components-template-preview", - "projectType": "library", - "sourceRoot": "libs/ui/template-preview/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/template-preview/src/**/*.ts", "libs/ui/template-preview/src/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/template-preview/src/index.ts b/libs/ui/template-preview/src/index.ts deleted file mode 100644 index b9ef940d..00000000 --- a/libs/ui/template-preview/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-components-template-preview.module'; diff --git a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.html b/libs/ui/template-preview/src/lib/email-preview/email-preview.component.html deleted file mode 100644 index 5e71d941..00000000 --- a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.html +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - -
    -
    -
    diff --git a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.scss b/libs/ui/template-preview/src/lib/email-preview/email-preview.component.scss deleted file mode 100644 index 2529b8f8..00000000 --- a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.scss +++ /dev/null @@ -1,20 +0,0 @@ -.card { - min-width: 280px; - min-height: 150px; - background-color: var(--color-common-silver) !important; - .inner-card { - img { - border-radius: 5px; - width: 180px !important; - } - .email-end { - display: flex; - flex-direction: column; - align-items: flex-start; - } - } - .mat-card-image { - width: 100% !important; - margin: 0 0 10px 0 !important; - } -} diff --git a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.ts b/libs/ui/template-preview/src/lib/email-preview/email-preview.component.ts deleted file mode 100644 index b9f97f65..00000000 --- a/libs/ui/template-preview/src/lib/email-preview/email-preview.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; -import { ReplacePipe } from '@proxy/pipes/replace'; -import { CONTENT_BETWEEEN_HASH_TAG_REGEX } from '@proxy/regex'; - -@Component({ - selector: 'proxy-email-preview', - templateUrl: './email-preview.component.html', - styleUrls: ['./email-preview.component.scss'], -}) -export class EmailPreviewComponent implements OnChanges { - /** Template to be shown */ - @Input() public emailTemplate: string; - /** Mapping of variable with values, to show on the preview */ - @Input() public mappedVariableValues: { [key: string]: string }; - /** Email variable regex for the template to replace the variable with values */ - public emailVarRegex = new RegExp(CONTENT_BETWEEEN_HASH_TAG_REGEX, 'g'); - /** Formatted Email template, contains values in place of variables */ - public formattedEmailTemplate: string; - /** Formatted variable value for template preview, required - * as every microservice has different symbol for template variable - */ - public formattedMappedVariableValues: { [key: string]: string }; - - constructor(private replacePipe: ReplacePipe) {} - - /** - * Formats the mapping variable as per the microservice symbol - * - * @param {SimpleChanges} changes Changes object - * @memberof EmailPreviewComponent - */ - public ngOnChanges(changes: SimpleChanges): void { - if (changes.emailTemplate && changes.emailTemplate.currentValue !== changes.emailTemplate.previousValue) { - if (this.formattedMappedVariableValues) { - this.formattedEmailTemplate = this.replacePipe.transform( - this.replacePipe.transform(changes.emailTemplate.currentValue, '\n', '
    '), - this.formattedMappedVariableValues, - null - ); - } else { - this.formattedEmailTemplate = this.replacePipe.transform( - changes.emailTemplate.currentValue, - '\n', - '
    ' - ); - } - } - if ( - changes.mappedVariableValues && - changes.mappedVariableValues.currentValue !== changes.mappedVariableValues.previousValue - ) { - this.formattedMappedVariableValues = {}; - Object.keys(this.mappedVariableValues).forEach( - (key) => - (this.formattedMappedVariableValues[`##${key}##`] = this.mappedVariableValues[key]?.length - ? this.mappedVariableValues[key] - : `##${key}##`) - ); - } - } - - /** - * Iframe load handler, assigns the passed content to the iframe - * - * @param {*} iframe Iframe instance - * @param {*} data Data to be displayed - * @memberof EmailPreviewComponent - */ - onIframeLoad(iframe: any, data: any): void { - (iframe.contentDocument || iframe.contentWindow).open(); - (iframe.contentDocument || iframe.contentWindow).write(data); - } -} diff --git a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.html b/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.html deleted file mode 100644 index 710e09fa..00000000 --- a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.html +++ /dev/null @@ -1,20 +0,0 @@ - -
    {{ senderId }}
    - - -

    -
    -
    -
    diff --git a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.scss b/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.scss deleted file mode 100644 index 8e541dff..00000000 --- a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.scss +++ /dev/null @@ -1,28 +0,0 @@ -.card { - width: 250px; - overflow-y: auto; - &.no-data { - min-height: 250px; - min-width: 250px; - } - background-color: var(--color-common-silver) !important; - img { - border-radius: 5px; - } - .content { - font-size: var(--font-size-common-14); - } - mat-card-content { - margin-bottom: 0 !important; - } - // .mat-card-image { - // width: 100% !important; - // margin: 0 0 10px 0 !important; - // } -} - -.btn-static { - width: 250px; - background: var(--color-common-silver); - border-radius: var(--border-common-radius); -} diff --git a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.ts b/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.ts deleted file mode 100644 index 861bea27..00000000 --- a/libs/ui/template-preview/src/lib/sms-preview/sms-preview.component.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; -import { CONTENT_BETWEEEN_HASH_TAG_REGEX } from '@proxy/regex'; - -@Component({ - selector: 'proxy-sms-preview', - templateUrl: './sms-preview.component.html', - styleUrls: ['./sms-preview.component.scss'], -}) -export class SmsPreviewComponent implements OnChanges { - /** Sender ID of the SMS template */ - @Input() senderId: string | number; - /** SMS template to be previewed */ - @Input() smsTemplate: string; - /** Mapping of variable with values, to show on the preview */ - @Input() public mappedVariableValues: { [key: string]: string }; - - @Input() public previewWidthClass: string = ''; - - @Input() public maxHeight: string = '300px'; - /** SMS variable regex for the template to replace the variable with values */ - public smsVarRegex = new RegExp(CONTENT_BETWEEEN_HASH_TAG_REGEX, 'g'); - /** Formatted variable value for template preview, required - * as every microservice has different symbol for template variable - */ - public formattedMappedVariableValues: { [key: string]: string }; - - /** - * Formats the mapping variable as per the microservice symbol - * - * @param {SimpleChanges} changes Changes object - * @memberof SmsPreviewComponent - */ - public ngOnChanges(changes: SimpleChanges): void { - if ( - changes.mappedVariableValues && - changes.mappedVariableValues.currentValue !== changes.mappedVariableValues.previousValue - ) { - this.formattedMappedVariableValues = {}; - Object.keys(this.mappedVariableValues).forEach( - (key) => - (this.formattedMappedVariableValues[`##${key}##`] = this.mappedVariableValues[key]?.length - ? this.mappedVariableValues[key] - : `##${key}##`) - ); - } - } -} diff --git a/libs/ui/template-preview/src/lib/ui-components-template-preview.module.ts b/libs/ui/template-preview/src/lib/ui-components-template-preview.module.ts deleted file mode 100644 index 45bffabd..00000000 --- a/libs/ui/template-preview/src/lib/ui-components-template-preview.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { MatCardModule } from '@angular/material/card'; -import { MatButtonModule } from '@angular/material/button'; -import { SmsPreviewComponent } from './sms-preview/sms-preview.component'; -import { EmailPreviewComponent } from './email-preview/email-preview.component'; -import { WhatsappPreviewComponent } from './whatsapp-preview/whatsapp-preview.component'; -import { PipesReplaceModule } from '@proxy/pipes/replace'; - -@NgModule({ - imports: [CommonModule, MatCardModule, MatButtonModule, PipesReplaceModule], - declarations: [SmsPreviewComponent, EmailPreviewComponent, WhatsappPreviewComponent], - exports: [SmsPreviewComponent, EmailPreviewComponent, WhatsappPreviewComponent], -}) -export class UiComponentsTemplatePreviewModule {} diff --git a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.html b/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.html deleted file mode 100644 index 15e960d7..00000000 --- a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.html +++ /dev/null @@ -1,87 +0,0 @@ - - - -
    -
    - -
    - {{ - content.format === templateHeaderFormat.Image - ? 'image' - : content.format === templateHeaderFormat.Video - ? 'play_circle' - : content.format === templateHeaderFormat.Document - ? 'text_snippet' - : '' - }} -
    -

    -

    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    diff --git a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.scss b/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.scss deleted file mode 100644 index 6defabae..00000000 --- a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.scss +++ /dev/null @@ -1,54 +0,0 @@ -.card { - width: 250px; - min-height: 60px; - background-color: var(--color-whatsApp-primary-light) !important; - &.theme-raised { - background-color: var(--color-common-white) !important; - box-shadow: 0px 1px 1px rgb(0 0 0 / 14%), 0px 2px 1px rgb(0 0 0 / 12%), 0px 1px 3px rgb(0 0 0 / 20%) !important; - border-top-left-radius: 0px !important; - // border-top-right-radius: 0px !important; - } - .inner-card { - // border-radius: var(--border-common-radius); - img { - height: auto; - max-width: 100%; - } - .card-media { - background-color: var(--color-common-silver); - border-radius: var(--border-common-radius); - width: 100%; - height: 120px; - mat-icon { - width: 48px; - height: 48px; - font-size: 48px; - color: var(--color-common-grey); - } - } - } -} -.btn-container { - width: 250px; - display: grid; - grid-gap: 8px; - grid-template-columns: repeat(2, 1fr); - margin-top: 8px; - .btn-static { - background: var(--color-common-silver); - border-radius: var(--border-common-radius); - text-align: center; - &:nth-child(2n + 1) { - &:last-child { - grid-column: 1 / -1; - } - } - } - &.theme-raised { - .btn-static { - font-size: 12px !important; - background-color: var(--color-common-white) !important; - box-shadow: 0px 1px 1px rgb(0 0 0 / 14%), 0px 2px 1px rgb(0 0 0 / 12%), 0px 1px 3px rgb(0 0 0 / 20%) !important; - } - } -} diff --git a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.ts b/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.ts deleted file mode 100644 index 0f7dfea2..00000000 --- a/libs/ui/template-preview/src/lib/whatsapp-preview/whatsapp-preview.component.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; -import { - IWhatsappTemplate, - IWhatsappTemplateButtonFormat, - IWhatsappTemplateHeaderFormat, - IWhatsappTemplateMessageType, -} from '@proxy/models/whatsapp-models'; -import { CONTENT_BETWEEEN_CURLY_BRACKETS_REGEX } from '@proxy/regex'; - -@Component({ - selector: 'proxy-whatsapp-preview', - templateUrl: './whatsapp-preview.component.html', - styleUrls: ['./whatsapp-preview.component.scss'], -}) -export class WhatsappPreviewComponent implements OnChanges { - /** Whatsapp template data */ - @Input() public whatsappTemplate: Array = []; - /** Placeholder image for the template */ - @Input() public imagePlaceholder: string; - /** Placeholder image for the template */ - @Input() public videoPlaceholder: string; - /** Placeholder image for the template */ - @Input() public documentPlaceholder: string; - /** Whatsapp variable regex for the template to replace the variable with values */ - @Input() public mappedVariableValues: { [key: string]: string }; - /** Card and button theme changes */ - @Input() public cardThemeClass: string; - /** Template message types */ - public templateMessageType = IWhatsappTemplateMessageType; - /** Template header types */ - public templateHeaderFormat = IWhatsappTemplateHeaderFormat; - /** Template button types */ - public templateButtonFormat = IWhatsappTemplateButtonFormat; - /** Whatsapp variable regex for the template to replace the variable with values */ - public whatsappVarRegex = new RegExp(CONTENT_BETWEEEN_CURLY_BRACKETS_REGEX, 'g'); - /** Formatted variable value for template preview, required - * as every microservice has different symbol for template variable - */ - public formattedMappedVariableValues: { [key: string]: string }; - - /** - * Formats the mapping variable as per the microservice symbol - * - * @param {SimpleChanges} changes Changes object - * @memberof WhatsappPreviewComponent - */ - public ngOnChanges(changes: SimpleChanges): void { - if ( - changes.mappedVariableValues && - changes.mappedVariableValues.currentValue !== changes.mappedVariableValues.previousValue && - this.mappedVariableValues - ) { - this.formattedMappedVariableValues = {}; - Object.keys(this.mappedVariableValues).forEach( - (key) => - (this.formattedMappedVariableValues[`{{${key}}}`] = this.mappedVariableValues[key]?.length - ? this.mappedVariableValues[key] - : `{{${key}}}`) - ); - } - } -} diff --git a/libs/ui/template-preview/tsconfig.json b/libs/ui/template-preview/tsconfig.json deleted file mode 100644 index 96d2b5e0..00000000 --- a/libs/ui/template-preview/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ] -} diff --git a/libs/ui/template-preview/tsconfig.lib.json b/libs/ui/template-preview/tsconfig.lib.json deleted file mode 100644 index 3f2d9700..00000000 --- a/libs/ui/template-preview/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/time-picker/.eslintrc.json b/libs/ui/time-picker/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/time-picker/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/time-picker/README.md b/libs/ui/time-picker/README.md deleted file mode 100644 index 03b8d25c..00000000 --- a/libs/ui/time-picker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-time-picker - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/time-picker/project.json b/libs/ui/time-picker/project.json deleted file mode 100644 index 145bafe4..00000000 --- a/libs/ui/time-picker/project.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "ui-time-picker", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/time-picker/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/time-picker/**/*.ts", "libs/ui/time-picker/**/*.html"] - } - } - }, - "tags": [] -} diff --git a/libs/ui/time-picker/src/index.ts b/libs/ui/time-picker/src/index.ts deleted file mode 100644 index 7ff4e504..00000000 --- a/libs/ui/time-picker/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-time-picker.module'; diff --git a/libs/ui/time-picker/src/lib/time-picker/time-picker.component.html b/libs/ui/time-picker/src/lib/time-picker/time-picker.component.html deleted file mode 100644 index 9a9859d3..00000000 --- a/libs/ui/time-picker/src/lib/time-picker/time-picker.component.html +++ /dev/null @@ -1,56 +0,0 @@ -
    - - {{ label }} - -
    - - -
    - - Field is required - Enter a valid time - -
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    diff --git a/libs/ui/time-picker/src/lib/time-picker/time-picker.component.scss b/libs/ui/time-picker/src/lib/time-picker/time-picker.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/libs/ui/time-picker/src/lib/time-picker/time-picker.component.ts b/libs/ui/time-picker/src/lib/time-picker/time-picker.component.ts deleted file mode 100644 index fd6852bf..00000000 --- a/libs/ui/time-picker/src/lib/time-picker/time-picker.component.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { takeUntil } from 'rxjs/operators'; -import { UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { BaseComponent } from '@proxy/ui/base-component'; -import { Component, Input, OnInit, OnDestroy } from '@angular/core'; -import * as dayjs from 'dayjs'; - -@Component({ - selector: 'proxy-time-picker', - templateUrl: './time-picker.component.html', - styleUrls: ['./time-picker.component.scss'], -}) -export class TimePickerComponent extends BaseComponent implements OnInit, OnDestroy { - @Input() appearance = 'outline'; - @Input() label = 'Select Time'; - @Input() timeFormControl: UntypedFormControl; - @Input() showSeconds = false; - @Input() enableMeridian = true; - @Input() showSpinners = true; - @Input() disabled = false; - public defaultTime: string[]; - public timeGroup = new UntypedFormGroup({ - time: new UntypedFormControl(null), - }); - constructor() { - super(); - } - - public ngOnInit(): void { - const defaultTime = this.timeFormControl?.value?.split(':'); - this.defaultTime = - defaultTime?.length > 1 - ? [defaultTime[0], defaultTime[1], this.showSeconds ? defaultTime[2] ?? '0' : '0'] - : []; - if (this.enableMeridian) { - this.setTimeWithMeridian(this.timeFormControl?.value); - this.timeFormControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((res: string) => { - this.setTimeWithMeridian(res); - }); - } - } - - public ngOnDestroy(): void { - super.ngOnDestroy(); - } - - public menuOpened() { - document - .querySelector('.custom-time-picker-menu.mat-menu-panel') - ?.setAttribute( - 'style', - 'max-width: none; margin-top : -' + - getComputedStyle(document.querySelector('.custom-time-picker-form .mat-form-field-wrapper'))[ - 'padding-bottom' - ] - ); - } - - public setTime() { - this.timeFormControl.setValue(dayjs(this.timeGroup.value.time).format(this.timeFormat)); - this.timeFormControl.markAsDirty(); - } - - public clearField(): void { - this.timeFormControl?.patchValue(''); - this.timeFormControl.markAsDirty(); - } - - public setTimeWithMeridian(time: string) { - if (time && time.split(' ').length === 1) { - this.timeFormControl.setValue(dayjs(time, 'hh:mm').format(this.timeFormat)); - this.timeFormControl.markAsDirty(); - } - } - - public get timeFormat(): string { - return ( - (this.enableMeridian ? 'hh' : 'HH') + - ':mm' + - (this.showSeconds ? ':ss' : '') + - (this.enableMeridian ? ' A' : '') - ); - } -} diff --git a/libs/ui/time-picker/src/lib/ui-time-picker.module.ts b/libs/ui/time-picker/src/lib/ui-time-picker.module.ts deleted file mode 100644 index 206d7dab..00000000 --- a/libs/ui/time-picker/src/lib/ui-time-picker.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { MatButtonModule } from '@angular/material/button'; -import { MatInputModule } from '@angular/material/input'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { NgxMatTimepickerModule } from '@angular-material-components/datetime-picker'; -import { MatIconModule } from '@angular/material/icon'; -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { TimePickerComponent } from './time-picker/time-picker.component'; -import { ReactiveFormsModule } from '@angular/forms'; - -@NgModule({ - imports: [ - CommonModule, - MatIconModule, - NgxMatTimepickerModule, - MatFormFieldModule, - ReactiveFormsModule, - MatMenuModule, - MatInputModule, - MatButtonModule, - ], - declarations: [TimePickerComponent], - exports: [TimePickerComponent], -}) -export class UiTimePickerModule {} diff --git a/libs/ui/time-picker/tsconfig.json b/libs/ui/time-picker/tsconfig.json deleted file mode 100644 index 06f1b7d3..00000000 --- a/libs/ui/time-picker/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/time-picker/tsconfig.lib.json b/libs/ui/time-picker/tsconfig.lib.json deleted file mode 100644 index f628a05d..00000000 --- a/libs/ui/time-picker/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/tts-recording/.browserslistrc b/libs/ui/tts-recording/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/libs/ui/tts-recording/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/libs/ui/tts-recording/.eslintrc.json b/libs/ui/tts-recording/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/tts-recording/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/tts-recording/README.md b/libs/ui/tts-recording/README.md deleted file mode 100644 index 47bfc7a1..00000000 --- a/libs/ui/tts-recording/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-tts-recording - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/tts-recording/jest.config.ts b/libs/ui/tts-recording/jest.config.ts deleted file mode 100644 index 59b1fc54..00000000 --- a/libs/ui/tts-recording/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'ui-tts-recording', - preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - coverageDirectory: '../../../coverage/libs/ui/tts-recording', -}; diff --git a/libs/ui/tts-recording/project.json b/libs/ui/tts-recording/project.json deleted file mode 100644 index 177a120b..00000000 --- a/libs/ui/tts-recording/project.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "ui-tts-recording", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/tts-recording/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/tts-recording/src/**/*.ts", "libs/ui/tts-recording/src/**/*.html"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/tts-recording"], - "options": { - "jestConfig": "libs/ui/tts-recording/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/tts-recording/src/index.ts b/libs/ui/tts-recording/src/index.ts deleted file mode 100644 index 64533e72..00000000 --- a/libs/ui/tts-recording/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-tts-recording.module'; diff --git a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.html b/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.html deleted file mode 100644 index 0ada84ba..00000000 --- a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.html +++ /dev/null @@ -1,75 +0,0 @@ -
    -
    -
    -
    - - File Name - - Invalid Value - -
    - -
    - - Accent - - - {{ - accent.key - }} - - - -
    -
    -
    - - Content - - -
    - - -
    -
    diff --git a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.scss b/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.scss deleted file mode 100644 index 1b19a4c9..00000000 --- a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.scss +++ /dev/null @@ -1,221 +0,0 @@ -.manage-audio-modal { - .modal-body { - padding: 0; - overflow: hidden; - overflow-y: auto; - background-color: #fff; - } - - .drop-box { - margin: 10px auto; - padding: 10px 0; - cursor: pointer; - } - - .drop-box { - background: #fff; - border: 2px dashed #e6e6e6; - color: #b5b5b5; - text-align: center; - } - - .dragover { - border: 2px dashed blue; - } - - .invalid-drag { - border: 5px dashed red; - } -} - -.loader, -.loader:before, -.loader:after { - background: #87ee07; - -webkit-animation: load1 1s infinite ease-in-out; - animation: load1 1s infinite ease-in-out; - width: 5px; - height: 10px; -} - -.loader { - color: #87ee07; - text-indent: -9999em; - margin: 10px auto; - position: relative; - font-size: 11px; - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); - -webkit-animation-delay: -0.16s; - animation-delay: -0.16s; -} - -.loader:before, -.loader:after { - position: absolute; - top: 0; - content: ''; -} - -.loader:before { - left: -1.5em; - -webkit-animation-delay: -0.32s; - animation-delay: -0.32s; -} - -.loader:after { - left: 1.5em; -} - -@-webkit-keyframes load1 { - 0%, - 80%, - 100% { - box-shadow: 0 0; - height: 4em; - } - 40% { - box-shadow: 0 -2em; - height: 5em; - } -} - -@keyframes load1 { - 0%, - 80%, - 100% { - box-shadow: 0 0; - height: 4em; - } - 40% { - box-shadow: 0 -2em; - height: 5em; - } -} - -.control-btn a { - color: #333333; - margin: 0 5px; -} - -.browser-recording { - i { - font-size: 16px; - color: #b5b5b5; - border-radius: 5px; - border: 1px solid #b5b5b5; - align-self: center; - margin-right: 5px; - } - - .no-border { - border: 0; - } - - a { - color: #434343; - font-size: 12px; - display: flex; - } -} - -.audio { - div.audio-controls { - display: flex; - align-items: center; - color: #666666; - - i { - color: #b5b5b5; - font-size: 18px; - } - - span.filename { - flex: 0.5; - } - } - .nav-tabs { - border-bottom: 2px solid #c6c6c6; - } - - .p-25 { - padding: 25px; - } - - .file-list { - background-color: #fafafa; - padding: 25px 10px; - - ul { - overflow: scroll; - max-height: 200px; - } - - li.list-group-item { - background-color: #fafafa; - margin-bottom: 0; - border: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.125); - } - } - - .sub-heading { - font-size: 16px; - font-weight: bold; - } - - .nav-link { - padding: 0.5rem 0.5rem; - margin: 0 1rem; - - &.active { - color: #005485; - font-weight: bold; - background-color: initial; - border-color: #fff; - border-bottom: 2px solid #005485; - } - } -} - -.slider { - -webkit-appearance: none; - height: 3px; - border-radius: 5px; - background: #d3d3d3; - outline: none; - opacity: 0.7; - -webkit-transition: 0.2s; - transition: opacity 0.2s; -} - -.slider:hover { - opacity: 1; -} - -.slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 10px; - height: 10px; - border-radius: 50%; - background: #005485; - cursor: pointer; -} - -.slider::-moz-range-thumb { - width: 10px; - height: 10px; - border-radius: 50%; - background: #005485; - cursor: pointer; -} -.modal label { - color: #465165 !important; -} -.form-group .form-control.tts-content { - height: auto !important; - resize: none; - cursor: auto; -} diff --git a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.ts b/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.ts deleted file mode 100644 index 76a30818..00000000 --- a/libs/ui/tts-recording/src/lib/tts-recording/tts-recording.component.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; -import { PlayerComponent } from '@proxy/ui/player'; -import { Observable } from 'rxjs'; - -@Component({ - selector: 'proxy-tts-recording', - templateUrl: './tts-recording.component.html', - styleUrls: ['./tts-recording.component.scss'], -}) -export class TtsRecordingComponent { - /** Stores the accent dropdown options */ - public accents = { - Arabic: 'ar', - Bengali: 'bn', - German: 'de', - 'English (India)': 'en-in', - 'English (UK)': 'en-uk', - 'English (US)': 'en-us', - English: 'en', - 'Spanish (Spain)': 'es-es', - French: 'fr', - Hindi: 'hi', - Indonesian: 'id', - Italian: 'it', - Japanese: 'ja', - Korean: 'ko', - Latin: 'la', - Malayalam: 'ml', - Marathi: 'mr', - 'Myanmar (Burmese)': 'my', - Nepali: 'ne', - Russian: 'ru', - Tamil: 'ta', - Telugu: 'te', - Thai: 'th', - }; - - /** Buffer function for API call */ - @Input() getBufferFunc: (args: any) => Blob | Observable; - /** Stores the current status of TTS upload progress */ - @Input() public isTTSUploadFileInProgress: boolean; - /** Stores the TTS configuration object */ - @Input() public ttsObj: any = { - accent: 'hindi', - }; - - /** Save TTS event */ - @Output() ttsSave: EventEmitter = new EventEmitter(); - - /** Stores the instance of audio player */ - @ViewChild('audio', { static: true }) public audio: PlayerComponent; - - /** - * Prepares the request object for TTS recording - * - * @memberof TtsRecordingComponent - */ - getBuffer = () => { - let textToConvert = this.ttsObj.textToConvert; - if (textToConvert) { - let match; - const regex = /#(\d+)#/gm; - while ((match = regex.exec(textToConvert))) { - textToConvert = textToConvert.replace(match[0], `${match[1]}`); - } - } - return this.getBufferFunc({ ...this.ttsObj, textToConvert }); - }; - - /** - * Deletes the uploaded file - * - * @param {boolean} [clear] True, if text needs to be clear along with audio - * @memberof TtsRecordingComponent - */ - deleteAudioFile(clear?: boolean) { - if (this.audio) { - this.audio.clearAudio(); - } - if (clear) { - this.ttsObj = { ...this.ttsObj, textToConvert: '' }; - } - } - - /** - * Save TTS handler - * - * @memberof TtsRecordingComponent - */ - saveTts() { - this.isTTSUploadFileInProgress = true; - let textToConvert = this.ttsObj.textToConvert; - if (textToConvert) { - let match; - const regex = /#(\d+)#/gm; - while ((match = regex.exec(textToConvert))) { - textToConvert = textToConvert.replace(match[0], `${match[1]}`); - } - } - this.ttsSave.emit({ ...this.ttsObj, textToConvert }); - } -} diff --git a/libs/ui/tts-recording/src/lib/ui-tts-recording.module.ts b/libs/ui/tts-recording/src/lib/ui-tts-recording.module.ts deleted file mode 100644 index 72a65ddb..00000000 --- a/libs/ui/tts-recording/src/lib/ui-tts-recording.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { TtsRecordingComponent } from './tts-recording/tts-recording.component'; -import { UiPlayerModule } from '@proxy/ui/player'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { FormsModule } from '@angular/forms'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { MatButtonModule } from '@angular/material/button'; -import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; -import { DirectivesAutoSelectDropdownModule } from '@proxy/directives/auto-select-dropdown'; - -@NgModule({ - imports: [ - CommonModule, - UiPlayerModule, - MatFormFieldModule, - FormsModule, - MatInputModule, - MatSelectModule, - MatButtonModule, - MatProgressSpinnerModule, - DirectivesAutoSelectDropdownModule, - ], - declarations: [TtsRecordingComponent], - exports: [TtsRecordingComponent], -}) -export class UiTtsRecordingModule {} diff --git a/libs/ui/tts-recording/tsconfig.json b/libs/ui/tts-recording/tsconfig.json deleted file mode 100644 index fbba9f7d..00000000 --- a/libs/ui/tts-recording/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "target": "es2020" - } -} diff --git a/libs/ui/tts-recording/tsconfig.lib.json b/libs/ui/tts-recording/tsconfig.lib.json deleted file mode 100644 index 207c41bf..00000000 --- a/libs/ui/tts-recording/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/tts-recording/tsconfig.spec.json b/libs/ui/tts-recording/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/tts-recording/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/variable-input/.browserslistrc b/libs/ui/variable-input/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/libs/ui/variable-input/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. -# For additional information regarding the format and rule options, please see: -# https://github.com/browserslist/browserslist#queries - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/libs/ui/variable-input/.eslintrc.json b/libs/ui/variable-input/.eslintrc.json deleted file mode 100644 index e774b7d2..00000000 --- a/libs/ui/variable-input/.eslintrc.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "proxy", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "proxy", - "style": "kebab-case" - } - ] - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@nrwl/nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/ui/variable-input/README.md b/libs/ui/variable-input/README.md deleted file mode 100644 index 673d0057..00000000 --- a/libs/ui/variable-input/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ui-variable-input - -This library was generated with [Nx](https://nx.dev). diff --git a/libs/ui/variable-input/jest.config.ts b/libs/ui/variable-input/jest.config.ts deleted file mode 100644 index f58e6f47..00000000 --- a/libs/ui/variable-input/jest.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'ui-variable-input', - preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - coverageDirectory: '../../../coverage/libs/ui/variable-input', -}; diff --git a/libs/ui/variable-input/project.json b/libs/ui/variable-input/project.json deleted file mode 100644 index ba23f02b..00000000 --- a/libs/ui/variable-input/project.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "ui-variable-input", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "projectType": "library", - "sourceRoot": "libs/ui/variable-input/src", - "prefix": "proxy", - "targets": { - "lint": { - "executor": "@nrwl/linter:eslint", - "options": { - "lintFilePatterns": ["libs/ui/variable-input/src/**/*.ts", "libs/ui/variable-input/src/**/*.html"] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["{workspaceRoot}/coverage/libs/ui/variable-input"], - "options": { - "jestConfig": "libs/ui/variable-input/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": ["scope:shared", "type:lib"] -} diff --git a/libs/ui/variable-input/src/index.ts b/libs/ui/variable-input/src/index.ts deleted file mode 100644 index 001297f0..00000000 --- a/libs/ui/variable-input/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './lib/ui-variable-input.module'; diff --git a/libs/ui/variable-input/src/lib/input/input.component.html b/libs/ui/variable-input/src/lib/input/input.component.html deleted file mode 100644 index 432fef77..00000000 --- a/libs/ui/variable-input/src/lib/input/input.component.html +++ /dev/null @@ -1,8 +0,0 @@ - diff --git a/libs/ui/variable-input/src/lib/input/input.component.scss b/libs/ui/variable-input/src/lib/input/input.component.scss deleted file mode 100644 index f234e777..00000000 --- a/libs/ui/variable-input/src/lib/input/input.component.scss +++ /dev/null @@ -1,4 +0,0 @@ -:host::ng-deep .var-text { - color: var(--color-common-primary); - font-style: italic; -} diff --git a/libs/ui/variable-input/src/lib/input/input.component.ts b/libs/ui/variable-input/src/lib/input/input.component.ts deleted file mode 100644 index 478562a0..00000000 --- a/libs/ui/variable-input/src/lib/input/input.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, forwardRef, Input } from '@angular/core'; -import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; - -@Component({ - selector: 'proxy-input', - templateUrl: './input.component.html', - styleUrls: ['./input.component.scss'], - providers: [ - { - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => InputComponent), - multi: true, - }, - ], -}) -export class InputComponent implements ControlValueAccessor { - @Input() public placeholder = ''; - @Input() public disabled = false; - @Input() public format = true; - public value: any; - public fileNameHasVar = false; - - onValueChange(val: string) { - this.fileNameHasVar = /^\$\w+/g.test(val); - this.onChange(val); - } - - //////////// interface ControlValueAccessor //////////// - public onChange = (v: any) => v; - - public onTouched: () => void = () => null; - - public writeValue(obj: any): void { - if (obj) { - this.value = obj; - this.fileNameHasVar = /^\$\w+/g.test(obj); - } - } - - public registerOnChange(fn: (_: any) => any): void { - this.onChange = fn; - } - - public registerOnTouched(fn: () => any): void { - this.onTouched = fn; - } - - public setDisabledState(isDisabled: boolean): void { - this.disabled = isDisabled; - } -} diff --git a/libs/ui/variable-input/src/lib/textarea/textarea.component.html b/libs/ui/variable-input/src/lib/textarea/textarea.component.html deleted file mode 100644 index 83cce402..00000000 --- a/libs/ui/variable-input/src/lib/textarea/textarea.component.html +++ /dev/null @@ -1,23 +0,0 @@ - - {{ label }} * - - - - {{ label }} is required. - Invalid Json Value. - Invalid Value. - - Only Basic ASCII Latin characters are allowed - - - {{ hint }} - diff --git a/libs/ui/variable-input/src/lib/textarea/textarea.component.scss b/libs/ui/variable-input/src/lib/textarea/textarea.component.scss deleted file mode 100644 index 9ae36359..00000000 --- a/libs/ui/variable-input/src/lib/textarea/textarea.component.scss +++ /dev/null @@ -1,15 +0,0 @@ -:host::ng-deep .highlight-text { - background-color: var(--color-common-primary-light-hover); -} - -:host::ng-deep .text-input-highlight-container .text-highlight-element { - color: transparent; - box-shadow: none; - border: 1px solid var(--color-common-border); - border-radius: 2px; - padding-top: 5px !important; -} - -textarea { - resize: none; -} diff --git a/libs/ui/variable-input/src/lib/textarea/textarea.component.ts b/libs/ui/variable-input/src/lib/textarea/textarea.component.ts deleted file mode 100644 index ed08cc42..00000000 --- a/libs/ui/variable-input/src/lib/textarea/textarea.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { HighlightTag } from 'angular-text-input-highlight'; -import { MentionConfig } from '@proxy/ui/angular-mentions'; -import { MatFormFieldAppearance } from '@angular/material/form-field'; - -@Component({ - selector: 'proxy-textarea', - templateUrl: './textarea.component.html', - styleUrls: ['./textarea.component.scss'], -}) -export class TextareaComponent implements OnChanges { - @Input() public rows = '4'; - @Input() public label = 'Textarea'; - @Input() public placeholder = ''; - @Input() public hint = ''; - @Input() public formFieldAppearance: MatFormFieldAppearance = 'outline'; - @Input() public textareaFormControl: FormControl; - @Input() public variableTriggerChar: string = '#'; - @Input() public showSuggestions: boolean = false; - @Input() public showRequiredAsterisk = false; - - // Provide either higlightRegex or fixedHighlightList - @Input() public higlightRegex: string; - @Input() public fixedHighlightList: string[] = null; - - @Input() public checkValue = false; - @Output() public checkValueChange = new EventEmitter(); - - public tags: HighlightTag[] = []; - public mentionConfig: MentionConfig = { mentions: [] }; - - constructor(private _cdr: ChangeDetectorRef) {} - - ngOnChanges(changes: SimpleChanges): void { - if (changes?.fixedHighlightList?.currentValue?.length) { - this.higlightRegex = '\\B' + this.variableTriggerChar + `(${this.fixedHighlightList.join('|')})` + '\\b'; - if (this.showSuggestions) { - this.mentionConfig = { - mentions: [ - { - items: this.fixedHighlightList, - triggerChar: this.variableTriggerChar, - allowSpace: false, - }, - ], - }; - } - } - if (changes?.checkValue?.currentValue) { - this.onValueChange(); - this.checkValueChange.emit(false); - } - } - - onValueChange() { - if (this.higlightRegex) { - this.tags = []; - const vars = new RegExp(this.higlightRegex, 'gm'); - let match; - while ((match = vars.exec(this.textareaFormControl?.value ?? ''))) { - this.tags.push({ - indices: { - start: match.index, - end: match.index + match[0].length, - }, - cssClass: 'highlight-text', - }); - } - this._cdr.detectChanges(); - } - } -} diff --git a/libs/ui/variable-input/src/lib/ui-variable-input.module.ts b/libs/ui/variable-input/src/lib/ui-variable-input.module.ts deleted file mode 100644 index f04508ee..00000000 --- a/libs/ui/variable-input/src/lib/ui-variable-input.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { InputComponent } from './input/input.component'; -import { TextareaComponent } from './textarea/textarea.component'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { TextInputHighlightModule } from 'angular-text-input-highlight'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { UiAngularMentionsModule } from '@proxy/ui/angular-mentions'; - -@NgModule({ - imports: [ - CommonModule, - FormsModule, - TextInputHighlightModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - UiAngularMentionsModule, - ], - declarations: [InputComponent, TextareaComponent], - exports: [InputComponent, TextareaComponent], -}) -export class UiVariableInputModule {} diff --git a/libs/ui/variable-input/tsconfig.json b/libs/ui/variable-input/tsconfig.json deleted file mode 100644 index 35380110..00000000 --- a/libs/ui/variable-input/tsconfig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "target": "es2020" - }, - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/libs/ui/variable-input/tsconfig.lib.json b/libs/ui/variable-input/tsconfig.lib.json deleted file mode 100644 index 207c41bf..00000000 --- a/libs/ui/variable-input/tsconfig.lib.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": ["jest.config.ts"], - "include": ["**/*.ts"] -} diff --git a/libs/ui/variable-input/tsconfig.spec.json b/libs/ui/variable-input/tsconfig.spec.json deleted file mode 100644 index 40dd3f20..00000000 --- a/libs/ui/variable-input/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["**/*.test.ts", "**/*.spec.ts", "**/*.d.ts", "jest.config.ts"] -} diff --git a/libs/ui/virtual-scroll/jest.config.ts b/libs/ui/virtual-scroll/jest.config.ts index 68ae3be8..f6027e14 100644 --- a/libs/ui/virtual-scroll/jest.config.ts +++ b/libs/ui/virtual-scroll/jest.config.ts @@ -2,10 +2,6 @@ export default { displayName: 'ui-virtual-scroll', preset: '../../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, + globals: {}, coverageDirectory: '../../../coverage/libs/ui/virtual-scroll', }; diff --git a/libs/ui/virtual-scroll/project.json b/libs/ui/virtual-scroll/project.json index 8bcfda65..2ab6cdf2 100644 --- a/libs/ui/virtual-scroll/project.json +++ b/libs/ui/virtual-scroll/project.json @@ -6,13 +6,13 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/ui/virtual-scroll/src/**/*.ts", "libs/ui/virtual-scroll/src/**/*.html"] } }, "test": { - "executor": "@nrwl/jest:jest", + "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/libs/ui/virtual-scroll"], "options": { "tsConfig": "libs/ui/virtual-scroll/tsconfig.lib.json", diff --git a/libs/ui/virtual-scroll/src/index.ts b/libs/ui/virtual-scroll/src/index.ts index c82e2fab..b03607fd 100644 --- a/libs/ui/virtual-scroll/src/index.ts +++ b/libs/ui/virtual-scroll/src/index.ts @@ -1 +1 @@ -export * from './lib/ui-virtual-scroll.module'; +export * from './lib/cdk-scroll/cdk-scroll.component'; diff --git a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.html b/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.html index 87a441d5..9f92f2a9 100644 --- a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.html +++ b/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.html @@ -1,3 +1,3 @@ -
    +
    diff --git a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.ts b/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.ts index bb0b8077..613ba09d 100644 --- a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.ts +++ b/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.component.ts @@ -1,23 +1,24 @@ -import { CdkScrollable, ScrollDispatcher } from '@angular/cdk/scrolling'; -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; +import { CdkScrollable, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, Component, OnInit, ViewChild, input, output, inject } from '@angular/core'; import { Subject } from 'rxjs'; import { debounceTime, takeUntil } from 'rxjs/operators'; import { DEBOUNCE_TIME } from '@proxy/constant'; @Component({ selector: 'proxy-cdk-scroll', + imports: [ScrollingModule], templateUrl: './cdk-scroll.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, }) export class CDKScrollComponent implements OnInit { @ViewChild(CdkScrollable) public scrollableWrapper: CdkScrollable | undefined; /** Scrollable element ID, provided to avoid multiple event triggering when * same page has multiple instances of proxy-cdk-scroll component */ - @Input() public scrollableElementId = 'scrollableWrapper'; - @Output() public fetchNextPage: EventEmitter = new EventEmitter(); + public scrollableElementId = input('scrollableWrapper'); + public fetchNextPage = output(); private destroy$: Subject = new Subject(); - - constructor(private sd: ScrollDispatcher) {} + private sd = inject(ScrollDispatcher); public ngOnInit(): void { this.sd @@ -27,7 +28,7 @@ export class CDKScrollComponent implements OnInit { if ( res && (res.getElementRef().nativeElement.id === 'scrollableWrapper' || - res.getElementRef().nativeElement.id === this.scrollableElementId) && + res.getElementRef().nativeElement.id === this.scrollableElementId()) && res.measureScrollOffset('bottom') <= 30 && res.measureScrollOffset('top') ) { diff --git a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.module.ts b/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.module.ts deleted file mode 100755 index 7d2a8d33..00000000 --- a/libs/ui/virtual-scroll/src/lib/cdk-scroll/cdk-scroll.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CDKScrollComponent } from './cdk-scroll.component'; -import { ScrollingModule } from '@angular/cdk/scrolling'; - -@NgModule({ - declarations: [CDKScrollComponent], - imports: [CommonModule, ScrollingModule], - exports: [CDKScrollComponent], -}) -export class CDKScrollModule {} diff --git a/libs/ui/virtual-scroll/src/lib/ui-virtual-scroll.module.ts b/libs/ui/virtual-scroll/src/lib/ui-virtual-scroll.module.ts deleted file mode 100644 index 9b12a5e0..00000000 --- a/libs/ui/virtual-scroll/src/lib/ui-virtual-scroll.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CDKScrollModule } from './cdk-scroll/cdk-scroll.module'; - -@NgModule({ - imports: [CommonModule, CDKScrollModule], - exports: [CDKScrollModule], -}) -export class UiVirtualScrollModule {} diff --git a/libs/ui/virtual-scroll/tsconfig.lib.json b/libs/ui/virtual-scroll/tsconfig.lib.json index a89d0c95..b7f1cf56 100644 --- a/libs/ui/virtual-scroll/tsconfig.lib.json +++ b/libs/ui/virtual-scroll/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../../dist/out-tsc", - "target": "es2015", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["jest.config.ts"], "include": ["**/*.ts"] diff --git a/libs/urls/create-project-urls/project.json b/libs/urls/create-project-urls/project.json index cbf09ea4..a030cb16 100644 --- a/libs/urls/create-project-urls/project.json +++ b/libs/urls/create-project-urls/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/urls/create-project-urls/**/*.ts", "libs/urls/create-project-urls/**/*.html"] } diff --git a/libs/urls/features-url/project.json b/libs/urls/features-url/project.json index 0b317bda..2203b517 100644 --- a/libs/urls/features-url/project.json +++ b/libs/urls/features-url/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/urls/features-url/**/*.ts", "libs/urls/features-url/**/*.html"] } diff --git a/libs/urls/logs-urls/project.json b/libs/urls/logs-urls/project.json index 23266eb2..c9e60d7c 100644 --- a/libs/urls/logs-urls/project.json +++ b/libs/urls/logs-urls/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/urls/logs-urls/**/*.ts", "libs/urls/logs-urls/**/*.html"] } diff --git a/libs/urls/root-urls/project.json b/libs/urls/root-urls/project.json index b023a632..55ccf74e 100644 --- a/libs/urls/root-urls/project.json +++ b/libs/urls/root-urls/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/urls/root-urls/**/*.ts", "libs/urls/root-urls/**/*.html"] } diff --git a/libs/urls/users-urls/project.json b/libs/urls/users-urls/project.json index db060142..20353300 100644 --- a/libs/urls/users-urls/project.json +++ b/libs/urls/users-urls/project.json @@ -6,7 +6,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/urls/users-urls/**/*.ts", "libs/urls/users-urls/**/*.html"] } diff --git a/libs/utils/project.json b/libs/utils/project.json index 7faf2d9c..8fd26e2b 100644 --- a/libs/utils/project.json +++ b/libs/utils/project.json @@ -5,7 +5,7 @@ "prefix": "proxy", "targets": { "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["libs/utils/**/*.ts", "libs/utils/**/*.html"] } diff --git a/libs/utils/src/index.ts b/libs/utils/src/index.ts index 97eb55d7..0f0217fc 100644 --- a/libs/utils/src/index.ts +++ b/libs/utils/src/index.ts @@ -4,7 +4,7 @@ export * from './rename-key-recursively'; export * from './convert-to-utc'; import { Result, getHostNameDetail } from '@proxy/ui/handle-domain'; -import * as dayjs from 'dayjs'; +import dayjs from 'dayjs'; import { cloneDeep, pickBy, uniqBy } from 'lodash-es'; import { sha256Encrypt } from './crypto'; diff --git a/libs/utils/src/intl-phone-lib.class.ts b/libs/utils/src/intl-phone-lib.class.ts index 5b2636ab..12e8b038 100644 --- a/libs/utils/src/intl-phone-lib.class.ts +++ b/libs/utils/src/intl-phone-lib.class.ts @@ -5,6 +5,7 @@ declare var window; export class IntlPhoneLib { private intl: any; private changeFlagZIndexInterval: any; + private inputElement: any; /** * Creates an instance of IntlPhoneLib. * @param {*} inputElement @@ -12,14 +13,17 @@ export class IntlPhoneLib { * @memberof IntlPhoneLib */ constructor(inputElement, parentDom, customCssStyleURL, changeFlagZIndex = false, intlOptions: object = {}) { + this.inputElement = inputElement; const script = document.createElement('script'); script.type = 'text/javascript'; - script.src = 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/js/intlTelInput.min.js'; - script.onload = () => { + script.src = 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/intlTelInput.min.js'; + const initIntlTelInput = () => { this.intl = window.intlTelInput(inputElement, { ...INTL_INPUT_OPTION, ...intlOptions }); this.checkMobileFlag(parentDom, changeFlagZIndex); }; + script.onload = () => initIntlTelInput(); + const intlStyleElement = document.createElement('link'); intlStyleElement.rel = 'stylesheet'; intlStyleElement.href = `https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/css/intlTelInput.css`; @@ -38,12 +42,16 @@ export class IntlPhoneLib { document.head.appendChild(intlStyleElement); }, 200); + if (window.intlTelInput) { + initIntlTelInput(); + } + let ulEl = document.getElementById('iti-0__country-listbox'); if (ulEl) { let flagEl = Array.from(document.getElementsByClassName('iti__flag') as HTMLCollectionOf); for (let i = 0; i < flagEl.length; i++) { flagEl[i].style.backgroundImage = - 'url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.17/img/flags@2x.png)'; + 'url(https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/img/flags.png)'; } } @@ -56,7 +64,7 @@ export class IntlPhoneLib { } }, 100); }); - this.showCountryDropdown(parentDom); + this.showCountryDropdown(inputElement, parentDom); } set phoneNumber(number: string) { @@ -97,7 +105,8 @@ export class IntlPhoneLib { let mobileViewInit = document.querySelector('body.iti-mobile'); let childCount = 0; let flagDropDownElInterval = setInterval(() => { - let flagDropdownView = parentDom.querySelector('.iti__flag-container'); + const itiWrapper = this.inputElement?.closest?.('.iti') || parentDom; + let flagDropdownView = itiWrapper.querySelector('.iti__flag-container'); if (changeFlagZIndex) { this.changeFlagZIndexInterval = setInterval(() => { let flagDropDown = document.querySelector('.iti--container'); @@ -123,27 +132,35 @@ export class IntlPhoneLib { * showCountryDropdown in fixed position * * @private + * @param {HTMLElement} inputElement * @param {HTMLElement} parentDom * @memberof IntlPhoneLib */ - private showCountryDropdown(parentDom: HTMLElement) { - setTimeout(() => { - let shadowRoot = parentDom.querySelector('.iti__flag-container'); - let flagDropdownView = parentDom.querySelector('.iti__country-list'); - if (flagDropdownView) { - shadowRoot.addEventListener('click', (event: PointerEvent) => { - // Get Clicked button coordinates - const rect = shadowRoot.getBoundingClientRect(); - // Add current input height form top position - const top = rect.top + 34; - // Add styles on country dropdown - flagDropdownView.setAttribute( + private showCountryDropdown(inputElement: HTMLElement, parentDom: HTMLElement) { + const getItiScope = () => inputElement?.closest?.('.iti') || parentDom; + const attachListener = (attempt = 0) => { + const itiScope = getItiScope(); + let flagContainer = itiScope.querySelector('.iti__flag-container'); + let flagDropdownView = itiScope.querySelector('.iti__country-list'); + if (flagDropdownView && flagContainer) { + flagContainer.addEventListener('click', (event: PointerEvent) => { + const scope = getItiScope(); + const btn = scope.querySelector('.iti__flag-container') as HTMLElement; + const list = scope.querySelector('.iti__country-list') as HTMLElement; + if (!btn || !list) return; + const rect = btn.getBoundingClientRect(); + const top = rect.bottom; + const left = rect.left; + list.setAttribute( 'style', - 'position: fixed;top:' + top + 'px; left:' + rect.left + 'px' + 'position: fixed; top:' + top + 'px; left:' + left + 'px; z-index: 9999;' ); }); + } else if (attempt < 20) { + setTimeout(() => attachListener(attempt + 1), 200); } - }, 700); + }; + setTimeout(() => attachListener(), 700); } public onlyPhoneNumber(e: KeyboardEvent): void { diff --git a/migrations.json b/migrations.json new file mode 100644 index 00000000..e7052e80 --- /dev/null +++ b/migrations.json @@ -0,0 +1,32 @@ +{ + "migrations": [ + { + "version": "17.0.0", + "description": "Angular v17 introduces a new control flow syntax that uses the @ and } characters. This migration replaces the existing usages with their corresponding HTML entities.", + "factory": "./migrations/block-template-entities/bundle", + "package": "@angular/core", + "name": "block-template-entities" + }, + { + "version": "17.0.0", + "description": "CompilerOption.useJit and CompilerOption.missingTranslation are unused under Ivy. This migration removes their usage", + "factory": "./migrations/compiler-options/bundle", + "package": "@angular/core", + "name": "migration-v17-compiler-options" + }, + { + "version": "17.0.0", + "description": "Updates `TransferState`, `makeStateKey`, `StateKey` imports from `@angular/platform-browser` to `@angular/core`.", + "factory": "./migrations/transfer-state/bundle", + "package": "@angular/core", + "name": "migration-transfer-state" + }, + { + "version": "17.3.0", + "description": "Updates two-way bindings that have an invalid expression to use the longform expression instead.", + "factory": "./migrations/invalid-two-way-bindings/bundle", + "package": "@angular/core", + "name": "invalid-two-way-bindings" + } + ] +} diff --git a/nx.json b/nx.json index 493aacfa..0a61b510 100755 --- a/nx.json +++ b/nx.json @@ -5,27 +5,25 @@ }, "tasksRunnerOptions": { "default": { - "runner": "@nrwl/nx-cloud", + "runner": "nx/tasks-runners/default", "options": { - "cacheableOperations": ["lint", "test"], - "accessToken": "Yzk3NzU2OWMtZTJhZC00NWNhLTk1OGQtMWJiOThhMWM2MzE0fHJlYWQtd3JpdGU=", - "parallel": 3 + "cacheableOperations": ["build", "lint", "test"] } } }, "generators": { - "@nrwl/angular:application": { + "@nx/angular:application": { "style": "scss", "linter": "eslint", "unitTestRunner": "none", "e2eTestRunner": "cypress" }, - "@nrwl/angular:library": { + "@nx/angular:library": { "linter": "eslint", "unitTestRunner": "none", "strict": false }, - "@nrwl/angular:component": { + "@nx/angular:component": { "style": "scss" } }, @@ -61,5 +59,6 @@ "inputs": ["default", "^production"] } }, - "defaultProject": "proxy" + "defaultProject": "36-blocks", + "analytics": true } diff --git a/package-lock.json b/package-lock.json index 711a08cb..283c0dac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,41 @@ { - "name": "proxy", + "name": "36-blocks", "version": "0.0.3", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "proxy", + "name": "36-blocks", "version": "0.0.3", - "hasInstallScript": true, "license": "MIT", "dependencies": { "@abacritt/angularx-social-login": "1.2.5", "@angular-material-components/datetime-picker": "8.0.0", "@angular-material-components/moment-adapter": "8.0.0", - "@angular/animations": "14.2.2", - "@angular/cdk": "14.2.2", - "@angular/common": "14.2.2", - "@angular/compiler": "14.2.2", - "@angular/core": "14.2.2", - "@angular/elements": "14.2.2", - "@angular/fire": "7.5.0", - "@angular/forms": "14.2.2", - "@angular/localize": "14.2.2", - "@angular/material": "14.2.2", - "@angular/material-moment-adapter": "14.2.2", - "@angular/platform-browser": "14.2.2", - "@angular/platform-browser-dynamic": "14.2.2", - "@angular/router": "14.2.2", + "@angular/animations": "21.2.4", + "@angular/cdk": "21.2.2", + "@angular/common": "21.2.4", + "@angular/compiler": "21.2.4", + "@angular/core": "21.2.4", + "@angular/elements": "21.2.4", + "@angular/fire": "21.0.0-rc.0", + "@angular/forms": "21.2.4", + "@angular/localize": "21.2.4", + "@angular/material": "21.2.2", + "@angular/material-moment-adapter": "21.2.2", + "@angular/platform-browser": "21.2.4", + "@angular/platform-browser-dynamic": "21.2.4", + "@angular/router": "21.2.4", "@highcharts/map-collection": "2.0.1", "@materia-ui/ngx-monaco-editor": "6.0.0", - "@ngrx/component": "14.2.0", - "@ngrx/component-store": "14.2.0", - "@ngrx/effects": "14.0.2", - "@ngrx/entity": "14.0.2", - "@ngrx/router-store": "14.0.2", - "@ngrx/store": "14.0.2", + "@ngrx/component": "21.0.1", + "@ngrx/component-store": "21.0.1", + "@ngrx/effects": "21.0.1", + "@ngrx/entity": "21.0.1", + "@ngrx/operators": "21.0.1", + "@ngrx/router-store": "21.0.1", + "@ngrx/store": "21.0.1", + "@tailwindcss/postcss": "^4.2.1", "@webcomponents/custom-elements": "1.6.0", "angular-froala-wysiwyg": "4.0.15", "angular-text-input-highlight": "1.4.3", @@ -54,7 +55,7 @@ "d3-time-format": "3.0.0", "d3-transition": "3.0.1", "dayjs": "1.11.7", - "firebase": "9.16.0", + "firebase": "^12.10.0", "froala-editor": "4.0.15", "fs-extra": "5.0.0", "google-libphonenumber": "3.2.32", @@ -63,43 +64,44 @@ "intl-tel-input": "17.0.19", "jssip": "3.10.0", "lodash-es": "4.17.21", + "marked": "^17.0.5", "ng-click-outside": "9.0.1", "ng-hcaptcha": "^2.6.0", "ng-otp-input": "1.8.5", "ngrx-store-localstorage": "14.0.0", "ngx-bootstrap": "9.0.0", "ngx-cookie-service": "14.0.1", - "ngx-markdown": "14.0.1", + "ngx-markdown": "21.1.0", "primeng": "14.2.2", "random-avatar-generator": "2.0.0", "recordrtc": "5.6.2", - "rxjs": "~7.5.7", + "rxjs": "7.8.2", "socket.io-client": "4.5.4", + "tailwindcss": "^4.2.1", "tributejs": "5.1.3", "tslib": "2.5.0", - "zone.js": "0.11.5" + "zone.js": "0.15.1" }, "devDependencies": { - "@angular-builders/custom-webpack": "14.0.1", - "@angular-devkit/build-angular": "14.2.3", - "@angular-devkit/build-webpack": "0.1402.4", - "@angular-eslint/eslint-plugin": "14.0.4", - "@angular-eslint/eslint-plugin-template": "14.0.4", - "@angular-eslint/template-parser": "14.0.4", - "@angular/cli": "~14.2.0", - "@angular/compiler-cli": "14.2.2", - "@angular/language-service": "14.2.2", - "@ngrx/store-devtools": "14.0.2", - "@nrwl/angular": "15.0.3", - "@nrwl/cli": "15.0.3", - "@nrwl/cypress": "15.0.3", - "@nrwl/eslint-plugin-nx": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/nx-cloud": "^16.2.0", - "@nrwl/workspace": "15.0.3", + "@angular-devkit/build-angular": "21.2.2", + "@angular-devkit/build-webpack": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", + "@angular-eslint/eslint-plugin": "21.3.1", + "@angular-eslint/eslint-plugin-template": "21.3.1", + "@angular-eslint/template-parser": "21.3.1", + "@angular/cli": "~21.2.0", + "@angular/compiler-cli": "21.2.4", + "@angular/language-service": "21.2.4", + "@ngrx/store-devtools": "21.0.1", + "@nx/angular": "21.6.10", + "@nx/cypress": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/jest": "21.6.10", + "@nx/workspace": "21.6.10", + "@schematics/angular": "21.2.2", "@types/chart.js": "^2.9.28", - "@types/jest": "28.1.8", + "@types/jest": "29.4.4", "@types/lodash": "^4.14.161", "@types/lodash-es": "^4.17.3", "@types/node": "14.14.33", @@ -114,18 +116,19 @@ "eslint-plugin-cypress": "^2.10.3", "gzipper": "^4.3.0", "husky": "^7.0.2", - "jest": "28.1.3", + "jest": "29.4.3", "jest-worker": "^27.3.1", "linkifyjs": "3.0.0-beta.3", "lint-staged": "^11.2.3", - "ngx-build-plus": "^14.0.0", - "nx": "15.0.3", - "postcss": "^8.2.8", + "ngx-build-plus": "^19.0.0", + "nx": "21.6.10", + "postcss": "^8.5.8", "prettier": "2.7.1", - "ts-jest": "28.0.8", + "ts-jest": "29.0.5", "ts-node": "10.9.1", "tslint": "6.1.3", - "typescript": "4.8.4" + "typescript": "5.9.3", + "webpack-dev-server": "^4.11.1" } }, "node_modules/@abacritt/angularx-social-login": { @@ -139,165 +142,379 @@ "@angular/core": ">=13.0.0" } }, - "node_modules/@adobe/css-tools": { - "version": "4.1.0", + "node_modules/@algolia/abtesting": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.14.1.tgz", + "integrity": "sha512-Dkj0BgPiLAaim9sbQ97UKDFHJE/880wgStAM18U++NaJ/2Cws34J5731ovJifr6E3Pv4T2CqvMXf8qLCC417Ew==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/@algolia/client-abtesting": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.48.1.tgz", + "integrity": "sha512-LV5qCJdj+/m9I+Aj91o+glYszrzd7CX6NgKaYdTOj4+tUYfbS62pwYgUfZprYNayhkQpVFcrW8x8ZlIHpS23Vw==", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 14.0.0" } }, - "node_modules/@angular-builders/custom-webpack": { - "version": "14.0.1", + "node_modules/@algolia/client-analytics": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.48.1.tgz", + "integrity": "sha512-/AVoMqHhPm14CcHq7mwB+bUJbfCv+jrxlNvRjXAuO+TQa+V37N8k1b0ijaRBPdmSjULMd8KtJbQyUyabXOu6Kg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": ">=0.1400.0 < 0.1500.0", - "@angular-devkit/build-angular": "^14.0.0", - "@angular-devkit/core": "^14.0.0", - "lodash": "^4.17.15", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.9.0", - "webpack-merge": "^5.7.3" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.48.1.tgz", + "integrity": "sha512-VXO+qu2Ep6ota28ktvBm3sG53wUHS2n7bgLWmce5jTskdlCD0/JrV4tnBm1l7qpla1CeoQb8D7ShFhad+UoSOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.48.1.tgz", + "integrity": "sha512-zl+Qyb0nLg+Y5YvKp1Ij+u9OaPaKg2/EPzTwKNiVyOHnQJlFxmXyUZL1EInczAZsEY8hVpPCLtNfhMhfxluXKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, - "peerDependencies": { - "@angular/compiler-cli": "^14.0.0" + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@angular-devkit/architect": { - "version": "0.1402.10", + "node_modules/@algolia/client-personalization": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.48.1.tgz", + "integrity": "sha512-r89Qf9Oo9mKWQXumRu/1LtvVJAmEDpn8mHZMc485pRfQUMAwSSrsnaw1tQ3sszqzEgAr1c7rw6fjBI+zrAXTOw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.2.10", - "rxjs": "6.6.7" + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">= 14.0.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/@algolia/client-query-suggestions": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.48.1.tgz", + "integrity": "sha512-TPKNPKfghKG/bMSc7mQYD9HxHRUkBZA4q1PEmHgICaSeHQscGqL4wBrKkhfPlDV1uYBKW02pbFMUhsOt7p4ZpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.48.1.tgz", + "integrity": "sha512-4Fu7dnzQyQmMFknYwTiN/HxPbH4DyxvQ1m+IxpPp5oslOgz8m6PG5qhiGbqJzH4HiT1I58ecDiCAC716UyVA8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.48.1.tgz", + "integrity": "sha512-/RFq3TqtXDUUawwic/A9xylA2P3LDMO8dNhphHAUOU51b1ZLHrmZ6YYJm3df1APz7xLY1aht6okCQf+/vmrV9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.48.1", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.48.1.tgz", + "integrity": "sha512-Of0jTeAZRyRhC7XzDSjJef0aBkgRcvRAaw0ooYRlOw57APii7lZdq+layuNdeL72BRq1snaJhoMMwkmLIpJScw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.48.1.tgz", + "integrity": "sha512-bE7JcpFXzxF5zHwj/vkl2eiCBvyR1zQ7aoUdO+GDXxGp0DGw7nI0p8Xj6u8VmRQ+RDuPcICFQcCwRIJT5tDJFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.48.1.tgz", + "integrity": "sha512-MK3wZ2koLDnvH/AmqIF1EKbJlhRS5j74OZGkLpxI4rYvNi9Jn/C7vb5DytBnQ4KUWts7QsmbdwHkxY5txQHXVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.48.1.tgz", + "integrity": "sha512-2oDT43Y5HWRSIQMPQI4tA/W+TN/N2tjggZCUsqQV440kxzzoPGsvv9QP1GhQ4CoDa+yn6ygUsGp6Dr+a9sPPSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.48.1.tgz", + "integrity": "sha512-xcaCqbhupVWhuBP1nwbk1XNvwrGljozutEiLx06mvqDf3o8cHyEgQSHS4fKJM+UAggaWVnnFW+Nne5aQ8SUJXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.48.1" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "npm": ">=2.0.0" + "node": ">=6.0.0" } }, - "node_modules/@angular-devkit/architect/node_modules/tslib": { - "version": "1.14.1", + "node_modules/@angular-devkit/architect": { + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2102.2.tgz", + "integrity": "sha512-CDvFtXwyBtMRkTQnm+LfBNLL0yLV8ZGskrM1T6VkcGwXGFDott1FxUdj96ViodYsYL5fbJr0MNA6TlLcanV3kQ==", "dev": true, - "license": "0BSD" + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "21.2.2", + "rxjs": "7.8.2" + }, + "bin": { + "architect": "bin/cli.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } }, "node_modules/@angular-devkit/build-angular": { - "version": "14.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/build-webpack": "0.1402.3", - "@angular-devkit/core": "14.2.3", - "@babel/core": "7.18.10", - "@babel/generator": "7.18.12", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.10", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.10", - "@babel/preset-env": "7.18.10", - "@babel/runtime": "7.18.9", - "@babel/template": "7.18.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.3", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-21.2.2.tgz", + "integrity": "sha512-+KaqvraSGvhnSL3fUazHR8297k6lv/pzhV1p2x2mb6r5FyzD/HjYIP2fiIB2DII36YOVli2mgECoY3CmWj6n8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/build-webpack": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular/build": "21.2.2", + "@babel/core": "7.29.0", + "@babel/generator": "7.29.1", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@babel/plugin-transform-async-generator-functions": "7.29.0", + "@babel/plugin-transform-async-to-generator": "7.28.6", + "@babel/plugin-transform-runtime": "7.29.0", + "@babel/preset-env": "7.29.0", + "@babel/runtime": "7.28.6", + "@discoveryjs/json-ext": "0.6.3", + "@ngtools/webpack": "21.2.2", "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.2", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild-wasm": "0.15.5", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", + "autoprefixer": "10.4.27", + "babel-loader": "10.0.0", + "browserslist": "^4.26.0", + "copy-webpack-plugin": "14.0.0", + "css-loader": "7.1.3", + "esbuild-wasm": "0.27.3", + "http-proxy-middleware": "3.0.5", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.0.0", + "less": "4.4.2", + "less-loader": "12.3.1", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.6.1", - "minimatch": "5.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.16", - "postcss-import": "15.0.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.8.0", - "regenerator-runtime": "0.13.9", + "loader-utils": "3.3.1", + "mini-css-extract-plugin": "2.10.0", + "open": "11.0.0", + "ora": "9.3.0", + "picomatch": "4.0.3", + "piscina": "5.1.4", + "postcss": "8.5.6", + "postcss-loader": "8.2.0", "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.54.4", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", + "rxjs": "7.8.2", + "sass": "1.97.3", + "sass-loader": "16.0.7", + "semver": "7.7.4", + "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "stylus": "0.59.0", - "stylus-loader": "7.0.0", - "terser": "5.14.2", - "text-table": "0.2.0", + "terser": "5.46.0", + "tinyglobby": "0.2.15", "tree-kill": "1.2.2", - "tslib": "2.4.0", - "webpack": "5.74.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.11.0", - "webpack-merge": "5.8.0", + "tslib": "2.8.1", + "webpack": "5.105.2", + "webpack-dev-middleware": "7.4.5", + "webpack-dev-server": "5.2.3", + "webpack-merge": "6.0.1", "webpack-subresource-integrity": "5.1.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.15.5" - }, - "peerDependencies": { - "@angular/compiler-cli": "^14.0.0", - "@angular/localize": "^14.0.0", - "@angular/service-worker": "^14.0.0", + "esbuild": "0.27.3" + }, + "peerDependencies": { + "@angular/compiler-cli": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/localize": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.2.2", + "@web/test-runner": "^0.20.0", + "browser-sync": "^3.0.2", + "jest": "^30.2.0", + "jest-environment-jsdom": "^30.2.0", "karma": "^6.3.0", - "ng-packagr": "^14.0.0", + "ng-packagr": "^21.0.0", "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.6.2 <4.9" + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.9 <6.0" }, "peerDependenciesMeta": { + "@angular/core": { + "optional": true + }, "@angular/localize": { "optional": true }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, "@angular/service-worker": { "optional": true }, + "@angular/ssr": { + "optional": true + }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, "karma": { "optional": true }, @@ -312,277 +529,445 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { - "version": "0.1402.3", + "node_modules/@angular-devkit/build-angular/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.2.3", - "rxjs": "6.6.7" + "ms": "^2.1.3" }, "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.3", + "node_modules/@angular-devkit/build-angular/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/architect": "0.1402.3", - "rxjs": "6.6.7" - }, "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=12" }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "14.2.3", + "node_modules/@angular-devkit/build-angular/node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/colorette": { - "version": "2.0.19", + "node_modules/@angular-devkit/build-angular/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/@angular-devkit/build-angular/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/postcss": { - "version": "8.4.16", + "node_modules/@angular-devkit/build-angular/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/@angular-devkit/build-angular/node_modules/memfs": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "npm": ">=2.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", + "node_modules/@angular-devkit/build-angular/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, - "license": "0BSD" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/@angular-devkit/build-angular/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=18" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/express" } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@angular-devkit/build-angular/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/@angular-devkit/build-angular/node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" + }, + "engines": { + "node": ">=18" } }, "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.4.0", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.74.0", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, + "peerDependencies": { + "webpack": "^5.0.0" + }, "peerDependenciesMeta": { - "webpack-cli": { + "webpack": { "optional": true } } }, "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server": { - "version": "4.11.0", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.22.1", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { + "webpack": { + "optional": true + }, "webpack-cli": { "optional": true } } }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">= 12.13.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack-dev-server/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@angular-devkit/build-angular/node_modules/ws": { - "version": "8.12.0", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { @@ -602,55 +987,45 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.4", + "version": "0.2102.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2102.2.tgz", + "integrity": "sha512-5wQmVnpozBCeAMx1SKHSv2GGH3pVZ1WMwX4k0tnsgsHTt8ia24Zxa7P7pAsqkCbpHpa+7/nEjNuW9Teg/isumg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1402.4", - "rxjs": "6.6.7" + "@angular-devkit/architect": "0.2102.2", + "rxjs": "7.8.2" }, "engines": { - "node": "^14.15.0 || >=16.10.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { "webpack": "^5.30.0", - "webpack-dev-server": "^4.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { - "version": "0.1402.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "14.2.4", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/core": { - "version": "14.2.4", - "dev": true, + "node_modules/@angular-devkit/core": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-21.2.2.tgz", + "integrity": "sha512-xUeKGe4BDQpkz0E6fnAPIJXE0y0nqtap0KhJIBhvN7xi3NenIzTmoi6T9Yv5OOBUdLZbOm4SOel8MhdXiIBpAQ==", "license": "MIT", "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.3", + "rxjs": "7.8.2", + "source-map": "0.7.6" }, "engines": { - "node": "^14.15.0 || >=16.10.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "chokidar": "^5.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -658,147 +1033,153 @@ } } }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "6.6.7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/@angular-devkit/core": { - "version": "14.2.10", + "node_modules/@angular-devkit/core/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "license": "MIT", "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "ajv": "^8.0.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "ajv": "^8.0.0" }, "peerDependenciesMeta": { - "chokidar": { + "ajv": { "optional": true } } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "6.6.7", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, + "node_modules/@angular-devkit/core/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", "engines": { - "npm": ">=2.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@angular-devkit/core/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, "node_modules/@angular-devkit/schematics": { - "version": "14.2.10", + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-21.2.2.tgz", + "integrity": "sha512-CCeyQxGUq+oyGnHd7PfcYIVbj9pRnqjQq0rAojoAqs1BJdtInx9weLBCLy+AjM3NHePeZrnwm+wEVr8apED8kg==", "license": "MIT", "dependencies": { - "@angular-devkit/core": "14.2.10", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" + "@angular-devkit/core": "21.2.2", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.21", + "ora": "9.3.0", + "rxjs": "7.8.2" }, "engines": { - "node": "^14.15.0 || >=16.10.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "6.6.7", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "14.0.4", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-21.3.1.tgz", + "integrity": "sha512-jjbnJPUXQeQBJ8RM+ahlbt4GH2emVN8JvG3AhFbPci1FrqXi9cOOfkbwLmvpoyTli4LF8gy7g4ctFqnlRgqryw==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "14.0.4", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-21.3.1.tgz", + "integrity": "sha512-08NNTxwawRLTWPLl8dg1BnXMwimx93y4wMEwx2aWQpJbIt4pmNvwJzd+NgoD/Ag2VdLS/gOMadhJH5fgaYKsPQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/utils": "14.0.4", - "@typescript-eslint/utils": "5.36.2" + "@angular-eslint/bundled-angular-compiler": "21.3.1", + "@angular-eslint/utils": "21.3.1", + "ts-api-utils": "^2.1.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "14.0.4", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-21.3.1.tgz", + "integrity": "sha512-ndPWJodkcEOu2PVUxlUwyz4D2u3r9KO7veWmStVNOLeNrICJA+nQvrz2BWCu0l48rO0K5ezsy0JFcQDVwE/5mw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", - "aria-query": "5.0.2", - "axobject-query": "3.0.1" + "@angular-eslint/bundled-angular-compiler": "21.3.1", + "@angular-eslint/utils": "21.3.1", + "aria-query": "5.3.2", + "axobject-query": "4.1.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", + "@angular-eslint/template-parser": "21.3.1", + "@typescript-eslint/types": "^7.11.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "*" } }, "node_modules/@angular-eslint/template-parser": { - "version": "14.0.4", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-21.3.1.tgz", + "integrity": "sha512-moERVCTekQKOvR8RMuEOtWSO3VS1qrzA3keI1dPto/JVB8Nqp9w3R5ZpEoXHzh4zgEryosxmPgdi6UczJe2ouQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "eslint-scope": "^5.1.0" + "@angular-eslint/bundled-angular-compiler": "21.3.1", + "eslint-scope": "9.1.2" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "*" } }, + "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@angular-eslint/template-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/@angular-eslint/utils": { - "version": "14.0.4", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-21.3.1.tgz", + "integrity": "sha512-Q3SGA1/36phZhmsp1mYrKzp/jcmqofRr861MYn46FaWIKSYXBYRzl+H3FIJKBu5CE36Bggu6hbNpwGPuUp+MCg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "@typescript-eslint/utils": "5.36.2" + "@angular-eslint/bundled-angular-compiler": "21.3.1" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "*" } }, @@ -830,1590 +1211,1875 @@ } }, "node_modules/@angular/animations": { - "version": "14.2.2", + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-21.2.4.tgz", + "integrity": "sha512-hO1P7ks9n7lW3D31bzHohSuoAaj05xJUlK8rZgX8IkH5DLx4qhvfNh0t4bbLuBJLP2r1TaLsQ8KFcemCkFRO2w==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.2" - } - }, - "node_modules/@angular/cdk": { - "version": "14.2.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^5.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "^14.0.0 || ^15.0.0", - "@angular/core": "^14.0.0 || ^15.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "@angular/core": "21.2.4" } }, - "node_modules/@angular/cli": { - "version": "14.2.10", + "node_modules/@angular/build": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-21.2.2.tgz", + "integrity": "sha512-Vq2eIneNxzhHm1MwEmRqEJDwHU9ODfSRDaMWwtysGMhpoMQmLdfTqkQDmkC2qVUr8mV8Z1i5I+oe5ZJaMr/PlQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1402.10", - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "@schematics/angular": "14.2.10", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "npm-package-arg": "9.1.0", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.6.2", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - }, - "bin": { - "ng": "bin/ng.js" + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.2102.2", + "@babel/core": "7.29.0", + "@babel/helper-annotate-as-pure": "7.27.3", + "@babel/helper-split-export-declaration": "7.24.7", + "@inquirer/confirm": "5.1.21", + "@vitejs/plugin-basic-ssl": "2.1.4", + "beasties": "0.4.1", + "browserslist": "^4.26.0", + "esbuild": "0.27.3", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "jsonc-parser": "3.3.1", + "listr2": "9.0.5", + "magic-string": "0.30.21", + "mrmime": "2.0.1", + "parse5-html-rewriting-stream": "8.0.0", + "picomatch": "4.0.3", + "piscina": "5.1.4", + "rolldown": "1.0.0-rc.4", + "sass": "1.97.3", + "semver": "7.7.4", + "source-map-support": "0.5.21", + "tinyglobby": "0.2.15", + "undici": "7.22.0", + "vite": "7.3.1", + "watchpack": "2.5.1" }, "engines": { - "node": "^14.15.0 || >=16.10.0", + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/common": { - "version": "14.2.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.2", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "14.2.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.2" + "optionalDependencies": { + "lmdb": "3.5.1" + }, + "peerDependencies": { + "@angular/compiler": "^21.0.0", + "@angular/compiler-cli": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/localize": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/service-worker": "^21.0.0", + "@angular/ssr": "^21.2.2", + "karma": "^6.4.0", + "less": "^4.2.0", + "ng-packagr": "^21.0.0", + "postcss": "^8.4.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "tslib": "^2.3.0", + "typescript": ">=5.9 <6.0", + "vitest": "^4.0.8" }, "peerDependenciesMeta": { "@angular/core": { "optional": true + }, + "@angular/localize": { + "optional": true + }, + "@angular/platform-browser": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@angular/ssr": { + "optional": true + }, + "karma": { + "optional": true + }, + "less": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tailwindcss": { + "optional": true + }, + "vitest": { + "optional": true } } }, - "node_modules/@angular/compiler-cli": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/main-ngcc.js" + "environment": "^1.0.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=18" }, - "peerDependencies": { - "@angular/compiler": "14.2.2", - "typescript": ">=4.6.2 <4.9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/core": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=12" }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.11.4" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@angular/elements": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-14.2.2.tgz", - "integrity": "sha512-ZbRHBs+xs70Gn7NgFC9glyBHy6mX/EKVJ9lxF3KWppP3puC+tWsiEKPDHVj6HgeubxVaSYrImcKE5vX6mIv4Rg==", - "dependencies": { - "tslib": "^2.3.0" - }, + "node_modules/@angular/build/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.2", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/fire": { - "version": "7.5.0", - "license": "MIT", - "dependencies": { - "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "file-loader": "^6.2.0", - "firebase": "^9.8.0", - "fs-extra": "^8.0.1", - "fuzzy": "^0.1.3", - "inquirer": "^8.1.1", - "inquirer-autocomplete-prompt": "^1.0.1", - "jsonc-parser": "^3.0.0", - "node-fetch": "^2.6.1", - "open": "^8.0.0", - "ora": "^5.3.0", - "rxfire": "^6.0.0", - "semver": "^7.1.3", - "triple-beam": "^1.3.0", - "tslib": "^2.0.0", - "winston": "^3.0.0" - }, - "peerDependencies": { - "@angular/common": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "@angular/core": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "@angular/platform-browser": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "@angular/platform-browser-dynamic": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "firebase-tools": "^9.9.0 || ^10.0.0 || ^11.0.0", - "rxjs": "~6.6.0 || ^7.0.0" + "node": ">=12" }, - "peerDependenciesMeta": { - "firebase-tools": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@angular/fire/node_modules/fs-extra": { - "version": "8.1.0", + "node_modules/@angular/build/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/forms": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=20" }, - "peerDependencies": { - "@angular/common": "14.2.2", - "@angular/core": "14.2.2", - "@angular/platform-browser": "14.2.2", - "rxjs": "^6.5.3 || ^7.4.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/language-service": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || >=16.10.0" - } + "license": "MIT" }, - "node_modules/@angular/localize": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/build/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/build/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.18.9", - "glob": "8.0.3", - "yargs": "^17.2.1" - }, - "bin": { - "localize-extract": "tools/bundles/src/extract/cli.js", - "localize-migrate": "tools/bundles/src/migrate/cli.js", - "localize-translate": "tools/bundles/src/translate/cli.js" + "get-east-asian-width": "^1.3.1" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=18" }, - "peerDependencies": { - "@angular/compiler": "14.2.2", - "@angular/compiler-cli": "14.2.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.18.9", - "license": "MIT", + "node_modules/@angular/build/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/localize/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, - "node_modules/@angular/material": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, - "peerDependencies": { - "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.2.2", - "@angular/common": "^14.0.0 || ^15.0.0", - "@angular/core": "^14.0.0 || ^15.0.0", - "@angular/forms": "^14.0.0 || ^15.0.0", - "@angular/platform-browser": "^14.0.0 || ^15.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@angular/material-moment-adapter": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, - "peerDependencies": { - "@angular/core": "^14.0.0 || ^15.0.0", - "@angular/material": "14.2.2", - "moment": "^2.18.1" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/platform-browser": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/animations": "14.2.2", - "@angular/common": "14.2.2", - "@angular/core": "14.2.2" + "node": ">=18" }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=18" }, - "peerDependencies": { - "@angular/common": "14.2.2", - "@angular/compiler": "14.2.2", - "@angular/core": "14.2.2", - "@angular/platform-browser": "14.2.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular/router": { - "version": "14.2.2", + "node_modules/@angular/build/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, "engines": { - "node": "^14.15.0 || >=16.10.0" + "node": ">=12" }, - "peerDependencies": { - "@angular/common": "14.2.2", - "@angular/core": "14.2.2", - "@angular/platform-browser": "14.2.2", - "rxjs": "^6.5.3 || ^7.4.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@assemblyscript/loader": { - "version": "0.10.1", + "node_modules/@angular/build/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.18.6" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/compat-data": { - "version": "7.20.14", - "license": "MIT", + "node_modules/@angular/build/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/core": { - "version": "7.18.10", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" + "node_modules/@angular/build/node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@babel/generator": { - "version": "7.18.12", + "node_modules/@angular/build/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "node_modules/@angular/build/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", + "node_modules/@angular/build/node_modules/undici": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, "engines": { - "node": ">=6.9.0" + "node": ">=20.18.1" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", + "node_modules/@angular/build/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", + "node_modules/@angular/build/node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@angular/cdk": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.2.2.tgz", + "integrity": "sha512-9AsZkwqy07No7+0qPydcJfXB6SpA9qLDBanoesNj5KsiZJ62PJH3oIjVyNeQEEe1HQWmSwBnhwN12OPLNMUlnw==", + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", + "@angular/platform-browser": "^21.0.0 || ^22.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.12", + "node_modules/@angular/cli": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-21.2.2.tgz", + "integrity": "sha512-eZo8/qX+ZIpIWc0CN+cCX13Lbgi/031wAp8DRVhDDO6SMVtcr/ObOQ2S16+pQdOMXxiG3vby6IhzJuz9WACzMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@angular-devkit/architect": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", + "@inquirer/prompts": "7.10.1", + "@listr2/prompt-adapter-inquirer": "3.0.5", + "@modelcontextprotocol/sdk": "1.26.0", + "@schematics/angular": "21.2.2", + "@yarnpkg/lockfile": "1.1.0", + "algoliasearch": "5.48.1", + "ini": "6.0.0", + "jsonc-parser": "3.3.1", + "listr2": "9.0.5", + "npm-package-arg": "13.0.2", + "pacote": "21.3.1", + "parse5-html-rewriting-stream": "8.0.0", + "semver": "7.7.4", + "yargs": "18.0.0", + "zod": "4.3.6" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "ng": "bin/ng.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", + "node_modules/@angular/cli/node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "environment": "^1.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", + "node_modules/@angular/cli/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "engines": { + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", + "node_modules/@angular/cli/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", + "node_modules/@angular/cli/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", + "node_modules/@angular/cli/node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", + "node_modules/@angular/cli/node_modules/cli-truncate/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.20.7", + "node_modules/@angular/cli/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/types": "^7.20.7" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", + "node_modules/@angular/cli/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/cli/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/cli/node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/cli/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "get-east-asian-width": "^1.3.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", + "node_modules/@angular/cli/node_modules/listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/template": { - "version": "7.20.7", + "node_modules/@angular/cli/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", + "node_modules/@angular/cli/node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", + "node_modules/@angular/cli/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", + "node_modules/@angular/cli/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", + "node_modules/@angular/cli/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - }, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/template": { - "version": "7.20.7", + "node_modules/@angular/cli/node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", + "node_modules/@angular/cli/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.2" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", + "node_modules/@angular/cli/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.0" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", + "node_modules/@angular/cli/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", + "node_modules/@angular/cli/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/@babel/helpers": { - "version": "7.20.13", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" - }, + "node_modules/@angular/cli/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.20.7", + "node_modules/@angular/common": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.2.4.tgz", + "integrity": "sha512-NrP6qOuUpo3fqq14UJ1b2bIRtWsfvxh1qLqOyFV4gfBrHhXd0XffU1LUlUw1qp4w1uBSgPJ0/N5bSPUWrAguVg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/core": "21.2.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/highlight": { - "version": "7.18.6", + "node_modules/@angular/compiler": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.2.4.tgz", + "integrity": "sha512-9+ulVK3idIo/Tu4X2ic7/V0+Uj7pqrOAbOuIirYe6Ymm3AjexuFRiGBbfcH0VJhQ5cf8TvIJ1fuh+MI4JiRIxA==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.20.13", + "node_modules/@angular/compiler-cli": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.4.tgz", + "integrity": "sha512-vGjd7DZo/Ox50pQCm5EycmBu91JclimPtZoyNXu/2hSxz3oAkzwiHCwlHwk2g58eheSSp+lYtYRLmHAqSVZLjg==", + "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "7.29.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^5.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^18.0.0" + }, "bin": { - "parser": "bin/babel-parser.js" + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js" }, "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "21.2.4", + "typescript": ">=5.9 <6.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", + "node_modules/@angular/compiler-cli/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", + "node_modules/@angular/compiler-cli/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", + "node_modules/@angular/compiler-cli/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "readdirp": "^5.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">= 20.19.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", + "node_modules/@angular/compiler-cli/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", + "node_modules/@angular/compiler-cli/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular/compiler-cli/node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" + "node": ">= 20.19.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", + "node_modules/@angular/compiler-cli/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", + "node_modules/@angular/compiler-cli/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", + "node_modules/@angular/compiler-cli/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=18" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", + "node_modules/@angular/compiler-cli/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", + "node_modules/@angular/compiler-cli/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@angular/core": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.4.tgz", + "integrity": "sha512-2+gd67ZuXHpGOqeb2o7XZPueEWEP81eJza2tSHkT5QMV8lnYllDEmaNnkPxnIjSLGP1O3PmiXxo4z8ibHkLZwg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/compiler": "21.2.4", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0 || ~0.16.0" + }, + "peerDependenciesMeta": { + "@angular/compiler": { + "optional": true + }, + "zone.js": { + "optional": true + } } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "dev": true, + "node_modules/@angular/elements": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-21.2.4.tgz", + "integrity": "sha512-uAfx+RA5Lu8nD5yWSEZVV6a/BQkyC0L05mvB+Zm1nk1PoMvrjgH/8xTyHOkj3SNOY2dWwzek7Zc1tXleKotnZA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/core": "21.2.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "dev": true, + "node_modules/@angular/fire": { + "version": "21.0.0-rc.0", + "resolved": "https://registry.npmjs.org/@angular/fire/-/fire-21.0.0-rc.0.tgz", + "integrity": "sha512-1eEzV2RJh1phlY6IWTSdIYKXz4m/iYZ2xv9Uo7ayME7gOcm5dHkZNyTzMKAB293UmXuMNqgx/TJsgnoUO91ChQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" + "@angular-devkit/schematics": "^21.0.0", + "@schematics/angular": "^21.0.0", + "firebase": "^12.4.0", + "rxfire": "^6.1.0", + "tslib": "^2.3.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-browser-dynamic": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "firebase-tools": "^14.0.0", + "rxjs": "~7.8.0" + }, + "peerDependenciesMeta": { + "@angular/platform-server": { + "optional": true + }, + "firebase-tools": { + "optional": true + } } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "dev": true, + "node_modules/@angular/forms": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.2.4.tgz", + "integrity": "sha512-1fOhctA9ADEBYjI3nPQUR5dHsK2+UWAjup37Ksldk/k0w8UpD5YsN7JVNvsDMZRFMucKYcGykPblU7pABtsqnQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@standard-schema/spec": "^1.0.0", + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", + "node_modules/@angular/language-service": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-21.2.4.tgz", + "integrity": "sha512-seWlXWhayTwuL62Cfz+Ky/Wv67oYLX+cXplYoIinDVJPgQaU9jXpakLfKq8RwdRXVmgTE0HQ5dyoTozuWgJ8Nw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "dev": true, + "node_modules/@angular/localize": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-21.2.4.tgz", + "integrity": "sha512-brKKeH+jaTlY4coIOinKQtitLCguQzyniKYtfrhCvZSN0ap4W4PljAT5w3l+1a8e7/ThM1JVQpqtVCCcJHJZSg==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/core": "7.29.0", + "@types/babel__core": "7.20.5", + "tinyglobby": "^0.2.12", + "yargs": "^18.0.0" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/compiler": "21.2.4", + "@angular/compiler-cli": "21.2.4" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "dev": true, + "node_modules/@angular/localize/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "dev": true, + "node_modules/@angular/localize/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@angular/localize/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, + "node_modules/@angular/localize/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/@angular/localize/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "dev": true, + "node_modules/@angular/localize/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "ansi-regex": "^6.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, + "node_modules/@angular/localize/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, + "node_modules/@angular/localize/node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, + "node_modules/@angular/localize/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@angular/material": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-21.2.2.tgz", + "integrity": "sha512-yY7kdmltNd28Tw8bHvoSFuoO8jMJSicSU9gB9r4jSLHPWAI9Y3V2qvLEimfPLRmzEaWwSoqKda95k/646lgg6A==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/cdk": "21.2.2", + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", + "@angular/forms": "^21.0.0 || ^22.0.0", + "@angular/platform-browser": "^21.0.0 || ^22.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, + "node_modules/@angular/material-moment-adapter": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-21.2.2.tgz", + "integrity": "sha512-j5jIbnxaghmvpNMuy37qzVbJWbNJ/k224b1VaGKiOoEiwKfLHnQghsHDirXUDtAxT0rBLNRH4zwN8SqLjp/RTg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "tslib": "^2.3.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/core": "^21.0.0 || ^22.0.0", + "@angular/material": "21.2.2", + "moment": "^2.18.1" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "dev": true, + "node_modules/@angular/platform-browser": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.2.4.tgz", + "integrity": "sha512-1A9e/cQVu+3BkRCktLcO3RZGuw8NOTHw1frUUrpAz+iMyvIT4sDRFbL+U1g8qmOCZqRNC1Pi1HZfZ1kl6kvrcQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "tslib": "^2.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/animations": "21.2.4", + "@angular/common": "21.2.4", + "@angular/core": "21.2.4" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "dev": true, + "node_modules/@angular/platform-browser-dynamic": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-21.2.4.tgz", + "integrity": "sha512-LRJLnGh4rdgD0+S5xuDd4YRm5bV8WP2e6F1Pe5rIr6N4V9ofgpB0/uOjYy9se99FJZjoyPnpxaKsp8+XA753Zg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/common": "21.2.4", + "@angular/compiler": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, + "node_modules/@angular/router": { + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.2.4.tgz", + "integrity": "sha512-OjWze4XT8i2MThcBXMv7ru1k6/5L6QYZbcXuseqimFCHm2avEJ+mXPovY066fMBZJhqbXdjB82OhHAWkIHjglQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "tslib": "^2.3.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/common": "21.2.4", + "@angular/core": "21.2.4", + "@angular/platform-browser": "21.2.4", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", "license": "MIT", + "optional": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/types": "^7.27.3" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" + "ms": "^2.1.3" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, + "license": "MIT" + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.14", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.7", - "dev": true, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "dev": true, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { - "version": "7.20.7", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "dev": true, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "dev": true, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "dev": true, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "dev": true, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "dev": true, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/types": "^7.29.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "parser": "bin/babel-parser.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2422,55 +3088,67 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", + "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-syntax-decorators": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2479,14 +3157,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - }, "engines": { "node": ">=6.9.0" }, @@ -2494,53 +3170,53 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.10", - "dev": true, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -2549,13 +3225,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz", + "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2564,12 +3241,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2578,12 +3257,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2592,41 +3273,40 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -2635,2913 +3315,3463 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { - "version": "7.18.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.18.9", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.4" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.18.10", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse": { - "version": "7.20.13", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.14", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/types": { - "version": "7.20.7", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, - "license": "MIT" - }, - "node_modules/@braintree/sanitize-url": { - "version": "6.0.2", - "license": "MIT" - }, - "node_modules/@colors/colors": { - "version": "1.5.0", "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, "engines": { - "node": ">=0.1.90" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.12.0" } }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.3" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0" } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^12 || ^14 || >=16" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.1.1", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, - "license": "CC0-1.0", - "engines": { - "node": "^14 || ^16 || >=18" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.4", - "postcss-selector-parser": "^6.0.10" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/request": { - "version": "2.88.11", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/request/node_modules/qs": { - "version": "6.10.4", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "side-channel": "^1.0.4" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { - "node": ">=0.6" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor": { - "version": "5.16.1", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.0.1", - "@babel/generator": "^7.17.9", - "@babel/parser": "^7.13.0", - "@babel/traverse": "^7.17.9", - "bluebird": "3.7.1", - "debug": "^4.3.2", - "fs-extra": "^10.1.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "md5": "2.3.0", - "source-map": "^0.6.1", - "webpack-virtual-modules": "^0.4.4" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.1", - "@babel/preset-env": "^7.0.0", - "babel-loader": "^8.0.2", - "webpack": "^4 || ^5" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "@babel/helper-plugin-utils": "^7.28.6" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=8.9.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/webpack-preprocessor/node_modules/universalify": { - "version": "2.0.0", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "dev": true, "license": "MIT", "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=10.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/helper-plugin-utils": "^7.28.6" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@babel/helper-plugin-utils": "^7.28.6" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { - "node": "*" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/analytics": { - "version": "0.9.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/analytics-compat": { - "version": "0.2.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/analytics": "0.9.1", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/analytics-types": { - "version": "0.8.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/app": { - "version": "0.9.1", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/app-check": { - "version": "0.6.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/app-check-compat": { - "version": "0.3.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/app-check": "0.6.1", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/app-check-interop-types": { - "version": "0.2.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/app-check-types": { - "version": "0.5.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/app-compat": { - "version": "0.2.1", - "license": "Apache-2.0", - "dependencies": { - "@firebase/app": "0.9.1", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/app-types": { - "version": "0.9.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/auth": { - "version": "0.21.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0" } }, - "node_modules/@firebase/auth-compat": { - "version": "0.3.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/auth": "0.21.1", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/auth-compat/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", + "semver": "^6.3.1" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/auth-interop-types": { - "version": "0.2.1", - "license": "Apache-2.0" - }, - "node_modules/@firebase/auth-types": { - "version": "0.12.0", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@firebase/auth/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/component": { - "version": "0.6.1", - "license": "Apache-2.0", - "dependencies": { - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/database": { - "version": "0.14.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/database-compat": { - "version": "0.3.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/database": "0.14.1", - "@firebase/database-types": "0.10.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/database-types": { - "version": "0.10.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.0" + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/firestore": { - "version": "3.8.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "@firebase/webchannel-wrapper": "0.9.0", - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.6.13", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=10.10.0" + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/firestore-compat": { - "version": "0.3.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/firestore": "3.8.1", - "@firebase/firestore-types": "2.5.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/firestore-types": { - "version": "2.5.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/firestore/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/functions": { - "version": "0.9.1", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/app-check-interop-types": "0.2.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.1", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, - "peerDependencies": { - "@firebase/app": "0.x" - } - }, - "node_modules/@firebase/functions-compat": { - "version": "0.3.1", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/functions": "0.9.1", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/functions-types": { - "version": "0.6.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/functions/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "@babel/core": "^7.0.0" } }, - "node_modules/@firebase/installations": { - "version": "0.6.1", - "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/installations-compat": { - "version": "0.2.1", - "license": "Apache-2.0", + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/installations-types": { - "version": "0.5.0", - "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@firebase/logger": { - "version": "0.4.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@firebase/messaging": { - "version": "0.12.1", - "license": "Apache-2.0", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, "peerDependencies": { - "@firebase/app": "0.x" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@firebase/messaging-compat": { - "version": "0.2.1", - "license": "Apache-2.0", + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/messaging": "0.12.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@firebase/app-compat": "0.x" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.0", - "license": "Apache-2.0" + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@firebase/performance": { - "version": "0.6.1", - "license": "Apache-2.0", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, - "peerDependencies": { - "@firebase/app": "0.x" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@firebase/performance-compat": { - "version": "0.2.1", - "license": "Apache-2.0", + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.1", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@firebase/performance-types": { - "version": "0.2.0", - "license": "Apache-2.0" - }, - "node_modules/@firebase/remote-config": { - "version": "0.4.1", - "license": "Apache-2.0", + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, - "peerDependencies": { - "@firebase/app": "0.x" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@firebase/remote-config-compat": { - "version": "0.2.1", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT", + "optional": true + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", + "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", "license": "Apache-2.0", + "optional": true, "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.1", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" } }, - "node_modules/@firebase/remote-config-types": { - "version": "0.3.0", - "license": "Apache-2.0" + "node_modules/@chevrotain/cst-dts-gen/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT", + "optional": true }, - "node_modules/@firebase/storage": { - "version": "0.10.1", + "node_modules/@chevrotain/gast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", "license": "Apache-2.0", + "optional": true, "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app": "0.x" + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" } }, - "node_modules/@firebase/storage-compat": { - "version": "0.2.1", + "node_modules/@chevrotain/gast/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT", + "optional": true + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", "license": "Apache-2.0", - "dependencies": { - "@firebase/component": "0.6.1", - "@firebase/storage": "0.10.1", - "@firebase/storage-types": "0.7.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } + "optional": true }, - "node_modules/@firebase/storage-types": { - "version": "0.7.0", + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", "license": "Apache-2.0", - "peerDependencies": { - "@firebase/app-types": "0.x", - "@firebase/util": "1.x" - } + "optional": true }, - "node_modules/@firebase/storage/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@chevrotain/utils": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "optional": true, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@firebase/util": { - "version": "1.9.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "node": ">=0.1.90" } }, - "node_modules/@firebase/webchannel-wrapper": { - "version": "0.9.0", - "license": "Apache-2.0" - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", "dev": true, - "license": "MIT" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.7.3", - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": "^8.13.0 || >=10.10.0" + "node": ">=12" } }, - "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.4", - "license": "Apache-2.0", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "dev": true, + "license": "MIT", "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@grpc/grpc-js/node_modules/protobufjs": { - "version": "7.2.0", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" + "node_modules/@cypress/request": { + "version": "2.88.11", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.10.3", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" }, "engines": { - "node": ">=12.0.0" + "node": ">= 6" } }, - "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { - "version": "5.2.1", - "license": "Apache-2.0" - }, - "node_modules/@grpc/grpc-js/node_modules/yargs": { - "version": "16.2.0", - "license": "MIT", + "node_modules/@cypress/request/node_modules/qs": { + "version": "6.10.4", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { - "version": "20.2.9", - "license": "ISC", - "engines": { - "node": ">=10" + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" } }, - "node_modules/@grpc/proto-loader": { - "version": "0.6.13", - "license": "Apache-2.0", + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^6.11.3", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" + "ms": "^2.1.1" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs": { - "version": "16.2.0", + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "dev": true, "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, "engines": { - "node": ">=10" + "node": ">=14.17.0" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { - "version": "20.2.9", - "license": "ISC", - "engines": { - "node": ">=10" + "node_modules/@emnapi/core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" } }, - "node_modules/@highcharts/map-collection": { - "version": "2.0.1", - "license": "SEE LICENSE IN LICENSE.md" + "node_modules/@emnapi/runtime": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "dev": true, - "license": "Apache-2.0", + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" + "tslib": "^2.4.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/console": { - "version": "28.1.3", + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=7.0.0" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/core": { - "version": "28.1.3", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/@jest/reporters": { - "version": "28.1.3", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/@jest/test-result": { - "version": "28.1.3", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=7.0.0" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/glob": { - "version": "7.2.3", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/jest-config": { - "version": "28.1.3", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/jest-resolve": { - "version": "28.1.3", + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/jest-worker": { - "version": "28.1.3", + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=18" } }, - "node_modules/@jest/core/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jest/environment": { - "version": "28.1.3", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@jest/expect": { - "version": "28.1.3", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/expect-utils": { - "version": "28.1.3", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^28.0.2" + "type-fest": "^0.20.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/fake-timers": { - "version": "28.1.3", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "argparse": "^2.0.1" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/fake-timers/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "*" } }, - "node_modules/@jest/fake-timers/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/ai": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.9.0.tgz", + "integrity": "sha512-NPvBBuvdGo9x3esnABAucFYmqbBmXvyTMimBq2PCuLZbdANZoHzGlx7vfzbwNDaEtCBq4RGGNMliLIv6bZ+PtA==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@firebase/app-check-interop-types": "0.3.3", + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" } }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/analytics": { + "version": "0.10.20", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.20.tgz", + "integrity": "sha512-adGTNVUWH5q66tI/OQuKLSN6mamPpfYhj0radlH2xt+3eL6NFPtXoOs+ulvs+UsmK27vNFx5FjRDfWk+TyduHg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.7.1", + "@firebase/installations": "0.6.20", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.26", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.26.tgz", + "integrity": "sha512-0j2ruLOoVSwwcXAF53AMoniJKnkwiTjGVfic5LDzqiRkR13vb5j6TXMeix787zbLeQtN/m1883Yv1TxI0gItbA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/analytics": "0.10.20", + "@firebase/analytics-types": "0.8.3", + "@firebase/component": "0.7.1", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.3.tgz", + "integrity": "sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.14.9.tgz", + "integrity": "sha512-3gtUX0e584MYkKBQMgSECMvE1Dwzg+eONefDQ0wxVSe5YMBsZwdN5pL7UapwWBlV8+i8QCztF9TP947tEjZAGA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/app-check": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.11.1.tgz", + "integrity": "sha512-gmKfwQ2k8aUQlOyRshc+fOQLq0OwUmibIZvpuY1RDNu2ho0aTMlwxOuEiJeYOs7AxzhSx7gnXPFNsXCFbnvXUQ==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/app-check-compat": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.4.1.tgz", + "integrity": "sha512-yjSvSl5B1u4CirnxhzirN1uiTRCRfx+/qtfbyeyI+8Cx8Cw1RWAIO/OqytPSVwLYbJJ1vEC3EHfxazRaMoWKaA==", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@firebase/app-check": "0.11.1", + "@firebase/app-check-types": "0.5.3", + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/globals": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz", + "integrity": "sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.3.tgz", + "integrity": "sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-compat": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.9.tgz", + "integrity": "sha512-e5LzqjO69/N2z7XcJeuMzIp4wWnW696dQeaHAUpQvGk89gIWHAIvG6W+mA3UotGW6jBoqdppEJ9DnuwbcBByug==", + "license": "Apache-2.0", "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" + "@firebase/app": "0.14.9", + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/reporters": { - "version": "28.1.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/app-types": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.3.tgz", + "integrity": "sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.12.1.tgz", + "integrity": "sha512-nXKj7d5bMBlnq6XpcQQpmnSVwEeHBkoVbY/+Wk0P1ebLSICoH4XPtvKOFlXKfIHmcS84mLQ99fk3njlDGKSDtw==", + "license": "Apache-2.0", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.1", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", - "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^2.2.0" }, "peerDependenciesMeta": { - "node-notifier": { + "@react-native-async-storage/async-storage": { "optional": true } } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/auth-compat": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.6.3.tgz", + "integrity": "sha512-nHOkupcYuGVxI1AJJ/OBhLPaRokbP14Gq4nkkoVvf1yvuREEWqdnrYB/CdsSnPxHMAnn5wJIKngxBF9jNX7s/Q==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@firebase/auth": "1.12.1", + "@firebase/auth-types": "0.13.0", + "@firebase/component": "0.7.1", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz", + "integrity": "sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth-types": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.13.0.tgz", + "integrity": "sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", + "node_modules/@firebase/component": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.7.1.tgz", + "integrity": "sha512-mFzsm7CLHR60o08S23iLUY8m/i6kLpOK87wdEFPLhdlCahaxKmWOwSVGiWoENYSmFJJoDhrR3gKSCxz7ENdIww==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=10" + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/data-connect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.4.0.tgz", + "integrity": "sha512-vLXM6WHNIR3VtEeYNUb/5GTsUOyl3Of4iWNZHBe1i9f88sYFnxybJNWVBjvJ7flhCyF8UdxGpzWcUnv6F5vGfg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/auth-interop-types": "0.2.4", + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/database": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.1.1.tgz", + "integrity": "sha512-LwIXe8+mVHY5LBPulWECOOIEXDiatyECp/BOlu0gOhe+WOcKjWHROaCbLlkFTgHMY7RHr5MOxkLP/tltWAH3dA==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@firebase/app-check-interop-types": "0.3.3", + "@firebase/auth-interop-types": "0.2.4", + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "node_modules/@firebase/database-compat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.1.1.tgz", + "integrity": "sha512-heAEVZ9Z8c8PnBUcmGh91JHX0cXcVa1yESW/xkLuwaX7idRFyLiN8sl73KXpR8ZArGoPXVQDanBnk6SQiekRCQ==", + "license": "Apache-2.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@firebase/component": "0.7.1", + "@firebase/database": "1.1.1", + "@firebase/database-types": "1.0.17", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=20.0.0" } }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@firebase/database-types": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.17.tgz", + "integrity": "sha512-4eWaM5fW3qEIHjGzfi3cf0Jpqi1xQsAdT6rSDE1RZPrWu8oGjgrq6ybMjobtyHQFgwGCykBm4YM89qDzc+uG/w==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-types": "0.9.3", + "@firebase/util": "1.14.0" } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/firestore": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.12.0.tgz", + "integrity": "sha512-PM47OyiiAAoAMB8kkq4Je14mTciaRoAPDd3ng3Ckqz9i2TX9D9LfxIRcNzP/OxzNV4uBKRq6lXoOggkJBQR3Gw==", + "license": "Apache-2.0", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "@firebase/webchannel-wrapper": "1.0.5", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/firestore-compat": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.6.tgz", + "integrity": "sha512-NgVyR4hHHN2FvSNQOtbgBOuVsEdD/in30d9FKbEvvITiAChrBN2nBstmhfjI4EOTnHaP8zigwvkNYFI9yKGAkQ==", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@firebase/component": "0.7.1", + "@firebase/firestore": "4.12.0", + "@firebase/firestore-types": "3.0.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=10" + "node": ">=20.0.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", + "node_modules/@firebase/firestore-types": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.3.tgz", + "integrity": "sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.13.2.tgz", + "integrity": "sha512-tHduUD+DeokM3NB1QbHCvEMoL16e8Z8JSkmuVA4ROoJKPxHn8ibnecHPO2e3nVCJR1D9OjuKvxz4gksfq92/ZQ==", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@firebase/app-check-interop-types": "0.3.3", + "@firebase/auth-interop-types": "0.2.4", + "@firebase/component": "0.7.1", + "@firebase/messaging-interop-types": "0.2.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "*" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/functions-compat": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.4.2.tgz", + "integrity": "sha512-YNxgnezvZDkqxqXa6cT7/oTeD4WXbxgIP7qZp4LFnathQv5o2omM6EoIhXiT9Ie5AoQDcIhG9Y3/dj+DFJGaGQ==", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@firebase/component": "0.7.1", + "@firebase/functions": "0.13.2", + "@firebase/functions-types": "0.6.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/functions-types": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.3.tgz", + "integrity": "sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/installations": { + "version": "0.6.20", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.20.tgz", + "integrity": "sha512-LOzvR7XHPbhS0YB5ANXhqXB5qZlntPpwU/4KFwhSNpXNsGk/sBQ9g5hepi0y0/MfenJLe2v7t644iGOOElQaHQ==", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@firebase/component": "0.7.1", + "@firebase/util": "1.14.0", + "idb": "7.1.1", + "tslib": "^2.1.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "dev": true, - "license": "MIT", + "node_modules/@firebase/installations-compat": { + "version": "0.2.20", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.20.tgz", + "integrity": "sha512-9C9pL/DIEGucmoPj8PlZTnztbX3nhNj5RTYVpUM7wQq/UlHywaYv99969JU/WHLvi9ptzIogXYS9d1eZ6XFe9g==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@firebase/component": "0.7.1", + "@firebase/installations": "0.6.20", + "@firebase/installations-types": "0.5.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/test-result": { - "version": "28.1.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/installations-types": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.3.tgz", + "integrity": "sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.5.0.tgz", + "integrity": "sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==", + "license": "Apache-2.0", "dependencies": { - "@jest/console": "^28.1.1", - "@jest/types": "^28.1.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/messaging": { + "version": "0.12.24", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.24.tgz", + "integrity": "sha512-UtKoubegAhHyehcB7iQjvQ8OVITThPbbWk3g2/2ze42PrQr6oe6OmCElYQkBrE5RDCeMTNucXejbdulrQ2XwVg==", + "license": "Apache-2.0", "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" + "@firebase/component": "0.7.1", + "@firebase/installations": "0.6.20", + "@firebase/messaging-interop-types": "0.2.3", + "@firebase/util": "1.14.0", + "idb": "7.1.1", + "tslib": "^2.1.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/test-sequencer/node_modules/@jest/test-result": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/messaging-compat": { + "version": "0.2.24", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.24.tgz", + "integrity": "sha512-wXH8FrKbJvFuFe6v98TBhAtvgknxKIZtGM/wCVsfpOGmaAE80bD8tBxztl+uochjnFb9plihkd6mC4y7sZXSpA==", + "license": "Apache-2.0", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@firebase/component": "0.7.1", + "@firebase/messaging": "0.12.24", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/transform": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.3.tgz", + "integrity": "sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/performance": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.7.10.tgz", + "integrity": "sha512-8nRFld+Ntzp5cLKzZuG9g+kBaSn8Ks9dmn87UQGNFDygbmR6ebd8WawauEXiJjMj1n70ypkvAOdE+lzeyfXtGA==", + "license": "Apache-2.0", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "@firebase/component": "0.7.1", + "@firebase/installations": "0.6.20", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0", + "web-vitals": "^4.2.4" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/performance-compat": { + "version": "0.2.23", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.23.tgz", + "integrity": "sha512-c7qOAGBUAOpIuUlHu1axWcrCVtIYKPMhH0lMnoCDWnPwn1HcPuPUBVTWETbC7UWw71RMJF8DpirfWXzMWJQfgA==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/performance": "0.7.10", + "@firebase/performance-types": "0.2.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", + "node_modules/@firebase/performance-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.3.tgz", + "integrity": "sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/remote-config": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.8.1.tgz", + "integrity": "sha512-L86TReBnPiiJOWd7k9iaiE9f7rHtMpjAoYN0fH2ey2ZRzsOChHV0s5sYf1+IIUYzplzsE46pjlmAUNkRRKwHSQ==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@firebase/component": "0.7.1", + "@firebase/installations": "0.6.20", + "@firebase/logger": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.22.tgz", + "integrity": "sha512-uW/eNKKtRBot2gnCC5mnoy5Voo2wMzZuQ7dwqqGHU176fO9zFgMwKiRzk+aaC99NLrFk1KOmr0ZVheD+zdJmjQ==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@firebase/component": "0.7.1", + "@firebase/logger": "0.5.0", + "@firebase/remote-config": "0.8.1", + "@firebase/remote-config-types": "0.5.0", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@firebase/remote-config-types": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.5.0.tgz", + "integrity": "sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==", + "license": "Apache-2.0" }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/@firebase/storage": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.14.1.tgz", + "integrity": "sha512-uIpYgBBsv1vIET+5xV20XT7wwqV+H4GFp6PBzfmLUcEgguS4SWNFof56Z3uOC2lNDh0KDda1UflYq2VwD9Nefw==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@firebase/component": "0.7.1", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/storage-compat": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.4.1.tgz", + "integrity": "sha512-bgl3FHHfXAmBgzIK/Fps6Xyv2HiAQlSTov07CBL+RGGhrC5YIk4lruS8JVIC+UkujRdYvnf8cpQFGn2RCilJ/A==", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@firebase/component": "0.7.1", + "@firebase/storage": "0.14.1", + "@firebase/storage-types": "0.8.3", + "@firebase/util": "1.14.0", + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" } }, - "node_modules/@jest/types": { - "version": "28.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node_modules/@firebase/storage-types": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.3.tgz", + "integrity": "sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", + "node_modules/@firebase/util": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.14.0.tgz", + "integrity": "sha512-/gnejm7MKkVIXnSJGpc9L2CvvvzJvtDPeAEq5jAwgVlf/PeNxot+THx/bpD20wQ8uL5sz0xqgXy1nisOYMU+mw==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "tslib": "^2.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=20.0.0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@firebase/webchannel-wrapper": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.5.tgz", + "integrity": "sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==", + "license": "Apache-2.0" + }, + "node_modules/@gar/promise-retry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz", + "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "retry": "^0.13.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/@grpc/grpc-js": { + "version": "1.9.15", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", + "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" }, "engines": { - "node": ">=7.0.0" + "node": "^8.13.0 || >=10.10.0" } }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@harperfast/extended-iterable": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@harperfast/extended-iterable/-/extended-iterable-1.0.3.tgz", + "integrity": "sha512-sSAYhQca3rDWtQUHSAPeO7axFIUJOI6hn1gjRC5APVE1a90tuyT8f5WIgRsFhhWA7htNkju2veB9eWL6YHi/Lw==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/@highcharts/map-collection": { + "version": "2.0.1", + "license": "SEE LICENSE IN LICENSE.md" + }, + "node_modules/@hono/node-server": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">=10.10.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "license": "MIT", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6.0.0" + "node": "*" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "optional": true }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", "license": "MIT", + "optional": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" } }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@materia-ui/ngx-monaco-editor": { - "version": "6.0.0", "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "@angular/core": ">=13.0.0", - "rxjs": ">=6.0.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@ngrx/component": { - "version": "14.2.0", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@ngrx/component-store": { - "version": "14.2.0", + "node_modules/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@angular/core": "^14.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@ngrx/effects": { - "version": "14.0.2", + "node_modules/@inquirer/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@angular/core": "^14.0.0", - "@ngrx/store": "14.0.2", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@ngrx/entity": { - "version": "14.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" + "node_modules/@inquirer/core/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" }, - "peerDependencies": { - "@angular/core": "^14.0.0", - "@ngrx/store": "14.0.2", - "rxjs": "^6.5.3 || ^7.5.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@ngrx/router-store": { - "version": "14.0.2", + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/router": "^14.0.0", - "@ngrx/store": "14.0.2", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": ">=8" } }, - "node_modules/@ngrx/store": { - "version": "14.0.2", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "@angular/core": "^14.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@ngrx/store-devtools": { - "version": "14.0.2", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "@ngrx/store": "14.0.2", - "rxjs": "^6.5.3 || ^7.5.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@ngtools/webpack": { - "version": "14.2.3", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18" }, "peerDependencies": { - "@angular/compiler-cli": "^14.0.0", - "typescript": ">=4.6.2 <4.9", - "webpack": "^5.54.0" + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/fs": { - "version": "2.1.2", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/git": { - "version": "3.0.2", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.14.1", + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/node-gyp": { - "version": "2.0.0", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@npmcli/run-script": { - "version": "4.2.1", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@nrwl/angular": { - "version": "15.0.3", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@angular-devkit/schematics": "~14.2.0", - "@nrwl/cypress": "15.0.3", - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/storybook": "15.0.3", - "@nrwl/webpack": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "@schematics/angular": "~14.2.0", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "http-server": "^14.1.0", - "ignore": "^5.0.4", - "magic-string": "~0.26.2", - "minimatch": "3.0.5", - "semver": "7.3.4", - "ts-node": "10.9.1", - "tsconfig-paths": "^3.9.0", - "tslib": "^2.3.0", - "webpack": "^5.58.1", - "webpack-merge": "5.7.3" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@nrwl/angular/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/angular/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/@nrwl/angular/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nrwl/angular/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ansi-regex": "^6.2.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@nrwl/angular/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@nrwl/angular/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dev": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.4" }, "engines": { - "node": ">=10" + "node": ">=18.0.0" } }, - "node_modules/@nrwl/angular/node_modules/minimatch": { - "version": "3.0.5", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/angular/node_modules/semver": { - "version": "7.3.4", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/angular/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/angular/node_modules/webpack-merge": { - "version": "5.7.3", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@nrwl/angular/node_modules/yallist": { + "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@nrwl/cli": { - "version": "15.0.3", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "nx": "15.0.3" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/cypress": { - "version": "15.0.3", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.0.1", - "@babel/preset-env": "^7.0.0", - "@cypress/webpack-preprocessor": "^5.12.0", - "@nrwl/devkit": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "babel-loader": "^8.0.2", - "chalk": "4.1.0", - "dotenv": "~10.0.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "semver": "7.3.4", - "ts-loader": "^9.3.1", - "tsconfig-paths-webpack-plugin": "3.5.2", - "tslib": "^2.3.0", - "webpack": "^4 || ^5", - "webpack-node-externals": "^3.0.0" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "cypress": ">= 3 < 11" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "cypress": { + "node-notifier": { "optional": true } } }, - "node_modules/@nrwl/cypress/node_modules/ansi-styles": { + "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5554,8 +6784,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/cypress/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -5569,8 +6801,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/cypress/node_modules/color-convert": { + "node_modules/@jest/core/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5580,124 +6814,198 @@ "node": ">=7.0.0" } }, - "node_modules/@nrwl/cypress/node_modules/has-flag": { + "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@nrwl/cypress/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@nrwl/cypress/node_modules/semver": { - "version": "7.3.4", + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/cypress/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/cypress/node_modules/yallist": { - "version": "4.0.0", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@nrwl/devkit": { - "version": "15.0.3", + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { - "@phenomnomnominal/tsquery": "4.1.1", - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.3.4", - "tslib": "^2.3.0" + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "peerDependencies": { - "nx": ">= 14 <= 16" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/devkit/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/devkit/node_modules/semver": { - "version": "7.3.4", + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nrwl/devkit/node_modules/yallist": { - "version": "4.0.0", + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } }, - "node_modules/@nrwl/eslint-plugin-nx": { - "version": "15.0.3", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@typescript-eslint/utils": "^5.36.1", - "chalk": "4.1.0", - "confusing-browser-globals": "^1.0.9", - "semver": "7.3.4" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.29.0", - "eslint-config-prettier": "^8.1.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "eslint-config-prettier": { + "node-notifier": { "optional": true } } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/ansi-styles": { + "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5710,8 +7018,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -5725,8 +7046,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/color-convert": { + "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5736,155 +7059,185 @@ "node": ">=7.0.0" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/has-flag": { + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "yallist": "^4.0.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { "node": ">=10" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/semver": { - "version": "7.3.4", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@nrwl/eslint-plugin-nx/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@nrwl/jest": { - "version": "15.0.3", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/reporters": "28.1.1", - "@jest/test-result": "28.1.1", - "@nrwl/devkit": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "chalk": "4.1.0", - "dotenv": "~10.0.0", - "identity-obj-proxy": "3.0.0", - "jest-config": "28.1.1", - "jest-resolve": "28.1.1", - "jest-util": "28.1.1", - "resolve.exports": "1.1.0", - "tslib": "^2.3.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/@nrwl/jest/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/jest/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/jest/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nrwl/jest/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nrwl/jest/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@nrwl/js": { - "version": "15.0.3", + "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "license": "MIT", - "dependencies": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@parcel/watcher": "2.0.4", - "chalk": "4.1.0", - "fast-glob": "3.2.7", - "fs-extra": "^10.1.0", - "ignore": "^5.0.4", - "js-tokens": "^4.0.0", - "minimatch": "3.0.5", - "source-map-support": "0.5.19", - "tree-kill": "1.2.2" - } + "license": "MIT" }, - "node_modules/@nrwl/js/node_modules/ansi-styles": { + "node_modules/@jest/snapshot-utils/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -5897,17 +7250,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/js/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@nrwl/js/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@jest/snapshot-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -5921,8 +7267,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/js/node_modules/color-convert": { + "node_modules/@jest/snapshot-utils/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5932,224 +7280,201 @@ "node": ">=7.0.0" } }, - "node_modules/@nrwl/js/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/@jest/snapshot-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/@nrwl/js/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@jest/snapshot-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@nrwl/js/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/js/node_modules/minimatch": { - "version": "3.0.5", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/js/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/js/node_modules/source-map-support": { - "version": "0.5.19", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/@nrwl/js/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@nrwl/js/node_modules/universalify": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/linter": { - "version": "15.0.3", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "nx": "15.0.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "eslint": "^8.0.0" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@nrwl/nx-cloud": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-16.2.0.tgz", - "integrity": "sha512-NNSXBxI6DRndO5SRtvqi9qtTdknbqUNHIJO511S61YmdeQM18OflUB7ejyRQvQVhkB+XpGutSIp/BJPLocJf+w==", - "dev": true, - "dependencies": { - "nx-cloud": "16.2.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/storybook": { - "version": "15.0.3", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/cypress": "15.0.3", - "@nrwl/devkit": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "dotenv": "~10.0.0", - "semver": "7.3.4" - } - }, - "node_modules/@nrwl/storybook/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/storybook/node_modules/semver": { - "version": "7.3.4", + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/@nrwl/storybook/node_modules/yallist": { + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@nrwl/tao": { - "version": "15.0.3", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "nx": "15.0.3" + "has-flag": "^4.0.0" }, - "bin": { - "tao": "index.js" + "engines": { + "node": ">=8" } }, - "node_modules/@nrwl/webpack": { - "version": "15.0.3", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "15.0.3", - "@nrwl/js": "15.0.3", - "@nrwl/workspace": "15.0.3", - "autoprefixer": "^10.4.9", - "babel-loader": "^8.2.2", - "browserslist": "^4.16.6", - "caniuse-lite": "^1.0.30001394", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "copy-webpack-plugin": "^10.2.4", - "css-minimizer-webpack-plugin": "^3.4.1", - "dotenv": "~10.0.0", - "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "fs-extra": "^10.1.0", - "ignore": "^5.0.4", - "less": "3.12.2", - "less-loader": "^10.1.0", - "license-webpack-plugin": "^4.0.2", - "loader-utils": "1.2.3", - "mini-css-extract-plugin": "~2.4.7", - "parse5": "4.0.0", - "parse5-html-rewriting-stream": "6.0.1", - "postcss": "^8.4.14", - "postcss-import": "~14.1.0", - "postcss-loader": "^6.1.1", - "raw-loader": "^4.0.2", - "rxjs": "^6.5.4", - "sass": "^1.42.1", - "sass-loader": "^12.2.0", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.0", - "stylus": "^0.55.0", - "stylus-loader": "^6.2.0", - "terser-webpack-plugin": "^5.3.3", - "ts-loader": "^9.3.1", - "ts-node": "10.9.1", - "tsconfig-paths": "^3.9.0", - "tsconfig-paths-webpack-plugin": "3.5.2", - "tslib": "^2.3.0", - "webpack": "^5.58.1", - "webpack-dev-server": "^4.9.3", - "webpack-merge": "^5.8.0", - "webpack-node-externals": "^3.0.0", - "webpack-sources": "^3.2.3", - "webpack-subresource-integrity": "^5.1.0" + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nrwl/webpack/node_modules/ansi-styles": { + "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -6162,28 +7487,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@nrwl/webpack/node_modules/array-union": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@nrwl/webpack/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@nrwl/webpack/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -6197,8 +7504,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nrwl/webpack/node_modules/color-convert": { + "node_modules/@jest/types/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6208,3493 +7517,4822 @@ "node": ">=7.0.0" } }, - "node_modules/@nrwl/webpack/node_modules/copy-webpack-plugin": { - "version": "10.2.4", + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 12.20.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "node": ">=8" } }, - "node_modules/@nrwl/webpack/node_modules/debug": { - "version": "3.1.0", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@nrwl/webpack/node_modules/emojis-list": { - "version": "2.1.0", - "dev": true, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=6.0.0" } }, - "node_modules/@nrwl/webpack/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@nrwl/webpack/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "*" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10.13.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/globby": { - "version": "12.2.0", + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.11.tgz", + "integrity": "sha512-wThHjzUp01ImIjfCwhs+UnFkeGPFAymwLEkOtenHewaKe2pTP12p6r1UuwikA9NEvNf9Vlck92r8fb8n/MWM5w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.11.tgz", + "integrity": "sha512-ZYlF3XbMayyp97xEN8ZvYutU99PCHjM64mMZvnCseXkCJXJDVLAwlF8Q/7q/xiWQRsv3pQBj1WXHd9eEyYcaCQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@nrwl/webpack/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "thingies": "^2.5.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@nrwl/webpack/node_modules/json5": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" + "node": ">=10.0" }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@nrwl/webpack/node_modules/jsonfile": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/less": { - "version": "3.12.2", + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.11.tgz", + "integrity": "sha512-D65YrnP6wRuZyEWoSFnBJSr5zARVpVBGctnhie4rCsMuGXNzX7IHKaOt85/Aj7SSoG1N2+/xlNjWmkLvZ2H3Tg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^1.10.0" - }, - "bin": { - "lessc": "bin/lessc" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" }, "engines": { - "node": ">=6" + "node": ">=10.0" }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/less-loader": { - "version": "10.2.0", + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.11.tgz", + "integrity": "sha512-CNmt3a0zMCIhniFLXtzPWuUxXFU+U+2VyQiIrgt/rRVeEJNrMQUABaRbVxR0Ouw1LyR9RjaEkPM6nYpED+y43A==", "dev": true, - "license": "MIT", - "dependencies": { - "klona": "^2.0.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/@nrwl/webpack/node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/less/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/@nrwl/webpack/node_modules/loader-utils": { - "version": "1.2.3", + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.11.tgz", + "integrity": "sha512-5OzGdvJDgZVo+xXWEYo72u81zpOWlxlbG4d4nL+hSiW+LKlua/dldNgPrpWxtvhgyntmdFQad2UTxFyGjJAGhA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11" }, "engines": { - "node": ">=4.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/make-dir": { - "version": "2.1.0", + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.11.tgz", + "integrity": "sha512-JADOZFDA3wRfsuxkT0+MYc4F9hJO2PYDaY66kRTG6NqGX3+bqmKu66YFYAbII/tEmQWPZeHoClUB23rtQM9UPg==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@jsonjoy.com/fs-node-builtins": "4.56.11" }, "engines": { - "node": ">=6" - } - }, - "node_modules/@nrwl/webpack/node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/mini-css-extract-plugin": { - "version": "2.4.7", + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.11.tgz", + "integrity": "sha512-rnaKRgCRIn8JGTjxhS0JPE38YM3Pj/H7SW4/tglhIPbfKEkky7dpPayNKV2qy25SZSL15oFVgH/62dMZ/z7cyA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "schema-utils": "^4.0.0" + "@jsonjoy.com/fs-node-utils": "4.56.11", + "tree-dump": "^1.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "webpack": "^5.0.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.11.tgz", + "integrity": "sha512-IIldPX+cIRQuUol9fQzSS3hqyECxVpYMJQMqdU3dCKZFRzEl1rkIkw4P6y7Oh493sI7YdxZlKr/yWdzEWZ1wGQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" }, "engines": { - "node": "*" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@nrwl/webpack/node_modules/parse5": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@nrwl/webpack/node_modules/pify": { - "version": "4.0.1", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "engines": { - "node": ">=6" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/postcss-import": { - "version": "14.1.0", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "postcss": "^8.0.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/postcss-loader": { - "version": "6.2.1", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" + "@jsonjoy.com/util": "17.67.0" }, "engines": { - "npm": ">=2.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/@nrwl/webpack/node_modules/sass-loader": { - "version": "12.6.0", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/slash": { - "version": "4.0.0", + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/source-map-loader": { - "version": "3.0.2", + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "webpack": "^5.0.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/stylus": { - "version": "0.55.0", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "css": "^3.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" }, "engines": { - "node": "*" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/stylus-loader": { - "version": "6.2.0", + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.7", - "klona": "^2.0.4", - "normalize-path": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 12.13.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" + "tslib": "2" } }, - "node_modules/@nrwl/webpack/node_modules/stylus/node_modules/semver": { - "version": "6.3.0", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } + "license": "MIT" }, - "node_modules/@nrwl/webpack/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz", + "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@inquirer/type": "^3.0.8" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8", + "listr2": "9.0.5" } }, - "node_modules/@nrwl/webpack/node_modules/universalify": { - "version": "2.0.0", + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.1.tgz", + "integrity": "sha512-tpfN4kKrrMpQ+If1l8bhmoNkECJi0iOu6AEdrTJvWVC+32sLxTARX5Rsu579mPImRP9YFWfWgeRQ5oav7zApQQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 10.0.0" + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.1.tgz", + "integrity": "sha512-+a2tTfc3rmWhLAolFUWRgJtpSuu+Fw/yjn4rF406NMxhfjbMuiOUTDRvRlMFV+DzyjkwnokisskHbCWkS3Ly5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.1.tgz", + "integrity": "sha512-0EgcE6reYr8InjD7V37EgXcYrloqpxVPINy3ig1MwDSbl6LF/vXTYRH9OE1Ti1D8YZnB35ZH9aTcdfSb5lql2A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.1.tgz", + "integrity": "sha512-aoERa5B6ywXdyFeYGQ1gbQpkMkDbEo45qVoXE5QpIRavqjnyPwjOulMkmkypkmsbJ5z4Wi0TBztON8agCTG0Vg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.1.tgz", + "integrity": "sha512-SqNDY1+vpji7bh0sFH5wlWyFTOzjbDOl0/kB5RLLYDAFyd/uw3n7wyrmas3rYPpAW7z18lMOi1yKlTPv967E3g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.1.tgz", + "integrity": "sha512-50v0O1Lt37cwrmR9vWZK5hRW0Aw+KEmxJJ75fge/zIYdvNKB/0bSMSVR5Uc2OV9JhosIUyklOmrEvavwNJ8D6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.1.tgz", + "integrity": "sha512-qwosvPyl+zpUlp3gRb7UcJ3H8S28XHCzkv0Y0EgQToXjQP91ZD67EHSCDmaLjtKhe+GVIW5om1KUpzVLA0l6pg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@materia-ui/ngx-monaco-editor": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": ">=13.0.0", + "rxjs": ">=6.0.0" } }, - "node_modules/@nrwl/workspace": { - "version": "15.0.3", + "node_modules/@mermaid-js/parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz", + "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "langium": "^4.0.0" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.26.0.tgz", + "integrity": "sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==", "dev": true, "license": "MIT", "dependencies": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@parcel/watcher": "2.0.4", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^10.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "nx": "15.0.3", - "open": "^8.4.0", - "rxjs": "^6.5.4", - "semver": "7.3.4", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs": "^17.4.0", - "yargs-parser": "21.0.1" + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "prettier": "^2.6.2" + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" }, "peerDependenciesMeta": { - "prettier": { + "@cfworker/json-schema": { "optional": true + }, + "zod": { + "optional": false } } }, - "node_modules/@nrwl/workspace/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/@nrwl/workspace/node_modules/chalk": { - "version": "4.1.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@modelcontextprotocol/sdk/node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": ">=6.6.0" } }, - "node_modules/@nrwl/workspace/node_modules/glob": { - "version": "7.1.4", + "node_modules/@modelcontextprotocol/sdk/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ms": "^2.1.3" }, "engines": { - "node": "*" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@nrwl/workspace/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/@nrwl/workspace/node_modules/jsonfile": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" + "node_modules/@modelcontextprotocol/sdk/node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/minimatch": { - "version": "3.0.5", + "node_modules/@modelcontextprotocol/sdk/node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 0.8" } }, - "node_modules/@nrwl/workspace/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "tslib": "^1.9.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "npm": ">=2.0.0" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", + "node_modules/@modelcontextprotocol/sdk/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, - "license": "0BSD" + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@nrwl/workspace/node_modules/semver": { - "version": "7.3.4", + "node_modules/@modelcontextprotocol/sdk/node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@nrwl/workspace/node_modules/universalify": { - "version": "2.0.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 0.6" } }, - "node_modules/@nrwl/workspace/node_modules/yallist": { - "version": "4.0.0", + "node_modules/@modelcontextprotocol/sdk/node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } }, - "node_modules/@nrwl/workspace/node_modules/yargs-parser": { - "version": "21.0.1", + "node_modules/@modelcontextprotocol/sdk/node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, "engines": { - "node": ">=12" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", + "node_modules/@modelcontextprotocol/sdk/node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">= 18" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/express" } }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "4.1.1", + "node_modules/@modelcontextprotocol/sdk/node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, "license": "MIT", "dependencies": { - "esquery": "^1.0.1" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, - "peerDependencies": { - "typescript": "^3 || ^4" + "engines": { + "node": ">= 0.6" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", + "node_modules/@modern-js/node-bundle-require": { + "version": "2.68.2", + "resolved": "https://registry.npmjs.org/@modern-js/node-bundle-require/-/node-bundle-require-2.68.2.tgz", + "integrity": "sha512-MWk/pYx7KOsp+A/rN0as2ji/Ba8x0m129aqZ3Lj6T6CCTWdz0E/IsamPdTmF9Jnb6whQoBKtWSaLTCQlmCoY0Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@modern-js/utils": "2.68.2", + "@swc/helpers": "^0.5.17", + "esbuild": "0.25.5" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@schematics/angular": { - "version": "14.2.10", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "jsonc-parser": "3.1.0" - }, + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": "^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18" } }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "license": "MIT" + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 10" + "node": ">=18" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10.13.0" + "node": ">=18" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } }, - "node_modules/@types/babel__core": { - "version": "7.20.0", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/babel__traverse": { - "version": "7.18.3", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.3.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/bonjour": { - "version": "3.5.10", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/chart.js": { - "version": "2.9.37", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "moment": "^2.10.2" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/connect": { - "version": "3.4.35", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/debug": { - "version": "4.1.7", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@types/ms": "*" + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/eslint": { - "version": "8.4.10", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/estree": { - "version": "0.0.51", - "license": "MIT" - }, - "node_modules/@types/events": { - "version": "3.0.0", - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.16", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", - "@types/qs": "*", - "@types/serve-static": "*" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.33", + "node_modules/@modern-js/node-bundle-require/node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", + "node_modules/@modern-js/node-bundle-require/node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@types/node": "*" + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/@modern-js/utils": { + "version": "2.68.2", + "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.68.2.tgz", + "integrity": "sha512-revom/i/EhKfI0STNLo/AUbv7gY0JY0Ni2gO6P/Z4cTyZZRgd5j90678YB2DGn+LtmSrEWtUphyDH5Jn1RKjgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.17", + "caniuse-lite": "^1.0.30001520", + "lodash": "^4.17.21", + "rslog": "^1.1.0" } }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.18.4.tgz", + "integrity": "sha512-tYgso9izSinWzzVlsOUsBjW5lPMsvsVp95Jrw5W4Ajg9Un/yTkjOqEqmsMYpiL7drEN2+gPPVYyQ/hUK4QWz8Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@module-federation/sdk": "0.18.4", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", + "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", + "node_modules/@module-federation/cli": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.18.4.tgz", + "integrity": "sha512-31c+2OjtRdsYq7oV+rCoTO9AXizT3D9CNzofZ9EVRGsaS9+H+nJKTkK+pw+IhK0Y8I0HsP+uxgLrazqF0tLbgg==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@modern-js/node-bundle-require": "2.68.2", + "@module-federation/dts-plugin": "0.18.4", + "@module-federation/sdk": "0.18.4", + "chalk": "3.0.0", + "commander": "11.1.0" + }, + "bin": { + "mf": "bin/mf.js" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", + "node_modules/@module-federation/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-report": "*" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/jest": { - "version": "28.1.8", + "node_modules/@module-federation/cli/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^28.0.0", - "pretty-format": "^28.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.14.191", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.6", + "node_modules/@module-federation/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/lodash": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/long": { - "version": "4.0.2", - "license": "MIT" - }, - "node_modules/@types/marked": { - "version": "4.0.8", - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "3.0.1", + "node_modules/@module-federation/cli/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "14.14.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", - "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==" + "license": "MIT", + "engines": { + "node": ">=16" + } }, - "node_modules/@types/parse-json": { + "node_modules/@module-federation/cli/node_modules/has-flag": { "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "@types/express": "*" + "engines": { + "node": ">=8" } }, - "node_modules/@types/serve-static": { - "version": "1.15.0", + "node_modules/@module-federation/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "*", - "@types/node": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sizzle": { - "version": "2.3.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", + "node_modules/@module-federation/data-prefetch": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.18.4.tgz", + "integrity": "sha512-XOHFFO1wrVbjjfP2JRMbht+ILim5Is6Mfb5f2H4I9w0CSaZNRltG0fTnebECB1jgosrd8xaYnrwzXsCI/S53qQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@module-federation/runtime": "0.18.4", + "@module-federation/sdk": "0.18.4", + "fs-extra": "9.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.5.4", + "node_modules/@module-federation/data-prefetch/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/yargs": { - "version": "17.0.22", + "node_modules/@module-federation/data-prefetch/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", + "node_modules/@module-federation/data-prefetch/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.18.4.tgz", + "integrity": "sha512-5FlrajLCypQ8+vEsncgEGpDmxUDG+Ub6ogKOE00e2gMxcYlgcCZNUSn5VbEGdCMcHQmIK2xt3WGQT30/7j2KiQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@module-federation/error-codes": "0.18.4", + "@module-federation/managers": "0.18.4", + "@module-federation/sdk": "0.18.4", + "@module-federation/third-party-dts-extractor": "0.18.4", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.11.0", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "3.0.1", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" }, "peerDependenciesMeta": { - "typescript": { + "vue-tsc": { "optional": true } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", - "debug": "^4.3.4" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=7.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.36.2", + "node_modules/@module-federation/dts-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.36.2", + "node_modules/@module-federation/dts-plugin/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.2", + "node_modules/@module-federation/dts-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.2", + "node_modules/@module-federation/dts-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.36.2", - "eslint-visitor-keys": "^3.3.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 10.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.38.1", + "node_modules/@module-federation/dts-plugin/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.1", + "node_modules/@module-federation/enhanced": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.18.4.tgz", + "integrity": "sha512-KiBw7e+aIBFoO2cmN5hJlKrYv3nUuXsB8yOSVnV9JBAkYNyRZQ9xoSbRCDt8rDRz/ydgEURUIwnGyL2ZU5jZYw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@module-federation/bridge-react-webpack-plugin": "0.18.4", + "@module-federation/cli": "0.18.4", + "@module-federation/data-prefetch": "0.18.4", + "@module-federation/dts-plugin": "0.18.4", + "@module-federation/error-codes": "0.18.4", + "@module-federation/inject-external-runtime-core-plugin": "0.18.4", + "@module-federation/managers": "0.18.4", + "@module-federation/manifest": "0.18.4", + "@module-federation/rspack": "0.18.4", + "@module-federation/runtime-tools": "0.18.4", + "@module-federation/sdk": "0.18.4", + "btoa": "^1.2.1", + "schema-utils": "^4.3.0", + "upath": "2.0.1" }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "bin": { + "mf": "bin/mf.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "typescript": { "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true } } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.36.2", + "node_modules/@module-federation/error-codes": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.18.4.tgz", + "integrity": "sha512-cpLsqL8du9CfTTCKvXbRg93ALF+lklqHnuPryhbwVEQg2eYo6CMoMQ6Eb7kJhLigUABIDujbHD01SvBbASGkeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.18.4.tgz", + "integrity": "sha512-x+IakEXu+ammna2SMKkb1NRDXKxhKckOJIYanNHh1FtG2bvhu8xJplShvStmfO+BUv1n0KODSq89qGVYxFMbGQ==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@module-federation/runtime-tools": "0.18.4" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.36.2", + "node_modules/@module-federation/managers": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.18.4.tgz", + "integrity": "sha512-wJ8wheGNq4vnaLHx17F8Y0L+T9nzO5ijqMxQ7q9Yohm7MGeC5DoSjjurv/afxL6Dg5rGky+kHsYGM4qRTMFXaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/sdk": "0.18.4", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" + } + }, + "node_modules/@module-federation/managers/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" + } + }, + "node_modules/@module-federation/managers/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.36.2", + "node_modules/@module-federation/managers/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 10.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.2", + "node_modules/@module-federation/manifest": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.18.4.tgz", + "integrity": "sha512-1+sfldRpYmJX/SDqG3gWeeBbPb0H0eKyQcedf77TQGwFypVAOJwI39qV0yp3FdjutD7GdJ2TGPBHnGt7AbEvKA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@module-federation/dts-plugin": "0.18.4", + "@module-federation/managers": "0.18.4", + "@module-federation/sdk": "0.18.4", + "chalk": "3.0.0", + "find-pkg": "2.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.2", + "node_modules/@module-federation/manifest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.36.2", - "eslint-visitor-keys": "^3.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.1", + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.38.1", - "eslint-visitor-keys": "^3.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", + "node_modules/@module-federation/manifest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", + "node_modules/@module-federation/manifest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", + "node_modules/@module-federation/manifest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", + "node_modules/@module-federation/node": { + "version": "2.7.36", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.36.tgz", + "integrity": "sha512-RN2R7VRdZpxuFRPJHco5EONAKmAHg7k97cFKGyj6R00lKkMvfBG2jJo6CgXDDomRfZM6ijYFgq1GJwH8boHXSw==", + "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" + "@module-federation/enhanced": "2.2.2", + "@module-federation/runtime": "2.2.2", + "@module-federation/sdk": "2.2.2", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0", + "tapable": "2.3.0" + }, + "peerDependencies": { + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", + "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-2.2.2.tgz", + "integrity": "sha512-zA2BW8B5iY1Jdrdv8U+u2kpaR4sGyO4IxrqnDA0i+v1DJx8L4MAldNaDT7TuEuB23nnfu1Are/szc/73rRcTmw==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@module-federation/sdk": "2.2.2", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", + "node_modules/@module-federation/node/node_modules/@module-federation/cli": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-2.2.2.tgz", + "integrity": "sha512-UGSHE8LHYjbRf1oxghjpq8fYjCVXceU4PbmaLrtX9fPCeIgmwSrNxujvvRMV3KsAfr8F2v4RJMPZH/G3zvoJxw==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@module-federation/dts-plugin": "2.2.2", + "@module-federation/sdk": "2.2.2", + "chalk": "3.0.0", + "commander": "11.1.0", + "jiti": "2.4.2" + }, + "bin": { + "mf": "bin/mf.js" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", + "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-2.2.2.tgz", + "integrity": "sha512-SFyf6zCOSx2g/ztT+Z9LVMZZZ5MbIwoLVpFdpumidlrr0ce6tgkRICo21X4b6i8d+Sb6kPgH0CpeiGsjBh8EBw==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@module-federation/runtime": "2.2.2", + "@module-federation/sdk": "2.2.2", + "fs-extra": "9.1.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", + "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-2.2.2.tgz", + "integrity": "sha512-o9zIGAQAELgVHmhJfGU28lqxYe9ccUL6x72vMC/fDC2WXv9O+ASt0jBDaXktGitR5hJRStdQMU+BQN27DIFSDg==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@module-federation/error-codes": "2.2.2", + "@module-federation/managers": "2.2.2", + "@module-federation/sdk": "2.2.2", + "@module-federation/third-party-dts-extractor": "2.2.2", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.13.5", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", + "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-2.2.2.tgz", + "integrity": "sha512-J15hPFvXs8VoJXCXTq5ocgvy9hBqxX8G6KKg5iogpmY3wT9mSTf4klbpaaZSXwbVURdnjaUK06aKN9i6tJY31Q==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" + "@module-federation/bridge-react-webpack-plugin": "2.2.2", + "@module-federation/cli": "2.2.2", + "@module-federation/data-prefetch": "2.2.2", + "@module-federation/dts-plugin": "2.2.2", + "@module-federation/error-codes": "2.2.2", + "@module-federation/inject-external-runtime-core-plugin": "2.2.2", + "@module-federation/managers": "2.2.2", + "@module-federation/manifest": "2.2.2", + "@module-federation/rspack": "2.2.2", + "@module-federation/runtime-tools": "2.2.2", + "@module-federation/sdk": "2.2.2", + "@module-federation/webpack-bundler-runtime": "2.2.2", + "btoa": "^1.2.1", + "schema-utils": "^4.3.0", + "tapable": "2.3.0", + "upath": "2.0.1" + }, + "bin": { + "mf": "bin/mf.js" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@webcomponents/custom-elements": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", - "integrity": "sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==" - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", + "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-2.2.2.tgz", + "integrity": "sha512-e+dxUrqrdRbhfvg8TyG0UQBQAjYZ8pI2b3HWfESLXqWi3xCiivZSnqsPN+zychrQ1hDZAdCheZ9zT91zhMrkxw==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT" }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.37", + "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-2.2.2.tgz", + "integrity": "sha512-wGN6nsjJVhM6T2PBx4FVfbfkXCBwewNmZJ81Rc23/9nzX9GXtKAe4YHojnzcxLRrnQnhdzd/8W2OTUKEsqCLgg==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.15.0" + "license": "MIT", + "peerDependencies": { + "@module-federation/runtime-tools": "2.2.2" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", + "node_modules/@module-federation/node/node_modules/@module-federation/managers": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-2.2.2.tgz", + "integrity": "sha512-YuUCUdjwXGsFEWC6YwNjX+XC8V4i47549ljXarHBhCVIYIluigivpG5ZDq/kyoZQoeR9UnUwzMiKzt79y0f7Dg==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@module-federation/sdk": "2.2.2", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@zkochan/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", + "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-2.2.2.tgz", + "integrity": "sha512-6oiyzCIdmqTuDF8FZEKbV7raFUtkPLhMfsjiSXQWzmeKrSTNtPYQ0qGqhTG5Qsc3p6DF16JqhoKu3LOvaV47cA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "@module-federation/dts-plugin": "2.2.2", + "@module-federation/managers": "2.2.2", + "@module-federation/sdk": "2.2.2", + "chalk": "3.0.0", + "find-pkg": "2.0.0" + } }, - "node_modules/abbrev": { - "version": "1.1.1", + "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-2.2.2.tgz", + "integrity": "sha512-0ZZGt7+3636OX2NUoGaykdRdtGw0B24NSGnOs839T80Z1eShRErrtDCjo1FLLZ/DkShNkOuJ0ntxVeDWB78Sdg==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "2.2.2", + "@module-federation/dts-plugin": "2.2.2", + "@module-federation/inject-external-runtime-core-plugin": "2.2.2", + "@module-federation/managers": "2.2.2", + "@module-federation/manifest": "2.2.2", + "@module-federation/runtime-tools": "2.2.2", + "@module-federation/sdk": "2.2.2", + "btoa": "1.2.1" + }, + "peerDependencies": { + "@rspack/core": "^0.7.0 || ^1.0.0 || ^2.0.0-0", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } }, - "node_modules/accepts": { - "version": "1.3.8", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-2.2.2.tgz", + "integrity": "sha512-zV6kbAUU1tQZr4KrZXQhzQP3WTb7oMRlIFw4UBhbh2JhAKGYS5CNc/n7+RV+mDxIs//qVmVzdSpJtTOMBLeFCw==", "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" + "@module-federation/error-codes": "2.2.2", + "@module-federation/runtime-core": "2.2.2", + "@module-federation/sdk": "2.2.2" } }, - "node_modules/acorn": { - "version": "8.8.2", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-2.2.2.tgz", + "integrity": "sha512-JL+W6Yol1+CPJ662H1SEQLwxfBU2kCKhUcYrMr/X6j0qFWB8x5PBSpQbwAIcJiKfflHgBaJZypmCKmq8qRv3Aw==", + "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "@module-federation/error-codes": "2.2.2", + "@module-federation/sdk": "2.2.2" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", + "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-2.2.2.tgz", + "integrity": "sha512-UnlKvy/zrbLTLItrI1tORiS6wdp5pYOCrR2LtDEbjJ2r+avzANSf2vJ7lAIT4SX5Pi9WwY5RhE4Y/BOwhAj4DA==", + "dev": true, "license": "MIT", - "peerDependencies": { - "acorn": "^8" + "dependencies": { + "@module-federation/runtime": "2.2.2", + "@module-federation/webpack-bundler-runtime": "2.2.2" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", + "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-2.2.2.tgz", + "integrity": "sha512-BgbiLXl0sZ04IE6G2C1iZRLOaawfZqeJi9XjrQyoh3nJOHHL39rDhJ6xFCB5ayAjjoPqwB4Rc6xPpFXbO5PssQ==", "dev": true, "license": "MIT", "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node-fetch": "^3.3.2" + }, + "peerDependenciesMeta": { + "node-fetch": { + "optional": true + } } }, - "node_modules/acorn-walk": { - "version": "8.2.0", + "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-2.2.2.tgz", + "integrity": "sha512-BWKLXQ2Me+zw6y2yhk8/URuVcyYFP1aJZlTqb7KpYeSJEp2z5jk8sZX2R42GraAGAwSe9IwcW6Y4Za/eoxt/tA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", + "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-2.2.2.tgz", + "integrity": "sha512-g5UEn5APnNYvajwWQ0oc3Um+HO1z/jBcBkLSKAoSOCI6XxQk5eAV1PNDuDehAgJEtJw5yFD25kZPW3X7m39y7g==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" + "@module-federation/runtime": "2.2.2", + "@module-federation/sdk": "2.2.2" } }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/@module-federation/node/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/agent-base": { - "version": "6.0.2", + "node_modules/@module-federation/node/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/agentkeepalive": { - "version": "4.2.1", + "node_modules/@module-federation/node/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">=7.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/@module-federation/node/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/ajv": { - "version": "8.11.0", + "node_modules/@module-federation/node/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", + "node_modules/@module-federation/node/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/angular-froala-wysiwyg": { - "version": "4.0.15", - "dependencies": { - "froala-editor": "4.0.15", - "tslib": "^2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/angular-text-input-highlight": { - "version": "1.4.3", + "node_modules/@module-federation/node/node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@angular/core": ">=2.0.0" + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", + "node_modules/@module-federation/node/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", + "node_modules/@module-federation/node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^0.21.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/@module-federation/node/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", + "license": "ISC", "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "license": "ISC", + "node_modules/@module-federation/node/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/app-root-path": { - "version": "3.1.0", + "node_modules/@module-federation/node/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 10.0.0" } }, - "node_modules/aproba": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/arch": { - "version": "2.2.0", + "node_modules/@module-federation/node/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "consulting", - "url": "https://feross.org/support" + "utf-8-validate": { + "optional": true } - ], - "license": "MIT" + } }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", + "node_modules/@module-federation/rspack": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.18.4.tgz", + "integrity": "sha512-gnvXKtk/w0ML15JHueWej5/8Lkoho7EoYUxvO77nBCnGOlXNqVYqLZ3REy2SS/8SQ4vQK156eSiyUkth2OYQqw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "@module-federation/bridge-react-webpack-plugin": "0.18.4", + "@module-federation/dts-plugin": "0.18.4", + "@module-federation/inject-external-runtime-core-plugin": "0.18.4", + "@module-federation/managers": "0.18.4", + "@module-federation/manifest": "0.18.4", + "@module-federation/runtime-tools": "0.18.4", + "@module-federation/sdk": "0.18.4", + "btoa": "1.2.1" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "peerDependencies": { + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } } }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", + "node_modules/@module-federation/runtime": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.18.4.tgz", + "integrity": "sha512-2et6p7pjGRHzpmrW425jt/BiAU7QHgkZtbQB7pj01eQ8qx6SloFEBk9ODnV8/ztSm9H2T3d8GxXA6/9xVOslmQ==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@module-federation/error-codes": "0.18.4", + "@module-federation/runtime-core": "0.18.4", + "@module-federation/sdk": "0.18.4" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", + "node_modules/@module-federation/runtime-core": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.18.4.tgz", + "integrity": "sha512-LGGlFXlNeTbIGBFDiOvg0zz4jBWCGPqQatXdKx7mylXhDij7YmwbuW19oenX+P1fGhmoBUBM5WndmR87U66qWA==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "@module-federation/error-codes": "0.18.4", + "@module-federation/sdk": "0.18.4" + } }, - "node_modules/aria-query": { - "version": "5.0.2", + "node_modules/@module-federation/runtime-tools": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.18.4.tgz", + "integrity": "sha512-wSGTdx77R8BQX+q6nAcUuHPydYYm0F97gAEP9RTW1UlzXnM/0AFysDHujvtRQf5vyXkhj//HdcH6LIJJCImy2g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.18.4", + "@module-federation/webpack-bundler-runtime": "0.18.4" } }, - "node_modules/array-flatten": { - "version": "2.1.2", + "node_modules/@module-federation/sdk": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.18.4.tgz", + "integrity": "sha512-dErzOlX+E3HS2Sg1m12Hi9nCnfvQPuIvlq9N47KxrbT2TIU3KKYc9q/Ua+QWqxfTyMVFpbNDwFMJ1R/w/gYf4A==", "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.18.4.tgz", + "integrity": "sha512-PpiC0jxOegNR/xjhNOkjSYnUqMNJAy1kWsRd10to3Y64ZvGRf7/HF+x3aLIX8MbN7Ioy9F7Gd5oax6rtm+XmNQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" } }, - "node_modules/asn1": { - "version": "0.2.6", + "node_modules/@module-federation/third-party-dts-extractor/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": "~2.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/assert-plus": { - "version": "1.0.0", + "node_modules/@module-federation/third-party-dts-extractor/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/@module-federation/third-party-dts-extractor/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/async": { - "version": "3.2.4", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", + "node_modules/@module-federation/third-party-dts-extractor/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.18.4.tgz", + "integrity": "sha512-nPHp2wRS4/yfrGRQchZ0cyvdUZk+XgUmD0qWQl95xmeIeXUb90s3JrWFHSmS6Dt1gwMgJOeNpzzZDcBSy2P1VQ==", "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" + "license": "MIT", + "dependencies": { + "@module-federation/runtime": "0.18.4", + "@module-federation/sdk": "0.18.4" } }, - "node_modules/autoprefixer": { - "version": "10.4.13", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" ], + "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/aws-sign2": { - "version": "0.7.0", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/aws4": { - "version": "1.12.0", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 10" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@napi-rs/nice-win32-x64-msvc": "1.1.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", + "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 6" + "node": ">= 10" } }, - "node_modules/axios/node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/axobject-query": { - "version": "3.0.1", + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", + "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.0" + "node": ">= 10" } }, - "node_modules/babel-jest": { - "version": "28.1.3", + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">= 10" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", + "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 10" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", + "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=7.0.0" + "node": ">= 10" } }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", + "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", + "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/babel-loader": { - "version": "8.2.5", + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", + "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "node": ">= 10" } }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", + "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", + "cpu": [ + "riscv64" + ], "dev": true, "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8.9.0" + "node": ">= 10" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", + "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "28.1.3", + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 10" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "dev": true, + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", + "node_modules/@napi-rs/nice-openharmony-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", + "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", + "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", + "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", + "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" + } + }, + "node_modules/@ngrx/component": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/component/-/component-21.0.1.tgz", + "integrity": "sha512-NjeLVcYwnCRv1OCnBQYpy4JOKOr8L53hBvySdPo2qg6mYYFtxfkVMoA/k95xAcv9DMpHkV7iPn+1DXq4KgXGwQ==", + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" + "tslib": "^2.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "dev": true, + "node_modules/@ngrx/component-store": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/component-store/-/component-store-21.0.1.tgz", + "integrity": "sha512-aOfudK8MqCZQUuBjMnXAXRxRcr9Qu/+9/2iIh4aLhmGXC5JCpkDi1a82A/39EUFZy2xBbI4lPI7P817b1PQRvQ==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "tslib": "^2.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@angular/core": "^21.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "dev": true, + "node_modules/@ngrx/effects": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-21.0.1.tgz", + "integrity": "sha512-hSdpToAiSYa5FJ/CAygQHpnCaF2S1HO7q/57ob3XvNTWmkofa0VqI/IIe4W57bojh2YOWCJ91SCn3kAjymaV3g==", "license": "MIT", "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "tslib": "^2.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@angular/core": "^21.0.0", + "@ngrx/store": "21.0.1", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/babel-preset-jest": { - "version": "28.1.3", - "dev": true, + "node_modules/@ngrx/entity": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-21.0.1.tgz", + "integrity": "sha512-h7PjW8WzkPwSYDlicWcEw6EJ9yBfa+fbf5tmIty4cZ8yH6+Ld3aHuGAMAu8xbnV79oj0TGa/PSynu5LZq4jXdA==", "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "tslib": "^2.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@angular/core": "^21.0.0", + "@ngrx/store": "21.0.1", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base64-inline-loader": { - "version": "2.0.1", - "dev": true, + "node_modules/@ngrx/operators": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-21.0.1.tgz", + "integrity": "sha512-CfSh9MzQoIjbipSJ4q1+ZhcY537I5th4hNdNiWHu/egx2+SgFUZlOcQ6E9c+DJMsVkYOoIYhKX1E/bYlFBqXJw==", "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.32" + "tslib": "^2.3.0" }, - "engines": { - "node": ">=6.2", - "npm": ">=3.8" + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/base64-inline-loader/node_modules/loader-utils": { - "version": "2.0.4", - "dev": true, + "node_modules/@ngrx/router-store": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-21.0.1.tgz", + "integrity": "sha512-hacH8ciwCRMLg7p7bThslYn564GOyS5LPf9c8cX4FTyOH+iJM32eJd2Lt64cA62vN6ruofV/IM2vB09nCkxHzg==", "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "tslib": "^2.0.0" }, - "engines": { - "node": ">=8.9.0" + "peerDependencies": { + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/router": "^21.0.0", + "@ngrx/store": "21.0.1", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "dev": true, + "node_modules/@ngrx/store": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-21.0.1.tgz", + "integrity": "sha512-2hGnw/c5o8nmKzyx7TrUUM7FXjE2zqjX0EF+wLbw9Oy/L+VdCmx+ZI1BFjuAR4B8PKEWHG2KSbOM13SMNkpZiA==", "license": "MIT", "dependencies": { - "safe-buffer": "5.1.2" + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "@angular/core": "^21.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/batch": { - "version": "0.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", + "node_modules/@ngrx/store-devtools": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-21.0.1.tgz", + "integrity": "sha512-G9fO7CFwYUpz8+JZ9uny+lVJ7iv6PcFJDg+jae5CCrAUIiflnR8gbwD8exAd2AODpxPCpmnSojuLNpLDAcwGzQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "tweetnacl": "^0.14.3" + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^21.0.0", + "@ngrx/store": "21.0.1", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/big.js": { - "version": "5.2.2", + "node_modules/@ngtools/webpack": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-21.2.2.tgz", + "integrity": "sha512-EnDlYg0KWqtvJ2FBIFR03nBHRhs8JFtb4yrdnL5zt7OP6mlRpCcFJ+kXwm6v9OVTEIsKKRdPRe0qpSYOAOdo6w==", + "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^21.0.0", + "typescript": ">=5.9 <6.0", + "webpack": "^5.54.0" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/blob-util": { - "version": "2.0.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/bluebird": { - "version": "3.7.1", - "dev": true, - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.1", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 8" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 8" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/body-parser/node_modules/depd": { - "version": "2.0.0", + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" + }, "engines": { - "node": ">= 0.8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, - "license": "MIT" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } }, - "node_modules/bonjour-service": { - "version": "1.1.0", + "node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/boolbase": { - "version": "1.0.0", + "node_modules/@npmcli/git": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", + "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "@gar/promise-retry": "^1.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8" + "node": ">=20" } }, - "node_modules/browserslist": { - "version": "4.21.5", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "license": "MIT", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "isexe": "^4.0.0" }, "bin": { - "browserslist": "cli.js" + "node-which": "bin/which.js" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/bs-logger": { - "version": "0.2.6", + "node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "fast-json-stable-stringify": "2.x" + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" }, "engines": { - "node": ">= 6" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/bser": { - "version": "2.1.1", + "node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", + "node_modules/@npmcli/package-json": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", + "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "glob": "^13.0.0", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "spdx-expression-parse": "^4.0.0" + }, "engines": { - "node": "*" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "1.1.1", + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", + "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/builtins": { - "version": "5.0.1", + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "semver": "^7.0.0" + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/bytes": { - "version": "3.0.0", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 0.8" + "node": ">=20" } }, - "node_modules/cacache": { - "version": "16.1.2", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.14.1", + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", "dev": true, "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/cachedir": { - "version": "2.3.0", + "node_modules/@npmcli/run-script": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", + "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0" + }, "engines": { - "node": ">=6" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/@nx/angular": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-21.6.10.tgz", + "integrity": "sha512-CNDTTr6iL4sFCdOs2e4F1/OJdYixa5EFrKpfQv1BKSgzrx/9TvZ3s6j1bDGmtKk8n2vQC7A7M5lngRo45+Pt+Q==", "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "@nx/devkit": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/js": "21.6.10", + "@nx/module-federation": "21.6.10", + "@nx/rspack": "21.6.10", + "@nx/web": "21.6.10", + "@nx/webpack": "21.6.10", + "@nx/workspace": "21.6.10", + "@phenomnomnominal/tsquery": "~5.0.1", + "@typescript-eslint/type-utils": "^8.0.0", + "enquirer": "~2.3.6", + "magic-string": "~0.30.2", + "picocolors": "^1.1.0", + "picomatch": "4.0.2", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "webpack-merge": "^5.8.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@angular-devkit/build-angular": ">= 18.0.0 < 21.0.0", + "@angular-devkit/core": ">= 18.0.0 < 21.0.0", + "@angular-devkit/schematics": ">= 18.0.0 < 21.0.0", + "@angular/build": ">= 18.0.0 < 21.0.0", + "@schematics/angular": ">= 18.0.0 < 21.0.0", + "ng-packagr": ">= 18.0.0 < 21.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + }, + "peerDependenciesMeta": { + "@angular-devkit/build-angular": { + "optional": true + }, + "@angular/build": { + "optional": true + }, + "ng-packagr": { + "optional": true + } } }, - "node_modules/callsites": { - "version": "3.1.0", + "node_modules/@nx/angular/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@nx/cypress": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-21.6.10.tgz", + "integrity": "sha512-nuaU2rf81htn3DgFVM9OPHdnDZkj2/fDeUelq07to4NGdR/NzW9CQ9vmJBaLObiLijCVZRwNNLeJSHupZpN55w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@nx/devkit": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/js": "21.6.10", + "@phenomnomnominal/tsquery": "~5.0.1", + "detect-port": "^1.5.1", + "semver": "^7.6.3", + "tree-kill": "1.2.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "cypress": ">= 3 < 15" + }, + "peerDependenciesMeta": { + "cypress": { + "optional": true + } } }, - "node_modules/caniuse-api": { - "version": "3.0.0", + "node_modules/@nx/devkit": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-21.6.10.tgz", + "integrity": "sha512-h2ZpwhKk9p1kWgokMXP6F4PVakUA3jPbKmjtY+wCsW2VZg72tIVVzs33DGUxTvN6WG6Z4xbLKc0LJkgaOdDTOw==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 20 <= 22" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001450", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + "node_modules/@nx/eslint": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-21.6.10.tgz", + "integrity": "sha512-cZPXFZsgzGrOBetSdcIR9Kb28H9+lHsaubAGeCAjS8GSvRoQBKLdgtfuB5mpnmOLRqGsiIhZ701DfekLitRnmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "typescript": "~5.9.2" + }, + "peerDependencies": { + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "@zkochan/js-yaml": { + "optional": true } - ], - "license": "CC-BY-4.0" + } }, - "node_modules/caseless": { - "version": "0.12.0", + "node_modules/@nx/jest": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-21.6.10.tgz", + "integrity": "sha512-JAYMD/RwKP/mgr7R0uC6R7/DGsluajiQsHipbp6JhbwmqxOK+tTdWBHrYzKWXyRZaCSqqmrN55ocVfuynZDP4Q==", "dev": true, - "license": "Apache-2.0" + "license": "MIT", + "dependencies": { + "@jest/reporters": "^30.0.2", + "@jest/test-result": "^30.0.2", + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "@phenomnomnominal/tsquery": "~5.0.1", + "identity-obj-proxy": "3.0.0", + "jest-config": "^30.0.2", + "jest-resolve": "^30.0.2", + "jest-util": "^30.0.2", + "minimatch": "9.0.3", + "picocolors": "^1.1.0", + "resolve.exports": "2.0.3", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } }, - "node_modules/chalk": { - "version": "2.4.2", + "node_modules/@nx/jest/node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/char-regex": { - "version": "1.0.2", + "node_modules/@nx/jest/node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chardet": { - "version": "0.7.0", - "license": "MIT" - }, - "node_modules/charenc": { - "version": "0.0.2", + "node_modules/@nx/jest/node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, "engines": { - "node": "*" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chart.js": { - "version": "2.9.4", + "node_modules/@nx/jest/node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, "license": "MIT", "dependencies": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chartjs-color": { - "version": "2.4.1", + "node_modules/@nx/jest/node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, "license": "MIT", "dependencies": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chartjs-color-string": { - "version": "0.6.0", + "node_modules/@nx/jest/node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "^1.0.0" + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/check-more-types": { - "version": "2.24.0", + "node_modules/@nx/jest/node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", "dev": true, "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, "engines": { - "node": ">= 0.8.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/chokidar": { - "version": "3.5.3", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/@nx/jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chownr": { - "version": "2.0.0", + "node_modules/@nx/jest/node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, "engines": { - "node": ">=10" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", + "node_modules/@nx/jest/node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, "engines": { - "node": ">=6.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ci-info": { - "version": "3.7.1", + "node_modules/@nx/jest/node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/@nx/jest/node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/@nx/jest/node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@nx/jest/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/jest/node_modules/@sinonjs/fake-timers": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", + "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/cli-table3": { - "version": "0.6.3", + "node_modules/@nx/jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "string-width": "^4.2.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">=8" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cli-truncate": { - "version": "2.1.0", + "node_modules/@nx/jest/node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@nx/jest/node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/clipboard": { - "version": "2.0.11", + "node_modules/@nx/jest/node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, "license": "MIT", "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "license": "ISC", + "node_modules/@nx/jest/node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, - "node_modules/clone": { - "version": "1.0.4", + "node_modules/@nx/jest/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone-deep": { - "version": "4.0.1", + "node_modules/@nx/jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/co": { - "version": "4.6.0", + "node_modules/@nx/jest/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=8" } }, - "node_modules/codelyzer": { - "version": "6.0.2", + "node_modules/@nx/jest/node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "app-root-path": "^3.0.0", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "rxjs": "^6.5.3", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2", - "tslib": "^1.10.0", - "zone.js": "~0.10.3" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", - "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", - "tslint": "^5.0.0 || ^6.0.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/codelyzer/node_modules/@angular/compiler": { - "version": "9.0.0", + "node_modules/@nx/jest/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", - "peerDependencies": { - "tslib": "^1.10.0" - } + "license": "MIT" }, - "node_modules/codelyzer/node_modules/@angular/core": { - "version": "9.0.0", + "node_modules/@nx/jest/node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", "dev": true, "license": "MIT", - "peerDependencies": { - "rxjs": "^6.5.3", - "tslib": "^1.10.0", - "zone.js": "~0.10.2" + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/codelyzer/node_modules/aria-query": { - "version": "3.0.0", + "node_modules/@nx/jest/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/codelyzer/node_modules/axobject-query": { - "version": "2.0.2", + "node_modules/@nx/jest/node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "ast-types-flow": "0.0.7" + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/codelyzer/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/@nx/jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, + "license": "MIT", "engines": { - "npm": ">=2.0.0" + "node": ">=8" } }, - "node_modules/codelyzer/node_modules/source-map": { - "version": "0.5.7", + "node_modules/@nx/jest/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/codelyzer/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/codelyzer/node_modules/zone.js": { - "version": "0.10.3", + "node_modules/@nx/jest/node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", + "node_modules/@nx/jest/node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", "license": "MIT", "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", + "node_modules/@nx/jest/node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", + "node_modules/@nx/jest/node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/color-support": { - "version": "1.1.3", + "node_modules/@nx/jest/node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/colord": { - "version": "2.9.3", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "1.4.0", + "node_modules/@nx/jest/node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", "dev": true, - "license": "MIT" - }, - "node_modules/colorspace": { - "version": "1.1.4", "license": "MIT", "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/combined-stream": { - "version": "1.0.8", + "node_modules/@nx/jest/node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", "dev": true, "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" }, "engines": { - "node": ">= 0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/commander": { - "version": "2.20.3", - "license": "MIT" - }, - "node_modules/common-tags": { - "version": "1.8.2", + "node_modules/@nx/jest/node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, "engines": { - "node": ">=4.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" } }, - "node_modules/commondir": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/compressible": { - "version": "2.0.18", + "node_modules/@nx/jest/node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", "dev": true, "license": "MIT", "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" }, "engines": { - "node": ">= 0.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/compression": { - "version": "1.7.4", + "node_modules/@nx/jest/node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", + "node_modules/@nx/jest/node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/@nx/jest/node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", "dev": true, - "license": "MIT" - }, - "node_modules/concat": { - "version": "1.0.3", "license": "MIT", "dependencies": { - "commander": "^2.9.0" - }, - "bin": { - "concat": "bin/concat" + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" }, "engines": { - "node": ">=6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", + "node_modules/@nx/jest/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/content-disposition": { - "version": "0.5.4", + "node_modules/@nx/jest/node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": ">= 0.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/content-type": { - "version": "1.0.5", + "node_modules/@nx/jest/node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, "engines": { - "node": ">= 0.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.5.0", + "node_modules/@nx/jest/node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "2.0.6", + "node_modules/@nx/jest/node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", "dev": true, "license": "MIT", "dependencies": { - "is-what": "^3.14.1" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", + "node_modules/@nx/jest/node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", "dev": true, "license": "MIT", "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/fast-glob": { - "version": "3.2.12", + "node_modules/@nx/jest/node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" }, "engines": { - "node": ">=8.6.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/@nx/jest/node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" }, "engines": { - "node": ">= 6" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/@nx/jest/node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" }, "engines": { - "node": ">=10.13.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.3", + "node_modules/@nx/jest/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/@nx/jest/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/@nx/jest/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=16 || 14 >=14.18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", + "node_modules/@nx/jest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/core-js": { - "version": "3.27.2", - "hasInstallScript": true, + "node_modules/@nx/jest/node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/core-js-compat": { - "version": "3.27.2", + "node_modules/@nx/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/core-util-is": { - "version": "1.0.2", + "node_modules/@nx/jest/node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], "license": "MIT" }, - "node_modules/corser": { - "version": "2.0.1", + "node_modules/@nx/jest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cosmiconfig": { - "version": "7.1.0", + "node_modules/@nx/jest/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/jest/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/create-require": { - "version": "1.1.1", + "node_modules/@nx/jest/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/critters": { - "version": "0.0.16", + "node_modules/@nx/js": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-21.6.10.tgz", + "integrity": "sha512-8d+Q5v/9/he8mq6aRfhHWORZb/WkJ7OTegF4QX2g+yVkocEKIyuUx/BC9rGBRvlZpB2xcJlU9kNcfrhuoKbehQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nx/devkit": "21.6.10", + "@nx/workspace": "21.6.10", + "@zkochan/js-yaml": "0.0.7", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "jsonc-parser": "3.2.0", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "picocolors": "^1.1.0", + "picomatch": "4.0.2", + "semver": "^7.5.3", + "source-map-support": "0.5.19", + "tinyglobby": "^0.2.12", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^6.0.5" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } } }, - "node_modules/critters/node_modules/ansi-styles": { + "node_modules/@nx/js/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -9707,8 +12345,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/critters/node_modules/chalk": { + "node_modules/@nx/js/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -9722,8 +12362,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/critters/node_modules/color-convert": { + "node_modules/@nx/js/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9733,172 +12375,432 @@ "node": ">=7.0.0" } }, - "node_modules/critters/node_modules/has-flag": { + "node_modules/@nx/js/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/critters/node_modules/parse5": { - "version": "6.0.1", + "node_modules/@nx/js/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@nx/js/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "license": "MIT", + "node_modules/@nx/js/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/js/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@nx/js/node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "license": "ISC", "dependencies": { - "node-fetch": "2.6.7" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", + "node_modules/@nx/js/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", + "node_modules/@nx/js/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@nx/js/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/crypt": { - "version": "0.0.2", + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - }, - "node_modules/css": { - "version": "3.0.0", + "node_modules/@nx/js/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", + "node_modules/@nx/js/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=8" } }, - "node_modules/css-declaration-sorter": { - "version": "6.3.1", + "node_modules/@nx/js/node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, "license": "ISC", "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", + "node_modules/@nx/module-federation": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-21.6.10.tgz", + "integrity": "sha512-kqTk8R2qpW+h3HlRz9Iclrjg4WSj9pYHYPoF5ie4qgytc0lzwKiaqQuQLwoO+QwWGpdLqX1gUImvehwGb1Ha7A==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "@module-federation/enhanced": "^0.18.0", + "@module-federation/node": "^2.7.11", + "@module-federation/sdk": "^0.18.0", + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "@nx/web": "21.6.10", + "@rspack/core": "^1.3.8", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.5", + "picocolors": "^1.1.0", + "tslib": "^2.3.0", + "webpack": "^5.101.3" } }, - "node_modules/css-loader": { - "version": "6.7.1", + "node_modules/@nx/module-federation/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" + "ms": "^2.1.3" }, "engines": { - "node": ">= 12.13.0" + "node": ">=6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@nx/module-federation/node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@nx/module-federation/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/module-federation/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-21.6.10.tgz", + "integrity": "sha512-4K8oZdzil6zpY3zxugSbVDS4dF8o82KCeyT1IYH7t+aWD/tUnYhw/zmdNx6Jq80oxYgPrPWhxmuZ/UCN0LSYLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-21.6.10.tgz", + "integrity": "sha512-WqFIRjxtOHoJob2f24YiKfgqTcgtVb/CKYvnuMAmKccarOi91DeABQO35gXUwvE89TjhlR5slG5YLZt7E5UCaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-21.6.10.tgz", + "integrity": "sha512-EqrBLRA0WRek+x3kH6/YL+fRa6xKvj9e9nRfOYyo0GSbUwew5ofGWODGoYtoHC+oCuL4qtpKGRhU27NFwhOM8A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-21.6.10.tgz", + "integrity": "sha512-CdbPy4s1I4f57DOncoSsnJX9dB2f7sZhdPXHKZ9tgCMcBpy6uYHhkzmrwCdiBjl/2JQLM/GwEkqoYxpzIlAJbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-21.6.10.tgz", + "integrity": "sha512-4ZSjvCjnBT0WpGdF12hvgLWmok4WftaE09fOWWrMm4b2m8F/5yKgU6usPFTehQa5oqTp08KW60kZMLaOQHOJQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-21.6.10.tgz", + "integrity": "sha512-lNzlTsgr7nY56ddIpLTzYZTuNA3FoeWb9Ald07pCWc0EHSZ0W4iatJ+NNnj/QLINW8HWUehE9mAV5qZlhVFBmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-21.6.10.tgz", + "integrity": "sha512-nJxUtzcHwk8TgDdcqUmbJnEMV3baQxmdWn77d1NTP4cG677A7jdV93hbnCcw+AQonaFLUzDwJOIX8eIPZ32GLw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-21.6.10.tgz", + "integrity": "sha512-+VwITTQW9wswP7EvFzNOucyaU86l2UcO6oYxFiwNvRioTlDOE5U7lxYmCgj3OHeGCmy9jhXlujdD+t3OhOT3gQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-21.6.10.tgz", + "integrity": "sha512-kkK/0GNVs7pdcgksLfoMBT8k92XGfcePPuhhS1Tsyq+zc3gpsPo+vNIGfeIf2FumKBsUdWUHuChfpxBmjcVFVw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-21.6.10.tgz", + "integrity": "sha512-ddYZv1Z8wLhlHASwi044gTcM0+7OJ24V1yCwlVe3wsIqZDUZvVC1Lgk+wIQXUH8mBKm3NZti8B72nldoofOmSw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@nx/rspack": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-21.6.10.tgz", + "integrity": "sha512-QSw5IRoT6WsoQzqJYj2AvLUOR9rKpjcaIFZdtJ4iol19Y6VSq449XOojxtTlrglecsxB7ws6E0UXc7GeyCB2Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "@nx/module-federation": "21.6.10", + "@nx/web": "21.6.10", + "@phenomnomnominal/tsquery": "~5.0.1", + "@rspack/core": "^1.5.0", + "@rspack/dev-server": "^1.1.4", + "@rspack/plugin-react-refresh": "^1.0.0", + "autoprefixer": "^10.4.9", + "browserslist": "^4.21.4", + "css-loader": "^6.4.0", + "enquirer": "~2.3.6", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.5", + "less-loader": "^11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "parse5": "4.0.0", + "picocolors": "^1.1.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^8.1.1", + "sass": "^1.85.0", + "sass-embedded": "^1.83.4", + "sass-loader": "^16.0.4", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "ts-checker-rspack-plugin": "^1.1.1", + "tslib": "^2.3.0", + "webpack": "^5.101.3", + "webpack-node-externals": "^3.0.0" }, "peerDependencies": { - "webpack": "^5.0.0" + "@module-federation/enhanced": "^0.18.0", + "@module-federation/node": "^2.7.11" } }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", + "node_modules/@nx/rspack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "license": "MIT", "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -9908,3973 +12810,5520 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { + "@rspack/core": { "optional": true }, - "esbuild": { + "webpack": { "optional": true } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/@nx/rspack/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">= 12.13.0" + "node": ">=6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@nx/rspack/node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", + "node_modules/@nx/rspack/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "CC0-1.0", - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=0.10.0" } }, - "node_modules/css-select": { - "version": "4.3.0", + "node_modules/@nx/rspack/node_modules/less-loader": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", + "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "license": "MIT", + "engines": { + "node": ">= 14.15.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-selector-tokenizer": { - "version": "0.7.3", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/css-tree": { - "version": "1.1.3", + "node_modules/@nx/rspack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=8.9.0" } }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@nx/rspack/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/css-what": { - "version": "6.1.0", + "node_modules/@nx/rspack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } + "license": "MIT" }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", + "node_modules/@nx/web": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-21.6.10.tgz", + "integrity": "sha512-lX0/PyUUzsAiTjNkzAZSc7XCCoJXKaNFkiap1mnGEZDjglb67zFZ+RT3tiWQ7XvnF8okt2zznKT2HGljQg1ngA==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "picocolors": "^1.1.0", + "tslib": "^2.3.0" } }, - "node_modules/cssauron": { - "version": "1.4.0", + "node_modules/@nx/webpack": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-21.6.10.tgz", + "integrity": "sha512-T+eB9c3lflqWuegrsW47zzkZlSQ6YNEucEknUpWyDrKLCihucKe9siuj5s2gPkgdY6DXX4sjZcA5xgnxHNBWag==", "dev": true, "license": "MIT", "dependencies": { - "through": "X.X.X" + "@babel/core": "^7.23.2", + "@nx/devkit": "21.6.10", + "@nx/js": "21.6.10", + "@phenomnomnominal/tsquery": "~5.0.1", + "ajv": "^8.12.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "fork-ts-checker-webpack-plugin": "7.2.13", + "less": "^4.1.3", + "less-loader": "^11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "picocolors": "^1.1.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.85.0", + "sass-embedded": "^1.83.4", + "sass-loader": "^16.0.4", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.2.0", + "tslib": "^2.3.0", + "webpack": "^5.101.3", + "webpack-dev-server": "^5.2.1", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" } }, - "node_modules/cssdb": { - "version": "7.4.1", + "node_modules/@nx/webpack/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/webpack/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssesc": { - "version": "3.0.0", + "node_modules/@nx/webpack/node_modules/babel-loader": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/cssnano": { - "version": "5.1.14", + "node_modules/@nx/webpack/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", "dev": true, "license": "MIT", "dependencies": { - "cssnano-preset-default": "^5.2.13", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 12.20.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/cssnano" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.13", - "dev": true, - "license": "MIT", - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "webpack": "^5.1.0" } }, - "node_modules/cssnano-utils": { - "version": "3.1.0", + "node_modules/@nx/webpack/node_modules/css-loader": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "postcss": "^8.2.15" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/csso": { - "version": "4.2.0", + "node_modules/@nx/webpack/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", "dependencies": { - "css-tree": "^1.1.2" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8.0.0" + "node": ">=10.13.0" } }, - "node_modules/cypress": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz", - "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==", + "node_modules/@nx/webpack/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "dependencies": { - "@cypress/request": "^2.88.10", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^5.1.0", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.6", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.3.2", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">=12.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/@types/node": { - "version": "14.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", - "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", - "dev": true - }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@nx/webpack/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/bluebird": { - "version": "3.7.2", + "node_modules/@nx/webpack/node_modules/less-loader": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.4.tgz", + "integrity": "sha512-6/GrYaB6QcW6Vj+/9ZPgKKs6G10YZai/l/eJ4SLwbzqNTBsAqt5hSLVF47TgsiBxV1P6eAU0GYRH3YRuQU9V3A==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@nx/webpack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=10" + "node": ">=8.9.0" + } + }, + "node_modules/@nx/webpack/node_modules/memfs": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@nx/webpack/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@nx/webpack/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "mime-db": "^1.54.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/cypress/node_modules/commander": { - "version": "5.1.0", + "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", "dev": true, "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0" + }, "engines": { - "node": ">= 6" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/cypress/node_modules/fs-extra": { - "version": "9.1.0", + "node_modules/@nx/webpack/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@nx/webpack/node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/@nx/webpack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nx/webpack/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@nx/webpack/node_modules/selfsigned": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=18" } }, - "node_modules/cypress/node_modules/universalify": { - "version": "2.0.0", + "node_modules/@nx/webpack/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3": { - "version": "7.8.2", - "license": "ISC", + "node_modules/@nx/webpack/node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/d3-array": { - "version": "3.2.2", - "license": "ISC", + "node_modules/@nx/webpack/node_modules/webpack-dev-server": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "dev": true, + "license": "MIT", "dependencies": { - "internmap": "1 - 2" + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">=12" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@nx/webpack/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/d3-brush": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@nx/webpack/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@nx/workspace": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-21.6.10.tgz", + "integrity": "sha512-6OkXs4gAVjDtrfqhJf7lHZX/VlCFLRZpywfgvmije40wrExkJDNEHx3Gf6dvSVwl0vE6Gz8D2t6luO02hGGz4w==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" + "@nx/devkit": "21.6.10", + "@zkochan/js-yaml": "0.0.7", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "21.6.10", + "picomatch": "4.0.2", + "semver": "^7.6.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@nx/workspace/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "license": "ISC", + "node_modules/@nx/workspace/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "^3.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3-delaunay": { - "version": "6.0.2", - "license": "ISC", + "node_modules/@nx/workspace/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "delaunator": "5" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@nx/workspace/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, + "node_modules/@nx/workspace/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@nx/workspace/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", + "node_modules/@oxc-project/types": { + "version": "0.113.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.113.0.tgz", + "integrity": "sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/d3-dsv/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-dsv": "1 - 3" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-force": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.0", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" + "node": ">= 10.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "license": "ISC", + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-scale": { - "version": "3.3.0", - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=12" + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-scale/node_modules/d3-array": { - "version": "2.12.1", - "license": "BSD-3-Clause", - "dependencies": { - "internmap": "^1.0.0" + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-scale/node_modules/d3-color": { - "version": "2.0.0", - "license": "BSD-3-Clause" - }, - "node_modules/d3-scale/node_modules/d3-format": { - "version": "2.0.0", - "license": "BSD-3-Clause" - }, - "node_modules/d3-scale/node_modules/d3-interpolate": { - "version": "2.0.1", - "license": "BSD-3-Clause", - "dependencies": { - "d3-color": "1 - 2" + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/d3-scale/node_modules/internmap": { - "version": "1.0.1", - "license": "ISC" + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true }, - "node_modules/d3-selection": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@parcel/watcher/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "optional": true, "engines": { "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/d3-time": { - "version": "2.1.1", - "license": "BSD-3-Clause", + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.1.tgz", + "integrity": "sha512-vdG4fBF6Lkirkcl53q6eOdn3XYKt+kJTG59edgRZORlg/3atWWEReRCx5rYE1ZzTTX6vLK5zDMjHh7vbrcXGtw==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/d3-time-format": { - "version": "3.0.0", - "license": "BSD-3-Clause", - "dependencies": { - "d3-time": "1 - 2" - } + "node_modules/@peculiar/asn1-cms/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "node_modules/d3-time/node_modules/d3-array": { - "version": "2.12.1", - "license": "BSD-3-Clause", + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.1.tgz", + "integrity": "sha512-WRWnKfIocHyzFYQTka8O/tXCiBquAPSrRjXbOkHbO4qdmS6loffCEGs+rby6WxxGdJCuunnhS2duHURhjyio6w==", + "dev": true, + "license": "MIT", "dependencies": { - "internmap": "^1.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/d3-time/node_modules/internmap": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": ">=12" - } + "node_modules/@peculiar/asn1-csr/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "node_modules/d3-transition": { - "version": "3.0.1", - "license": "ISC", + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.1.tgz", + "integrity": "sha512-+Vqw8WFxrtDIN5ehUdvlN2m73exS2JVG0UAyfVB31gIfor3zWEAQPD+K9ydCxaj3MLen9k0JhKpu9LqviuCE1g==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } + "node_modules/@peculiar/asn1-ecc/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "node_modules/d3/node_modules/d3-scale": { - "version": "4.0.2", - "license": "ISC", + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.1.tgz", + "integrity": "sha512-nB5jVQy3MAAWvq0KY0R2JUZG8bO/bTLpnwyOzXyEh/e54ynGTatAR+csOnXkkVD9AFZ2uL8Z7EV918+qB1qDvw==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-rsa": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/d3/node_modules/d3-time": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@peculiar/asn1-pfx/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.1.tgz", + "integrity": "sha512-JB5iQ9Izn5yGMw3ZG4Nw3Xn/hb/G38GYF3lf7WmJb8JZUydhVGEjK/ZlFSWhnlB7K/4oqEs8HnfFIKklhR58Tw==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/d3/node_modules/d3-time-format": { - "version": "4.1.0", - "license": "ISC", + "node_modules/@peculiar/asn1-pkcs8/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.1.tgz", + "integrity": "sha512-5EV8nZoMSxeWmcxWmmcolg22ojZRgJg+Y9MX2fnE2bGRo5KQLqV5IL9kdSQDZxlHz95tHvIq9F//bvL1OeNILw==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" + "@peculiar/asn1-cms": "^2.6.1", + "@peculiar/asn1-pfx": "^2.6.1", + "@peculiar/asn1-pkcs8": "^2.6.1", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "@peculiar/asn1-x509-attr": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.6", + "node_modules/@peculiar/asn1-pkcs9/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.1.tgz", + "integrity": "sha512-1nVMEh46SElUt5CB3RUTV4EG/z7iYc7EoaDY5ECwganibQPkZ/Y2eMsTKB/LeyrUJ+W/tKoD9WUqIy8vB+CEdA==", + "dev": true, "license": "MIT", "dependencies": { - "d3": "^7.7.0", - "lodash-es": "^4.17.21" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", + "node_modules/@peculiar/asn1-rsa/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "license": "BSD-2-Clause" + "license": "0BSD" }, - "node_modules/dashdash": { - "version": "1.14.1", + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/dayjs": { - "version": "1.11.7", - "license": "MIT" + "node_modules/@peculiar/asn1-schema/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "node_modules/debug": { - "version": "4.3.4", + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.1.tgz", + "integrity": "sha512-O9jT5F1A2+t3r7C4VT7LYGXqkGLK7Kj1xFpz7U0isPrubwU5PbDoyYtx6MiGst29yq7pXN5vZbQFKRCP+lLZlA==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/decode-uri-component": { - "version": "0.2.2", + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.1.tgz", + "integrity": "sha512-tlW6cxoHwgcQghnJwv3YS+9OO1737zgPogZ+CgWRUK4roEwIPzRH4JEiG770xe5HX2ATfCpmX60gurfWIF9dcQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10" + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.1", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/dedent": { - "version": "0.7.0", + "node_modules/@peculiar/asn1-x509-attr/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "license": "MIT" + "license": "0BSD" }, - "node_modules/deep-equal": { - "version": "2.2.0", + "node_modules/@peculiar/asn1-x509/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.4", + "node_modules/@peculiar/x509/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "0BSD" }, - "node_modules/default-gateway": { - "version": "6.0.3", + "node_modules/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "esquery": "^1.4.0" }, - "engines": { - "node": ">= 10" + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, + "optional": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=14" } }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/pkgr" } }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, - "node_modules/defaults": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, - "node_modules/define-properties": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" }, - "node_modules/delaunator": { - "version": "5.0.0", - "license": "ISC", + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { - "robust-predicates": "^3.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/delegate": { - "version": "3.2.0", - "license": "MIT" + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, - "node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "license": "MIT" + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" }, - "node_modules/depd": { + "node_modules/@protobufjs/path": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 0.6" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/dependency-graph": { - "version": "0.11.0", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.6.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/destroy": { - "version": "1.2.0", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/detect-newline": { - "version": "3.1.0", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.4.tgz", + "integrity": "sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/diff": { - "version": "4.0.2", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.4.tgz", + "integrity": "sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==", + "cpu": [ + "arm" + ], "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.3.1" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/diff-sequences": { - "version": "28.1.1", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/dns-packet": { - "version": "5.4.0", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.4.tgz", + "integrity": "sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.4.tgz", + "integrity": "sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.4.tgz", + "integrity": "sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.4.tgz", + "integrity": "sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==", + "cpu": [ + "wasm32" ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "optional": true, "dependencies": { - "domelementtype": "^2.2.0" + "@napi-rs/wasm-runtime": "^1.1.1" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/dompurify": { - "version": "2.4.1", - "license": "(MPL-2.0 OR Apache-2.0)" - }, - "node_modules/domutils": { - "version": "2.8.0", + "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "optional": true, "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" } }, - "node_modules/dotenv": { - "version": "10.0.0", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.4.tgz", + "integrity": "sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/ee-first": { - "version": "1.1.1", + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.4.tgz", + "integrity": "sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==", "dev": true, "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.8", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.10.2", + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/emoji-toolkit": { - "version": "6.6.0", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/enabled": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "1.0.2", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/encoding": { - "version": "0.1.13", + "node_modules/@rspack/binding": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.9.tgz", + "integrity": "sha512-A56e0NdfNwbOSJoilMkxzaPuVYaKCNn1shuiwWnCIBmhV9ix1n9S1XvquDjkGyv+gCdR1+zfJBOa5DMB7htLHw==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.7.9", + "@rspack/binding-darwin-x64": "1.7.9", + "@rspack/binding-linux-arm64-gnu": "1.7.9", + "@rspack/binding-linux-arm64-musl": "1.7.9", + "@rspack/binding-linux-x64-gnu": "1.7.9", + "@rspack/binding-linux-x64-musl": "1.7.9", + "@rspack/binding-wasm32-wasi": "1.7.9", + "@rspack/binding-win32-arm64-msvc": "1.7.9", + "@rspack/binding-win32-ia32-msvc": "1.7.9", + "@rspack/binding-win32-x64-msvc": "1.7.9" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.9.tgz", + "integrity": "sha512-64dgstte0If5czi9bA/cpOe0ryY6wC9AIQRtyJ3DlOF6Tt+y9cKkmUoGu3V+WYaYIZRT7HNk8V7kL8amVjFTYw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.9.tgz", + "integrity": "sha512-2QSLs3w4rLy4UUGVnIlkt6IlIKOzR1e0RPsq2FYQW6s3p9JrwRCtOeHohyh7EJSqF54dtfhe9UZSAwba3LqH1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.9.tgz", + "integrity": "sha512-qhUGI/uVfvLmKWts4QkVHGL8yfUyJkblZs+OFD5Upa2y676EOsbQgWsCwX4xGB6Tv+TOzFP0SLh/UfO8ZfdE+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.9.tgz", + "integrity": "sha512-VjfmR1hgO9n3L6MaE5KG+DXSrrLVqHHOkVcOtS2LMq3bjMTwbBywY7ycymcLnX5KJsol8d3ZGYep6IfSOt3lFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.9.tgz", + "integrity": "sha512-0kldV+3WTs/VYDWzxJ7K40hCW26IHtnk8xPK3whKoo1649rgeXXa0EdsU5P7hG8Ef5SWQjHHHZ/fuHYSO3Y6HA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.9.tgz", + "integrity": "sha512-Gi4872cFtc2d83FKATR6Qcf2VBa/tFCqffI/IwRRl6Hx5FulEBqx+tH7gAuRVF693vrbXNxK+FQ+k4iEsEJxrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.9.tgz", + "integrity": "sha512-5QEzqo6EaolpuZmK6w/mgSueorgGnnzp7dJaAvBj6ECFIg/aLXhXXmWCWbxt7Ws2gKvG5/PgaxDqbUxYL51juA==", + "cpu": [ + "wasm32" + ], + "dev": true, "license": "MIT", "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "@napi-rs/wasm-runtime": "1.0.7" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.9.tgz", + "integrity": "sha512-MMqvcrIc8aOqTuHjWkjdzilvoZ3Hv07Od0Foogiyq3JMudsS3Wcmh7T1dFerGg19MOJcRUeEkrg2NQOMOQ6xDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.9.tgz", + "integrity": "sha512-4kYYS+NZ2CuNbKjq40yB/UEyB51o1PHj5wpr+Y943oOJXpEKWU2Q4vkF8VEohPEcnA9cKVotYCnqStme+02suA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.9.tgz", + "integrity": "sha512-1g+QyXXvs+838Un/4GaUvJfARDGHMCs15eXDYWBl5m/Skubyng8djWAgr6ag1+cVoJZXCPOvybTItcblWF3gbQ==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.9.tgz", + "integrity": "sha512-VHuSKvRkuv42Ya+TxEGO0LE0r9+8P4tKGokmomj4R1f/Nu2vtS3yoaIMfC4fR6VuHGd3MZ+KTI0cNNwHfFcskw==", + "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@module-federation/runtime-tools": "0.22.0", + "@rspack/binding": "1.7.9", + "@rspack/lite-tapable": "1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.12.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, - "node_modules/end-of-stream": { - "version": "1.4.4", + "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", + "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", + "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", "dev": true, "license": "MIT", "dependencies": { - "once": "^1.4.0" + "@module-federation/error-codes": "0.22.0", + "@module-federation/runtime-core": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/engine.io-client": { - "version": "6.2.3", + "node_modules/@rspack/core/node_modules/@module-federation/runtime-core": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", + "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", + "dev": true, "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" + "@module-federation/error-codes": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/engine.io-parser": { - "version": "5.0.6", + "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", + "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10.0.0" + "dependencies": { + "@module-federation/runtime": "0.22.0", + "@module-federation/webpack-bundler-runtime": "0.22.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", + "node_modules/@rspack/core/node_modules/@module-federation/sdk": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", + "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", + "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" + "@module-federation/runtime": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/enquirer": { - "version": "2.3.6", + "node_modules/@rspack/dev-server": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.2.1.tgz", + "integrity": "sha512-e/ARvskYn2Qdd02qLvc0i6H9BnOmzP0xGHS2XCr7GZ3t2k5uC5ZlLkeN1iEebU0FkAW+6ot89NahFo3nupKuww==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.8.1", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.22.1", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "engines": { - "node": ">=8.6" + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@rspack/core": "*" } }, - "node_modules/entities": { - "version": "2.2.0", + "node_modules/@rspack/dev-server/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "license": "MIT" }, - "node_modules/env-paths": { - "version": "2.2.1", + "node_modules/@rspack/dev-server/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/err-code": { - "version": "2.0.3", + "node_modules/@rspack/dev-server/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/errno": { - "version": "0.1.8", + "node_modules/@rspack/dev-server/node_modules/memfs": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "dependencies": { - "prr": "~1.0.1" + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "bin": { - "errno": "cli.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/error-ex": { - "version": "1.3.2", + "node_modules/@rspack/dev-server/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", + "node_modules/@rspack/dev-server/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.15.5", + "node_modules/@rspack/dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "optionalDependencies": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild-wasm": { - "version": "0.15.5", + "node_modules/@rspack/dev-server/node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" }, "engines": { - "node": ">=12" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escalade": { - "version": "3.1.1", + "node_modules/@rspack/dev-server/node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "dev": true, "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/escape-html": { - "version": "1.0.3", + "node_modules/@rspack/dev-server/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/eslint": { - "version": "8.15.0", + "node_modules/@rspack/dev-server/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint/eslintrc": "^1.2.3", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "is-wsl": "^3.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-prettier": { - "version": "8.1.0", + "node_modules/@rspack/lite-tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", + "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } + "license": "MIT" }, - "node_modules/eslint-plugin-cypress": { - "version": "2.12.1", + "node_modules/@rspack/plugin-react-refresh": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz", + "integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==", "dev": true, "license": "MIT", "dependencies": { - "globals": "^11.12.0" + "error-stack-parser": "^2.1.4", + "html-entities": "^2.6.0" }, "peerDependencies": { - "eslint": ">= 3.2.1" + "react-refresh": ">=0.10.0 <1.0.0", + "webpack-hot-middleware": "2.x" + }, + "peerDependenciesMeta": { + "webpack-hot-middleware": { + "optional": true + } } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "license": "BSD-2-Clause", + "node_modules/@schematics/angular": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-21.2.2.tgz", + "integrity": "sha512-Ywa6HDtX7TRBQZTVMMnxX3Mk7yVnG8KtSFaXWrkx779+q8tqYdBwNwAqbNd4Zatr1GccKaz9xcptHJta5+DTxw==", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", + "jsonc-parser": "3.3.1" }, "engines": { - "node": ">=8.0.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", + "node_modules/@sigstore/bundle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", + "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "@sigstore/protobuf-specs": "^0.5.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "node_modules/@sigstore/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", + "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@sigstore/sign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", + "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.3", + "proc-log": "^6.1.0", + "promise-retry": "^2.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@sigstore/tuf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", + "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@sigstore/verify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", + "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type-detect": "4.0.8" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, + "license": "0BSD" + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.31.1", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz", + "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", + "license": "MIT", + "engines": { + "node": ">= 20" }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-x64": "4.2.1", + "@tailwindcss/oxide-freebsd-x64": "4.2.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-x64-musl": "4.2.1", + "@tailwindcss/oxide-wasm32-wasi": "4.2.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=7.0.0" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=4.0" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.13.0" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "dev": true, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], "license": "MIT", + "optional": true, "dependencies": { - "type-fest": "^0.20.2" + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">= 20" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, + "node_modules/@tailwindcss/postcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", + "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "postcss": "^8.5.6", + "tailwindcss": "4.2.1" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/@tsconfig/node10": { + "version": "1.0.9", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@tsconfig/node12": { + "version": "1.0.11", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@tufjs/models": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", + "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^10.1.1" }, "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/@tufjs/models/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/espree": { - "version": "9.4.1", + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "BSD-2-Clause", + "license": "BlueOak-1.0.0", "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "tslib": "^2.4.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "license": "BSD-2-Clause", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "dev": true, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@babel/types": "^7.28.2" } }, - "node_modules/eventemitter-asyncresource": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", + "node_modules/@types/body-parser": { + "version": "1.19.2", "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", "license": "MIT", - "engines": { - "node": ">=0.8.x" + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/execa": { - "version": "4.1.0", + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "@types/node": "*" } }, - "node_modules/executable": { - "version": "4.1.1", + "node_modules/@types/chart.js": { + "version": "2.9.37", "dev": true, "license": "MIT", "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" + "moment": "^2.10.2" } }, - "node_modules/exit": { - "version": "0.1.2", + "node_modules/@types/connect": { + "version": "3.4.35", "dev": true, - "engines": { - "node": ">= 0.8.0" + "license": "MIT", + "dependencies": { + "@types/node": "*" } }, - "node_modules/expect": { - "version": "28.1.3", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT", + "optional": true }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/d3-selection": "*" } }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "license": "MIT", + "optional": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/d3-selection": "*" } }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true }, - "node_modules/expect/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } + "optional": true }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "license": "MIT", + "optional": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/express": { - "version": "4.18.2", - "dev": true, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } + "optional": true }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT", + "optional": true }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "license": "MIT", + "optional": true, "dependencies": { - "ms": "2.0.0" + "@types/d3-selection": "*" } }, - "node_modules/express/node_modules/depd": { - "version": "2.0.0", - "dev": true, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "optional": true }, - "node_modules/extend": { + "node_modules/@types/d3-ease": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/d3-dsv": "*" + } }, - "node_modules/external-editor": { + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-geo": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "license": "MIT", + "optional": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" + "@types/geojson": "*" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "license": "MIT", + "optional": true, "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" + "@types/d3-color": "*" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "optional": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "@types/d3-time": "*" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT", + "optional": true }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT", + "optional": true }, - "node_modules/fast-glob": { - "version": "3.2.7", - "dev": true, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", "license": "MIT", + "optional": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" + "@types/d3-path": "*" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT", + "optional": true }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT", + "optional": true }, - "node_modules/fastparse": { - "version": "1.1.2", - "dev": true, - "license": "MIT" + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT", + "optional": true }, - "node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "optional": true, "dependencies": { - "reusify": "^1.0.4" + "@types/d3-selection": "*" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "license": "Apache-2.0", + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "optional": true, "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", + "node_modules/@types/debug": { + "version": "4.1.7", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/fecha": { - "version": "4.2.3", + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, "license": "MIT" }, - "node_modules/figures": { - "version": "3.2.0", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/events": { + "version": "3.0.0", + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/file-loader": { - "version": "6.2.0", + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } + "optional": true }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "@types/node": "*" } }, - "node_modules/file-loader/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "@types/node": "*" } }, - "node_modules/file-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, "license": "MIT" }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "@types/istanbul-lib-report": "*" } }, - "node_modules/filelist": { - "version": "1.0.4", + "node_modules/@types/jest": { + "version": "29.4.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.4.tgz", + "integrity": "sha512-qezb65VIH7X1wobSnd6Lvdve7PXSyQRa3dljTkhTtDhi603RvHQCshSlJcuyMLHJpeHgY3NKwvDJWxMOOHxGDQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, - "node_modules/finalhandler": { - "version": "1.2.0", + "node_modules/@types/lodash": { + "version": "4.14.191", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "@types/lodash": "*" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "14.14.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", + "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==" + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@types/node": "*" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", + "node_modules/@types/parse-json": { + "version": "4.0.0", "dev": true, "license": "MIT" }, - "node_modules/find-cache-dir": { - "version": "3.3.2", + "node_modules/@types/qs": { + "version": "6.9.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/find-up": { - "version": "4.1.0", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/express": "*" } }, - "node_modules/firebase": { - "version": "9.16.0", - "license": "Apache-2.0", + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", "dependencies": { - "@firebase/analytics": "0.9.1", - "@firebase/analytics-compat": "0.2.1", - "@firebase/app": "0.9.1", - "@firebase/app-check": "0.6.1", - "@firebase/app-check-compat": "0.3.1", - "@firebase/app-compat": "0.2.1", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "0.21.1", - "@firebase/auth-compat": "0.3.1", - "@firebase/database": "0.14.1", - "@firebase/database-compat": "0.3.1", - "@firebase/firestore": "3.8.1", - "@firebase/firestore-compat": "0.3.1", - "@firebase/functions": "0.9.1", - "@firebase/functions-compat": "0.3.1", - "@firebase/installations": "0.6.1", - "@firebase/installations-compat": "0.2.1", - "@firebase/messaging": "0.12.1", - "@firebase/messaging-compat": "0.2.1", - "@firebase/performance": "0.6.1", - "@firebase/performance-compat": "0.2.1", - "@firebase/remote-config": "0.4.1", - "@firebase/remote-config-compat": "0.2.1", - "@firebase/storage": "0.10.1", - "@firebase/storage-compat": "0.2.1", - "@firebase/util": "1.9.0" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" } }, - "node_modules/flat": { - "version": "5.0.2", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } + "license": "MIT" }, - "node_modules/flat-cache": { - "version": "3.0.4", + "node_modules/@types/sizzle": { + "version": "2.3.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "@types/node": "*" } }, - "node_modules/flatted": { - "version": "3.2.7", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "license": "ISC" - }, - "node_modules/fn.name": { - "version": "1.1.0", "license": "MIT" }, - "node_modules/follow-redirects": { - "version": "1.15.2", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "dependencies": { + "@types/node": "*" } }, - "node_modules/for-each": { - "version": "0.3.3", + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "@types/yargs-parser": "*" } }, - "node_modules/forever-agent": { - "version": "0.6.1", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "7.2.13", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.38.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/type-utils": "5.38.1", + "@typescript-eslint/utils": "5.38.1", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">3.6.0", - "vue-template-compiler": "*", - "webpack": "^5.11.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "vue-template-compiler": { + "typescript": { "optional": true } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "5.38.1", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@typescript-eslint/typescript-estree": "5.38.1", + "@typescript-eslint/utils": "5.38.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "dev": true, - "license": "MIT", + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, "peerDependencies": { - "ajv": "^6.9.1" + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.38.1", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@typescript-eslint/parser": { + "version": "5.38.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz", + "integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/tsconfig-utils": "^8.57.1", + "@typescript-eslint/types": "^8.57.1", + "debug": "^4.4.3" }, "engines": { - "node": ">=7.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@typescript-eslint/project-service/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/@typescript-eslint/project-service/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.38.1", "dev": true, "license": "MIT", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1" }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz", + "integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz", + "integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1", + "@typescript-eslint/utils": "8.57.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.0", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/form-data": { - "version": "2.3.3", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/fraction.js": { - "version": "4.2.0", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.1", + "eslint-visitor-keys": "^5.0.0" + }, "engines": { - "node": "*" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/fresh": { - "version": "0.5.2", + "node_modules/@typescript-eslint/type-utils/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": "18 || 20 || >=22" } }, - "node_modules/froala-editor": { - "version": "4.0.15", - "license": "https://www.froala.com/wysiwyg-editor/pricing" - }, - "node_modules/fs-constants": { - "version": "1.0.0", + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "5.0.0", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">= 8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/fs-monkey": { - "version": "1.0.3", + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/function-bind": { - "version": "1.1.1", + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "MIT" + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, - "node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/@typescript-eslint/types": { + "version": "5.38.1", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fuzzy": { - "version": "0.1.3", "engines": { - "node": ">= 0.6.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/gauge": { - "version": "4.0.4", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.38.1", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "dev": true, + "node_modules/@typescript-eslint/utils": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz", + "integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==", + "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/typescript-estree": "8.57.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-own-enumerable-property-symbols": { - "version": "3.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/get-stream": { - "version": "5.2.0", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz", + "integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/getos": { - "version": "3.2.1", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz", + "integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==", "dev": true, "license": "MIT", - "dependencies": { - "async": "^3.2.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/getpass": { - "version": "0.1.7", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz", + "integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==", "dev": true, "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "8.0.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@typescript-eslint/project-service": "8.57.1", + "@typescript-eslint/tsconfig-utils": "8.57.1", + "@typescript-eslint/types": "8.57.1", + "@typescript-eslint/visitor-keys": "8.57.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "license": "BSD-2-Clause" - }, - "node_modules/global-dirs": { - "version": "3.0.1", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz", + "integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==", "dev": true, "license": "MIT", "dependencies": { - "ini": "2.0.0" + "@typescript-eslint/types": "8.57.1", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", + "node_modules/@typescript-eslint/utils/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/globals": { - "version": "11.12.0", "license": "MIT", "engines": { - "node": ">=4" + "node": "18 || 20 || >=22" } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "18 || 20 || >=22" } }, - "node_modules/globby/node_modules/fast-glob": { - "version": "3.2.12", + "node_modules/@typescript-eslint/utils/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "ms": "^2.1.3" }, "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/good-listener": { - "version": "1.2.2", - "license": "MIT", - "dependencies": { - "delegate": "^3.1.2" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/google-libphonenumber": { - "version": "3.2.32", - "license": "(MIT AND Apache-2.0)", + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/gopd": { - "version": "1.0.1", + "node_modules/@typescript-eslint/utils/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "get-intrinsic": "^1.1.3" + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" + "node_modules/@typescript-eslint/utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "node_modules/gzipper": { - "version": "4.5.0", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.38.1", "dev": true, - "license": "GPL-3.0", + "license": "MIT", "dependencies": { - "commander": "^7.2.0", - "deep-equal": "^2.0.5", - "uuid": "^8.3.2" - }, - "bin": { - "gzipper": "bin/index.js" + "@typescript-eslint/types": "5.38.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/gzipper/node_modules/commander": { - "version": "7.2.0", + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/handle-thing": { - "version": "2.0.1", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/harmony-reflect": { - "version": "1.6.2", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "(Apache-2.0 OR MPL-1.1)" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/has": { - "version": "1.0.3", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/has-bigints": { - "version": "1.0.2", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/has-flag": { - "version": "3.0.0", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/has-symbols": { - "version": "1.0.3", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/has-tostringtag": { - "version": "1.0.0", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/has-unicode": { - "version": "2.0.1", + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "ISC" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/hdr-histogram-js": { - "version": "2.0.3", + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "BSD", - "dependencies": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/hdr-histogram-percentiles-obj": { - "version": "3.0.0", + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/he": { - "version": "1.2.0", + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "bin": { - "he": "bin/he" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/highcharts": { - "version": "10.3.3", - "license": "https://www.highcharts.com/license" + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/highcharts-angular": { - "version": "3.0.0", - "license": "SEE LICENSE IN ", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/common": ">=9.0.0", - "@angular/core": ">=9.0.0", - "highcharts": ">=6.0.0" - } + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/hosted-git-info": { - "version": "5.2.1", + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, "dependencies": { - "lru-cache": "^7.5.1" + "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.14.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/hpack.js": { - "version": "2.1.6", + "node_modules/@unrs/resolver-binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optional": true, + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-2.1.4.tgz", + "integrity": "sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/html-entities": { - "version": "2.3.3", + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, - "node_modules/html-escaper": { - "version": "2.0.2", + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT" }, - "node_modules/http-deceiver": { - "version": "1.2.7", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, - "node_modules/http-errors": { - "version": "2.0.0", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/http-errors/node_modules/depd": { - "version": "2.0.0", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, "license": "MIT" }, - "node_modules/http-proxy": { - "version": "1.18.1", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, - "node_modules/http-server": { - "version": "14.1.1", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/http-server/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/http-server/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@webcomponents/custom-elements": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", + "integrity": "sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==" + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=18.12.0" } }, - "node_modules/http-server/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=7.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/http-server/node_modules/has-flag": { + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/abbrev": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/http-server/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/accepts": { + "version": "1.3.8", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/http-signature": { - "version": "1.3.6", - "dev": true, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10" + "node": ">=0.4.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" } }, - "node_modules/human-signals": { - "version": "1.1.1", + "node_modules/acorn-jsx": { + "version": "5.3.2", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", + "node_modules/acorn-walk": { + "version": "8.2.0", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/husky": { - "version": "7.0.4", + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", "dev": true, "license": "MIT", - "bin": { - "husky": "lib/bin.js" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" + "node": ">= 10.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.9" } }, - "node_modules/icss-utils": { - "version": "5.1.0", + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": ">=8.9.0" } }, - "node_modules/idb": { - "version": "7.0.1", - "license": "ISC" - }, - "node_modules/identity-obj-proxy": { - "version": "3.0.0", + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", "dev": true, "license": "MIT", - "dependencies": { - "harmony-reflect": "^1.4.6" - }, "engines": { - "node": ">=4" + "node": ">=12.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.2.4", + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 14" } }, - "node_modules/ignore-walk": { - "version": "5.0.1", + "node_modules/aggregate-error": { + "version": "3.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/image-size": { - "version": "0.5.5", - "dev": true, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/immutable": { - "version": "4.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.0", + "node_modules/ajv-formats": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", + "node_modules/ajv-keywords": { + "version": "5.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/import-local": { - "version": "3.1.0", + "node_modules/algoliasearch": { + "version": "5.48.1", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.48.1.tgz", + "integrity": "sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "@algolia/abtesting": "1.14.1", + "@algolia/client-abtesting": "5.48.1", + "@algolia/client-analytics": "5.48.1", + "@algolia/client-common": "5.48.1", + "@algolia/client-insights": "5.48.1", + "@algolia/client-personalization": "5.48.1", + "@algolia/client-query-suggestions": "5.48.1", + "@algolia/client-search": "5.48.1", + "@algolia/ingestion": "1.48.1", + "@algolia/monitoring": "1.48.1", + "@algolia/recommend": "5.48.1", + "@algolia/requester-browser-xhr": "5.48.1", + "@algolia/requester-fetch": "5.48.1", + "@algolia/requester-node-http": "5.48.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/angular-froala-wysiwyg": { + "version": "4.0.15", + "dependencies": { + "froala-editor": "4.0.15", + "tslib": "^2.0.0" + } + }, + "node_modules/angular-text-input-highlight": { + "version": "1.4.3", + "license": "MIT", + "peerDependencies": { + "@angular/core": ">=2.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.19" + "node": ">=6" } }, - "node_modules/indent-string": { - "version": "4.0.0", + "node_modules/ansi-escapes": { + "version": "4.3.2", "dev": true, "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/infer-owner": { - "version": "1.0.4", + "node_modules/ansi-html-community": { + "version": "0.0.8", "dev": true, - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "3.0.0", - "dev": true, - "license": "ISC", + "node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/inquirer": { - "version": "8.2.4", + "node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=4" } }, - "node_modules/inquirer-autocomplete-prompt": { - "version": "1.4.0", + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, "license": "ISC", "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "figures": "^3.2.0", - "run-async": "^2.4.0", - "rxjs": "^6.6.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">= 8" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/app-root-path": { + "version": "3.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 6.0.0" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/arch": { + "version": "2.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/inquirer-autocomplete-prompt/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/arg": { + "version": "4.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "1.0.10", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { - "version": "6.6.7", + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, "engines": { - "npm": ">=2.0.0" + "node": ">= 0.4" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/asn1": { + "version": "0.2.6", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "safer-buffer": "~2.1.0" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/asn1js/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/ast-types-flow": { + "version": "0.0.7", + "dev": true, + "license": "ISC" }, - "node_modules/internal-slot": { - "version": "1.0.4", + "node_modules/astral-regex": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "license": "ISC", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/intl-tel-input": { - "version": "17.0.19", - "license": "MIT" - }, - "node_modules/ip": { - "version": "2.0.0", + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true, "license": "MIT" }, - "node_modules/ipaddr.js": { - "version": "2.0.1", + "node_modules/asynckit": { + "version": "0.4.0", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "dev": true, + "license": "ISC", "engines": { - "node": ">= 10" + "node": ">= 4.0.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": ">= 0.4" + "node": "^10 || ^12 || >=14" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.1", + "node_modules/available-typed-arrays": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", + "node_modules/aws-sign2": { + "version": "0.7.0", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "*" + } }, - "node_modules/is-bigint": { - "version": "1.0.4", + "node_modules/aws4": { + "version": "1.12.0", "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "dev": true, "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", + "node_modules/axios/node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-buffer": { - "version": "1.1.6", + "node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true, "license": "MIT" }, - "node_modules/is-callable": { - "version": "1.2.7", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "3.0.1", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "ci-info": "^3.2.0" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-docker": { - "version": "2.2.1", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/is-glob": { - "version": "4.0.3", + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "find-up": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", + "node_modules/babel-loader/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" @@ -13883,1515 +18332,1525 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-map": { - "version": "2.0.2", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number-object": { - "version": "1.0.7", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-obj": { - "version": "1.0.1", + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-regex": { - "version": "1.1.4", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10", + "npm": ">=6" } }, - "node_modules/is-regexp": { - "version": "1.0.0", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/is-set": { - "version": "2.0.2", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", + "node_modules/balanced-match": { + "version": "1.0.2", "dev": true, "license": "MIT" }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { + "node_modules/base64-inline-loader": { "version": "2.0.1", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.32" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.2", + "npm": ">=3.8" } }, - "node_modules/is-what": { - "version": "3.14.1", + "node_modules/base64-inline-loader/node_modules/loader-utils": { + "version": "2.0.4", "dev": true, - "license": "MIT" - }, - "node_modules/is-wsl": { - "version": "2.2.0", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=8" + "node": ">=8.9.0" } }, - "node_modules/isarray": { - "version": "2.0.5", + "node_modules/base64-js": { + "version": "1.5.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" + "node_modules/baseline-browser-mapping": { + "version": "2.10.8", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz", + "integrity": "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "dev": true, "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/isstream": { - "version": "0.1.2", + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", + "node_modules/batch": { + "version": "0.6.1", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "tweetnacl": "^0.14.3" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", + "node_modules/beasties": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.4.1.tgz", + "integrity": "sha512-2Imdcw3LznDuxAbJM26RHniOLAzE6WgrK8OuvVXCQtNBS8rsnD9zsSEa3fHl4hHpUY7BYTlrpvtPVbvu9G6neg==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "css-select": "^6.0.0", + "css-what": "^7.0.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3", + "postcss-safe-parser": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/big.js": { + "version": "5.2.2", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", + "node_modules/blob-util": { + "version": "2.0.2", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "license": "Apache-2.0" }, - "node_modules/istanbul-reports": { - "version": "3.1.5", + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/jake": { - "version": "10.8.5", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=7.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/bs-logger": { + "version": "0.2.6", "dev": true, "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "node-int64": "^0.4.0" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" }, "engines": { - "node": "*" + "node": ">= 0.4.0" } }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/buffer": { + "version": "5.7.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/jest": { - "version": "28.1.3", + "node_modules/buffer-crc32": { + "version": "0.2.13", "dev": true, "license": "MIT", - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": "*" } }, - "node_modules/jest-changed-files": { - "version": "28.1.3", + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "1.1.1", "dev": true, "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", "dev": true, - "license": "Apache-2.0", + "license": "BSD-3-Clause", "engines": { - "node": ">=10.17.0" + "node": ">=6.0.0" } }, - "node_modules/jest-circus": { - "version": "28.1.3", + "node_modules/cacache": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", + "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/jest-circus/node_modules/@jest/test-result": { - "version": "28.1.3", + "node_modules/cacache/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "20 || >=22" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/cacache/node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", + "node_modules/cachedir": { + "version": "2.3.0", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/callsites": { + "version": "3.1.0", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-cli": { - "version": "28.1.3", + "node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6" } }, - "node_modules/jest-cli/node_modules/@jest/test-result": { - "version": "28.1.3", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/caniuse-lite": { + "version": "1.0.30001779", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001779.tgz", + "integrity": "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "2.4.2", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/jest-cli/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=10" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, + "license": "MIT" + }, + "node_modules/chart.js": { + "version": "2.9.4", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/chartjs-color": { + "version": "2.4.1", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "chartjs-color-string": "^0.6.0", + "color-convert": "^1.9.3" } }, - "node_modules/jest-cli/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "node_modules/chartjs-color-string": { + "version": "0.6.0", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "color-name": "^1.0.0" } }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/check-more-types": { + "version": "2.24.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/jest-cli/node_modules/jest-config": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/chevrotain": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" } }, - "node_modules/jest-cli/node_modules/jest-resolve": { - "version": "28.1.3", - "dev": true, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", "license": "MIT", + "optional": true, "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "lodash-es": "^4.17.21" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "chevrotain": "^11.0.0" } }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/chevrotain/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT", + "optional": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/jest-cli/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0" } }, - "node_modules/jest-config": { - "version": "28.1.1", + "node_modules/ci-info": { + "version": "3.7.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.1", - "@jest/types": "^28.1.1", - "babel-jest": "^28.1.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.1", - "jest-environment-node": "^28.1.1", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.1", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "2.2.0", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/cli-cursor": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/cli-table3": { + "version": "0.6.3", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "string-width": "^4.2.0" }, "engines": { - "node": ">=7.0.0" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", + "node_modules/cli-truncate": { + "version": "2.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": "*" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 12" } }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, + "node_modules/clipboard": { + "version": "2.0.11", + "license": "MIT", + "optional": true, + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/jest-diff": { - "version": "28.1.3", + "node_modules/clone-deep": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", + "node_modules/codelyzer": { + "version": "6.0.2", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "tslib": "^1.10.0" } }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" } }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/codelyzer/node_modules/aria-query": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" } }, - "node_modules/jest-docblock": { - "version": "28.1.1", + "node_modules/codelyzer/node_modules/axobject-query": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "ast-types-flow": "0.0.7" } }, - "node_modules/jest-each": { - "version": "28.1.3", + "node_modules/codelyzer/node_modules/rxjs": { + "version": "6.6.7", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" + "tslib": "^1.9.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "npm": ">=2.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "license": "0BSD" }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "dev": true, + "license": "MIT" + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "dev": true, + "license": "MIT" }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/combined-stream": { + "version": "1.0.8", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jest-environment-node": { - "version": "28.1.3", + "node_modules/commander": { + "version": "2.20.3", + "license": "MIT" + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/common-tags": { + "version": "1.8.2", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=4.0.0" } }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/compressible": { + "version": "2.0.18", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/jest-environment-node/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "ms": "2.0.0" } }, - "node_modules/jest-environment-node/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, + "node_modules/concat": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "commander": "^2.9.0" + }, + "bin": { + "concat": "bin/concat" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=6" } }, - "node_modules/jest-environment-node/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/concat-map": { + "version": "0.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "optional": true }, - "node_modules/jest-get-type": { - "version": "28.0.2", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=0.8" } }, - "node_modules/jest-haste-map": { - "version": "28.1.3", + "node_modules/content-disposition": { + "version": "0.5.4", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "safe-buffer": "5.2.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 0.6" } }, - "node_modules/jest-haste-map/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/content-type": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/jest-haste-map/node_modules/chalk": { - "version": "4.1.2", + "node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.6" } }, - "node_modules/jest-haste-map/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "depd": "~2.0.0", + "keygrip": "~1.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-haste-map/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/cookies/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jest-haste-map/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "is-what": "^3.14.1" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "28.1.3", + "node_modules/copy-webpack-plugin": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "glob-parent": "^6.0.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^7.0.3", + "tinyglobby": "^0.2.12" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 20.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/jest-haste-map/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "28.1.3", - "dev": true, + "node_modules/core-js": { + "version": "3.27.2", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/jest-matcher-utils": { - "version": "28.1.3", + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "browserslist": "^4.28.1" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/core-util-is": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">=10" + "node": ">= 0.10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/corser": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4.0" } }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", "license": "MIT", - "engines": { - "node": ">=8" + "optional": true, + "dependencies": { + "layout-base": "^1.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/cosmiconfig": { + "version": "7.1.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-message-util": { - "version": "28.1.3", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { + "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -15404,8 +19863,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/chalk": { + "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -15419,8 +19880,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { + "node_modules/create-jest/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15430,16 +19893,20 @@ "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/has-flag": { + "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/supports-color": { + "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -15449,362 +19916,466 @@ "node": ">=8" } }, - "node_modules/jest-mock": { - "version": "28.1.3", + "node_modules/create-require": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" + "luxon": "^3.2.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "dev": true, + "node_modules/cross-fetch": { + "version": "3.1.5", + "license": "MIT", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { - "node": ">=6" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "jest-resolve": "*" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "jest-resolve": { + "encoding": { "optional": true } } }, - "node_modules/jest-regex-util": { - "version": "28.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "28.1.1", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 8" } }, - "node_modules/jest-resolve-dependencies": { - "version": "28.1.3", + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css-declaration-sorter": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", + "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - }, + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/css-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz", + "integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" }, "engines": { - "node": ">=8" + "node": ">= 18.12.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">= 14.15.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } } }, - "node_modules/jest-resolve/node_modules/has-flag": { + "node_modules/css-minimizer-webpack-plugin/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner": { - "version": "28.1.3", + "node_modules/css-minimizer-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "randombytes": "^2.1.0" } }, - "node_modules/jest-runner/node_modules/@jest/test-result": { - "version": "28.1.3", + "node_modules/css-minimizer-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/css-select": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-6.0.0.tgz", + "integrity": "sha512-rZZVSLle8v0+EY8QAkDWrKhpgt6SA5OtHsgBnsj6ZaLb5dmDVOWUDtQitd9ydxxvEjhewNudS6eTVU7uOyzvXw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "boolbase": "^1.0.0", + "css-what": "^7.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "nth-check": "^2.1.1" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/css-what": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-7.0.0.tgz", + "integrity": "sha512-wD5oz5xibMOPHzy13CyGmogB3phdvcDaB5t0W/Nr5Z2O/agcB8YwOz6e2Lsp10pNDzBoDO9nVa3RGs/2BttpHQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/jest-resolve": { - "version": "28.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "node": ">= 6" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/jest-runner/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/cssauron": { + "version": "1.4.0", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "through": "X.X.X" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "28.1.3", + "node_modules/cssesc": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=4" } }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" }, "engines": { - "node": ">=10" + "node": "^14 || ^16 || >=18.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", "dev": true, "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "css-tree": "~2.2.0" }, "engines": { - "node": ">=8" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/jest-runtime": { - "version": "28.1.3", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/test-result": { - "version": "28.1.3", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true, - "license": "MIT", + "license": "CC0-1.0" + }, + "node_modules/cypress": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz", + "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==", + "dev": true, + "hasInstallScript": true, "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@cypress/request": "^2.88.10", + "@cypress/xvfb": "^1.2.4", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.6.0", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "^6.4.3", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/cypress/node_modules/@types/node": { + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", + "dev": true + }, + "node_modules/cypress/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "license": "MIT", @@ -15818,16 +20389,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/cypress/node_modules/bluebird": { + "version": "3.7.2", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/jest-runtime/node_modules/chalk": { + "node_modules/cypress/node_modules/chalk": { "version": "4.1.2", "dev": true, "license": "MIT", @@ -15842,70 +20409,51 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/cypress/node_modules/commander": { + "version": "5.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", + "node_modules/cypress/node_modules/fs-extra": { + "version": "9.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/jest-runtime/node_modules/has-flag": { + "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -15913,844 +20461,766 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/human-signals": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/jest-runtime/node_modules/jest-resolve": { - "version": "28.1.3", + "node_modules/cypress/node_modules/jsonfile": { + "version": "6.1.0", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "universalify": "^2.0.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/jest-runtime/node_modules/jest-util": { - "version": "28.1.3", + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/cypress/node_modules/universalify": { + "version": "2.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 10.0.0" } }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/jest-snapshot": { - "version": "28.1.3", - "dev": true, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", "license": "MIT", + "optional": true, "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "cose-base": "^1.0.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "cose-base": "^2.2.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "dev": true, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "layout-base": "^2.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/cytoscape-fcose/node_modules/layout-base": { "version": "2.0.1", - "dev": true, + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", "license": "MIT", + "optional": true + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "optional": true, "dependencies": { - "color-name": "~1.1.4" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/d3-array": { + "version": "3.2.2", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-snapshot/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "optional": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/d3-brush": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-util": { - "version": "28.1.1", - "dev": true, - "license": "MIT", + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "optional": true, "dependencies": { - "@jest/types": "^28.1.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "d3-path": "1 - 3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/d3-color": { + "version": "3.1.0", + "license": "ISC", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "d3-array": "^3.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "optional": true, "dependencies": { - "color-name": "~1.1.4" + "delaunator": "5" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/d3-dispatch": { + "version": "3.0.1", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/d3-drag": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-validate": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "optional": true, "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "optional": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">= 10" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", + "node_modules/d3-ease": { + "version": "3.0.1", + "license": "BSD-3-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "optional": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "optional": true, "dependencies": { - "color-name": "~1.1.4" + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/d3-format": { + "version": "3.1.0", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-watcher": { - "version": "28.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/@jest/test-result": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/d3-interpolate": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "d3-color": "1 - 3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/d3-path": { + "version": "3.1.0", + "license": "ISC", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "optional": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "optional": true, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "optional": true, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "28.1.3", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" } }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "internmap": "^1.0.0" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "license": "MIT", + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "optional": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "d3-path": "1" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC", + "optional": true + }, + "node_modules/d3-scale": { + "version": "3.3.0", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "^2.3.0", + "d3-format": "1 - 2", + "d3-interpolate": "1.2.0 - 2", + "d3-time": "^2.1.1", + "d3-time-format": "2 - 3" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "license": "MIT", + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "optional": true, "dependencies": { - "has-flag": "^4.0.0" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=12" } }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "dev": true, - "peer": true + "node_modules/d3-scale/node_modules/d3-array": { + "version": "2.12.1", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" + "node_modules/d3-scale/node_modules/d3-color": { + "version": "2.0.0", + "license": "BSD-3-Clause" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", + "node_modules/d3-scale/node_modules/d3-format": { + "version": "2.0.0", + "license": "BSD-3-Clause" + }, + "node_modules/d3-scale/node_modules/d3-interpolate": { + "version": "2.0.1", + "license": "BSD-3-Clause", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "d3-color": "1 - 2" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "dev": true, - "license": "MIT" + "node_modules/d3-scale/node_modules/internmap": { + "version": "1.0.1", + "license": "ISC" }, - "node_modules/jsesc": { - "version": "2.5.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "node_modules/d3-selection": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "license": "MIT" + "node_modules/d3-time": { + "version": "2.1.1", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "2" + } }, - "node_modules/json-schema": { - "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" + "node_modules/d3-time-format": { + "version": "3.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "d3-time": "1 - 2" + } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT" + "node_modules/d3-time/node_modules/d3-array": { + "version": "2.12.1", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } }, - "node_modules/json-stable-stringify-without-jsonify": { + "node_modules/d3-time/node_modules/internmap": { "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, "license": "ISC" }, - "node_modules/json5": { - "version": "2.2.3", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, + "node_modules/d3-timer": { + "version": "3.0.1", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/jsonc-parser": { - "version": "3.1.0", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/d3-transition": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/jsprim": { - "version": "2.0.2", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "optional": true, "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/jssip": { - "version": "3.10.0", - "license": "MIT", + "node_modules/d3/node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "optional": true, "dependencies": { - "@types/debug": "^4.1.7", - "@types/events": "^3.0.0", - "debug": "^4.3.1", - "events": "^3.3.0", - "sdp-transform": "^2.14.1" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" } }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "dev": true, - "license": "MIT", + "node_modules/d3/node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "optional": true, "dependencies": { - "source-map-support": "^0.5.5" + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" } }, - "node_modules/katex": { - "version": "0.16.4", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "license": "MIT", + "node_modules/d3/node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "optional": true, "dependencies": { - "commander": "^8.0.0" + "d3-time": "1 - 3" }, - "bin": { - "katex": "cli.js" + "engines": { + "node": ">=12" } }, - "node_modules/katex/node_modules/commander": { - "version": "8.3.0", + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", "license": "MIT", - "engines": { - "node": ">= 12" + "optional": true, + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" } }, - "node_modules/khroma": { - "version": "2.0.0" - }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "BSD-2-Clause" }, - "node_modules/kleur": { - "version": "3.0.3", + "node_modules/dashdash": { + "version": "1.14.1", "dev": true, "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=0.10" } }, - "node_modules/klona": { - "version": "2.0.6", + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=4.0" } }, - "node_modules/kuler": { - "version": "2.0.0", + "node_modules/dayjs": { + "version": "1.11.7", "license": "MIT" }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "dev": true, + "node_modules/debug": { + "version": "4.3.4", "license": "MIT", - "engines": { - "node": "> 0.8" - } - }, - "node_modules/less": { - "version": "4.1.3", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" + "ms": "2.1.2" }, "engines": { - "node": ">=6" + "node": ">=6.0" }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/less-loader": { - "version": "11.0.0", + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", - "dependencies": { - "klona": "^2.0.4" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", + "node_modules/deep-equal": { + "version": "2.2.0", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/leven": { - "version": "3.1.0", - "dev": true, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/levn": { - "version": "0.4.1", + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/license-webpack-plugin": { - "version": "4.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "webpack-sources": "^3.0.0" + "node": ">=18" }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/linkifyjs": { - "version": "3.0.0-beta.3", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, - "peerDependencies": { - "jquery": ">= 1.11.0", - "react": ">= 0.14.0", - "react-dom": ">= 0.14.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged": { - "version": "11.2.6", + "node_modules/default-gateway": { + "version": "6.0.3", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "execa": "^5.0.0" }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "8.3.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 12" + "node": ">= 10" } }, - "node_modules/lint-staged/node_modules/execa": { + "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", "dev": true, "license": "MIT", @@ -16772,7 +21242,7 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/lint-staged/node_modules/get-stream": { + "node_modules/default-gateway/node_modules/get-stream": { "version": "6.0.1", "dev": true, "license": "MIT", @@ -16783,15 +21253,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { + "node_modules/default-gateway/node_modules/human-signals": { "version": "2.1.0", "dev": true, "license": "Apache-2.0", @@ -16799,1782 +21261,1915 @@ "node": ">=10.17.0" } }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "clone": "^1.0.2" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2": { - "version": "3.14.0", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.19", + "node_modules/define-lazy-prop": { + "version": "2.0.0", "dev": true, - "license": "MIT" - }, - "node_modules/loader-runner": { - "version": "4.3.0", "license": "MIT", "engines": { - "node": ">=6.11.5" + "node": ">=8" } }, - "node_modules/loader-utils": { - "version": "3.2.0", + "node_modules/define-properties": { + "version": "1.1.4", "dev": true, "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">= 12.13.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/locate-path": { - "version": "5.0.0", + "node_modules/delaunator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "dev": true, - "license": "MIT" + "node_modules/delegate": { + "version": "3.2.0", + "license": "MIT", + "optional": true }, - "node_modules/lodash.merge": { - "version": "4.6.2", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, "license": "MIT" }, - "node_modules/lodash.once": { - "version": "4.1.1", + "node_modules/depd": { + "version": "1.1.2", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.uniq": { - "version": "4.5.0", + "node_modules/destroy": { + "version": "1.2.0", "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/detect-node": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" }, "engines": { - "node": ">=7.0.0" + "node": ">= 4.0.0" } }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/log-update": { - "version": "4.0.0", + "node_modules/dir-glob": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/dns-packet": { + "version": "5.4.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "esutils": "^2.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/logform": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" + "node_modules/dompurify": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" } }, - "node_modules/long": { - "version": "4.0.0", - "license": "Apache-2.0" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, - "peer": true, + "license": "BSD-2-Clause", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "bin": { - "loose-envify": "cli.js" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" + "node_modules/dotenv": { + "version": "10.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" } }, - "node_modules/magic-string": { - "version": "0.26.2", - "license": "MIT", + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "sourcemap-codec": "^1.4.8" + "dotenv": "^16.4.5" }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/make-dir": { - "version": "3.1.0", + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://dotenvx.com" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/make-error": { - "version": "1.3.6", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", + "node_modules/ecc-jsbn": { + "version": "0.1.2", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.14.1", + "node_modules/ee-first": { + "version": "1.1.1", "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } + "license": "MIT" }, - "node_modules/makeerror": { - "version": "1.0.12", + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/marked": { - "version": "4.2.12", - "license": "MIT", + "jake": "^10.8.5" + }, "bin": { - "marked": "bin/marked.js" + "ejs": "bin/cli.js" }, "engines": { - "node": ">= 12" - } - }, - "node_modules/md5": { - "version": "2.3.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "node": ">=0.10.0" } }, - "node_modules/mdn-data": { - "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" + "node_modules/electron-to-chromium": { + "version": "1.5.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz", + "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==", + "license": "ISC" }, - "node_modules/media-typer": { - "version": "0.3.0", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.13", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.3" + "node": ">=12" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "dev": true, + "node_modules/emoji-regex": { + "version": "8.0.0", "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" + "node_modules/emoji-toolkit": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-10.0.0.tgz", + "integrity": "sha512-GkIAvgutEVbkqcT2HjBzV002SWvpdNaT3aP9q/YjQ6hlgDq8HhE9GcqxWkyYkRRQnLADGpwDoj1heTw9KzO9wQ==", + "license": "MIT", + "optional": true }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/emojis-list": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" - } - }, - "node_modules/mermaid": { - "version": "9.3.0", - "license": "MIT", - "dependencies": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", - "uuid": "^9.0.0" - } - }, - "node_modules/mermaid/node_modules/uuid": { - "version": "9.0.0", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">= 4" } }, - "node_modules/methods": { - "version": "1.1.2", + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/micromatch": { - "version": "4.0.5", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "iconv-lite": "^0.6.2" } }, - "node_modules/mime": { - "version": "1.6.0", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", + "node_modules/engine.io-client": { + "version": "6.2.3", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/engine.io-parser": { + "version": "5.0.6", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.6.1", - "dev": true, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "license": "MIT", "dependencies": { - "schema-utils": "^4.0.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">=10.13.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/enquirer": { + "version": "2.3.6", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "5.1.0", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/minimist": { - "version": "1.2.7", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass": { - "version": "3.3.6", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/minipass-collect": { - "version": "1.0.2", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, "dependencies": { - "minipass": "^3.0.0" + "prr": "~1.0.1" }, - "engines": { - "node": ">= 8" + "bin": { + "errno": "cli.js" } }, - "node_modules/minipass-fetch": { - "version": "2.1.2", + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "is-arrayish": "^0.2.1" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "stackframe": "^1.3.4" } }, - "node_modules/minipass-json-stream": { + "node_modules/es-define-property": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", + "node_modules/es-get-iterator": { + "version": "1.1.3", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/minizlib": { - "version": "2.1.2", + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, + "hasInstallScript": true, "license": "MIT", "bin": { - "mkdirp": "bin/cmd.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, - "node_modules/moment": { - "version": "2.29.4", + "node_modules/esbuild-wasm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.27.3.tgz", + "integrity": "sha512-AUXuOxZ145/5Az+lIqk6TdJbxKTyDGkXMJpTExmBdbnHR6n6qAFx+F4oG9ORpVYJ9dQYeQAqzv51TO4DFKsbXw==", + "dev": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/moment-mini": { - "version": "2.29.4", - "license": "MIT" + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/ms": { - "version": "2.1.2", + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, "license": "MIT" }, - "node_modules/multicast-dns": { - "version": "7.2.5", + "node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "license": "ISC" - }, - "node_modules/nanoid": { - "version": "3.3.4", + "node_modules/eslint": { + "version": "8.15.0", "dev": true, "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "eslint": "bin/eslint.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/native-request": { - "version": "1.1.0", + "node_modules/eslint-config-prettier": { + "version": "8.1.0", "dev": true, "license": "MIT", - "optional": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } }, - "node_modules/needle": { - "version": "3.2.0", + "node_modules/eslint-plugin-cypress": { + "version": "2.12.1", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" + "globals": "^11.12.0" }, - "engines": { - "node": ">= 4.4.x" + "peerDependencies": { + "eslint": ">= 3.2.1" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", + "node_modules/eslint-scope": { + "version": "5.1.1", "dev": true, - "license": "MIT", - "optional": true, + "license": "BSD-2-Clause", "dependencies": { - "ms": "^2.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/eslint-utils": { + "version": "3.0.0", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/negotiator": { - "version": "0.6.3", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "license": "MIT" - }, - "node_modules/ng-click-outside": { - "version": "9.0.1", - "license": "MIT", - "peerDependencies": { - "@angular/common": ">=12.0.0", - "@angular/core": ">=12.0.0" + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/ng-hcaptcha": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ng-hcaptcha/-/ng-hcaptcha-2.6.0.tgz", - "integrity": "sha512-qFtWpYw3LXohFbrFA017c9Z6Jti9vsSh4PPtul3whbg3tTe8T6qXMwC/9TwBP/bTu0uhqulcz7iPuMAs8PdjTA==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.8.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@angular/common": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.01 || ^19.0.0 || ^20.0.0", - "@angular/core": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/forms": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ng-hcaptcha/node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/ng-otp-input": { - "version": "1.8.5", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.2.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@angular/common": ">=6.0.0", - "@angular/core": ">=6.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ngrx-store-localstorage": { - "version": "14.0.0", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.2.2", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@ngrx/store": "^14.0.0" - } + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" }, - "node_modules/ngx-bootstrap": { - "version": "9.0.0", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/animations": "^14.0.0", - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/ngx-build-plus": { - "version": "14.0.0", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/build-angular": ">=14.0.0", - "@schematics/angular": ">=14.0.0", - "webpack-merge": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@angular-devkit/build-angular": ">=12.0.0", - "rxjs": ">= 6.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ngx-cookie-service": { - "version": "14.0.1", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.0" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/ngx-markdown": { - "version": "14.0.1", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "@types/marked": "^4.0.3", - "clipboard": "^2.0.11", - "emoji-toolkit": "^6.6.0", - "katex": "^0.16.0", - "marked": "^4.0.17", - "mermaid": "^9.1.2", - "prismjs": "^1.28.0", - "tslib": "^2.3.0" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/platform-browser": "^14.0.0", - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "^0.11.4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nice-napi": { - "version": "1.0.2", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "!win32" - ], + "license": "BSD-2-Clause", "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "3.2.1", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=4.0" } }, - "node_modules/node-forge": { - "version": "1.3.1", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">= 6.13.0" + "node": ">=10.13.0" } }, - "node_modules/node-gyp": { - "version": "9.3.1", + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", "dev": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "type-fest": "^0.20.2" }, "engines": { - "node": "^12.13 || ^14.13 || >=16" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "engines": { + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/node-int64": { - "version": "0.4.0", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "MIT" - }, - "node_modules/node-machine-id": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", - "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.9", - "license": "MIT" - }, - "node_modules/non-layered-tidy-tree-layout": { - "version": "2.0.2", - "license": "MIT" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/nopt": { - "version": "6.0.0", + "node_modules/espree": { + "version": "9.4.1", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/normalize-package-data": { + "node_modules/esprima": { "version": "4.0.1", "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "license": "MIT", + "node_modules/esquery": { + "version": "1.4.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/normalize-range": { - "version": "0.1.2", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", + "node_modules/esrecurse": { + "version": "4.3.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/npm-bundled": { - "version": "1.1.2", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "node_modules/npm-install-checks": { - "version": "5.0.0", + "node_modules/estraverse": { + "version": "4.3.0", "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4.0" } }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", + "node_modules/esutils": { + "version": "2.0.3", "dev": true, - "license": "ISC" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/npm-package-arg": { - "version": "9.1.0", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-packlist": { - "version": "5.1.3", + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.8.x" } }, - "node_modules/npm-packlist/node_modules/npm-bundled": { - "version": "2.0.1", + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-normalize-package-bin": "^2.0.0" + "eventsource-parser": "^3.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/npm-pick-manifest": { - "version": "7.0.1", + "node_modules/execa": { + "version": "4.1.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/npm-registry-fetch": { - "version": "13.3.1", + "node_modules/executable": { + "version": "4.1.1", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "pify": "^2.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/npmlog": { - "version": "6.0.2", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8.0" } }, - "node_modules/nth-check": { - "version": "2.1.1", + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "boolbase": "^1.0.0" + "homedir-polyfill": "^1.0.1" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/nx": { - "version": "15.0.3", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { - "@nrwl/cli": "15.0.3", - "@nrwl/tao": "15.0.3", - "@parcel/watcher": "2.0.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.0.0", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^7.0.2", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "fast-glob": "3.2.7", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^10.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "semver": "7.3.4", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^3.9.0", - "tslib": "^2.3.0", - "v8-compile-cache": "2.3.0", - "yargs": "^17.4.0", - "yargs-parser": "21.0.1" - }, - "bin": { - "nx": "bin/nx.js" - }, - "peerDependencies": { - "@swc-node/register": "^1.4.2", - "@swc/core": "^1.2.173" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/nx-cloud": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/nx-cloud/-/nx-cloud-16.2.0.tgz", - "integrity": "sha512-LESjpYO6Ksg4AjbXnzH9qZqyQzTauwFFUITeyz5NAVEFKaBTEICyupSk+3Xq3v4QQurFJOE3rShhYuSQP5moeQ==", + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "dev": true, - "dependencies": { - "@nrwl/nx-cloud": "16.2.0", - "axios": "1.1.3", - "chalk": "^4.1.0", - "dotenv": "~10.0.0", - "fs-extra": "^11.1.0", - "node-machine-id": "^1.1.12", - "open": "~8.4.0", - "strip-json-comments": "^3.1.1", - "tar": "6.1.11", - "yargs-parser": ">=21.1.1" - }, - "bin": { - "nx-cloud": "bin/nx-cloud.js" - } + "license": "Apache-2.0" }, - "node_modules/nx-cloud/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/nx-cloud/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/express-rate-limit": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ip-address": "10.1.0" }, "engines": { - "node": ">=10" + "node": ">= 16" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/nx-cloud/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nx-cloud/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "url": "https://github.com/sponsors/express-rate-limit" }, - "engines": { - "node": ">=14.14" + "peerDependencies": { + "express": ">= 4.11" } }, - "node_modules/nx-cloud/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/nx-cloud/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/express/node_modules/debug": { + "version": "2.6.9", "dev": true, + "license": "MIT", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "ms": "2.0.0" } }, - "node_modules/nx-cloud/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/express/node_modules/depd": { + "version": "2.0.0", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/nx-cloud/node_modules/universalify": { + "node_modules/express/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "engines": { - "node": ">= 10.0.0" - } + "license": "MIT" }, - "node_modules/nx/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/extend": { + "version": "3.0.2", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=8" + "node": ">= 10.17.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/nx/node_modules/argparse": { - "version": "2.0.1", + "node_modules/extsprintf": { + "version": "1.3.0", "dev": true, - "license": "Python-2.0" + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" }, - "node_modules/nx/node_modules/axios": { - "version": "1.3.1", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/nx/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "license": "MIT" }, - "node_modules/nx/node_modules/chalk": { - "version": "4.1.0", + "node_modules/fast-levenshtein": { + "version": "2.0.6", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "reusify": "^1.0.4" } }, - "node_modules/nx/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/faye-websocket": { + "version": "0.11.4", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.8.0" } }, - "node_modules/nx/node_modules/form-data": { - "version": "4.0.0", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "bser": "2.1.1" } }, - "node_modules/nx/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/fd-slicer": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "pend": "~1.2.0" } }, - "node_modules/nx/node_modules/glob": { - "version": "7.1.4", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/nx/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/figures": { + "version": "3.2.0", "dev": true, "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nx/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/file-entry-cache": { + "version": "6.0.1", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "flat-cache": "^3.0.4" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/nx/node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "minimatch": "^5.0.1" } }, - "node_modules/nx/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/nx/node_modules/minimatch": { - "version": "3.0.5", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/nx/node_modules/proxy-from-env": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/nx/node_modules/semver": { - "version": "7.3.4", + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/nx/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "ms": "2.0.0" } }, - "node_modules/nx/node_modules/universalify": { + "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } + "license": "MIT" }, - "node_modules/nx/node_modules/yallist": { + "node_modules/find-cache-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, - "license": "ISC" - }, - "node_modules/nx/node_modules/yargs-parser": { - "version": "21.0.1", - "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.12.3", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-is": { - "version": "1.1.5", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "p-locate": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-keys": { - "version": "1.1.1", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.assign": { - "version": "4.1.4", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "p-limit": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/obuf": { - "version": "1.1.2", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, - "node_modules/on-finished": { - "version": "2.4.1", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "find-up": "^6.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/on-headers": { - "version": "1.0.2", + "node_modules/find-cache-dir/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", + "node_modules/find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", + "dev": true, + "license": "MIT", "dependencies": { - "wrappy": "1" + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/one-time": { - "version": "1.0.0", + "node_modules/find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", + "dev": true, "license": "MIT", "dependencies": { - "fn.name": "1.x.x" + "find-file-up": "^2.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/onetime": { - "version": "5.1.2", + "node_modules/find-up": { + "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/firebase": { + "version": "12.10.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.10.0.tgz", + "integrity": "sha512-tAjHnEirksqWpa+NKDUSUMjulOnsTcsPC1X1rQ+gwPtjlhJS572na91CwaBXQJHXharIrfj7sw/okDkXOsphjA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/ai": "2.9.0", + "@firebase/analytics": "0.10.20", + "@firebase/analytics-compat": "0.2.26", + "@firebase/app": "0.14.9", + "@firebase/app-check": "0.11.1", + "@firebase/app-check-compat": "0.4.1", + "@firebase/app-compat": "0.5.9", + "@firebase/app-types": "0.9.3", + "@firebase/auth": "1.12.1", + "@firebase/auth-compat": "0.6.3", + "@firebase/data-connect": "0.4.0", + "@firebase/database": "1.1.1", + "@firebase/database-compat": "2.1.1", + "@firebase/firestore": "4.12.0", + "@firebase/firestore-compat": "0.4.6", + "@firebase/functions": "0.13.2", + "@firebase/functions-compat": "0.4.2", + "@firebase/installations": "0.6.20", + "@firebase/installations-compat": "0.2.20", + "@firebase/messaging": "0.12.24", + "@firebase/messaging-compat": "0.2.24", + "@firebase/performance": "0.7.10", + "@firebase/performance-compat": "0.2.23", + "@firebase/remote-config": "0.8.1", + "@firebase/remote-config-compat": "0.2.22", + "@firebase/storage": "0.14.1", + "@firebase/storage-compat": "0.4.1", + "@firebase/util": "1.14.0" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/open": { - "version": "8.4.0", + "node_modules/flatted": { + "version": "3.2.7", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/opener": { - "version": "1.5.2", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/optionator": { - "version": "0.9.1", + "node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", "dev": true, "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "vue-template-compiler": "*", + "webpack": "^5.11.0" + }, + "peerDependenciesMeta": { + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/ora": { - "version": "5.4.1", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/ora/node_modules/ansi-styles": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -18586,8 +23181,22 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ora/node_modules/chalk": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -18600,8 +23209,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ora/node_modules/color-convert": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -18610,1437 +23222,1341 @@ "node": ">=7.0.0" } }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=8" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "p-try": "^2.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/p-map": { - "version": "4.0.0", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/p-retry": { - "version": "4.6.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 10.0.0" } }, - "node_modules/p-try": { - "version": "2.2.0", + "node_modules/form-data": { + "version": "2.3.3", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "13.6.2", - "dev": true, - "license": "ISC", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.12" } }, - "node_modules/pako": { - "version": "1.0.11", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", + "node_modules/forwarded": { + "version": "0.2.0", "dev": true, "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/parse-json": { - "version": "5.2.0", + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, "engines": { - "node": ">=8" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", + "node_modules/fresh": { + "version": "0.5.2", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 0.6" } }, - "node_modules/parse5": { - "version": "5.1.1", - "license": "MIT", - "optional": true + "node_modules/froala-editor": { + "version": "4.0.15", + "license": "https://www.froala.com/wysiwyg-editor/pricing" }, - "node_modules/parse5-html-rewriting-stream": { - "version": "6.0.1", + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", "dev": true, "license": "MIT", "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" + "js-yaml": "^3.13.1" } }, - "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "6.0.1", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true, "license": "MIT" }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "dev": true, + "node_modules/fs-extra": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "parse5": "^6.0.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "parse5": "^6.0.1" + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "6.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", + "node_modules/fs-monkey": { + "version": "1.0.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "license": "Unlicense" }, - "node_modules/path-exists": { - "version": "4.0.0", + "node_modules/fs.realpath": { + "version": "1.0.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/path-key": { - "version": "3.1.1", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-parse": { - "version": "1.0.7", + "node_modules/functional-red-black-tree": { + "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/path-to-regexp": { - "version": "0.1.7", + "node_modules/functions-have-names": { + "version": "1.2.3", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/pend": { - "version": "1.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "license": "ISC" + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "node_modules/picomatch": { - "version": "2.3.1", + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pify": { - "version": "2.3.0", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pirates": { - "version": "4.0.5", + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } + "license": "ISC" }, - "node_modules/piscina": { - "version": "3.2.0", + "node_modules/get-package-type": { + "version": "0.1.0", "dev": true, "license": "MIT", - "dependencies": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0" - }, - "optionalDependencies": { - "nice-napi": "^1.0.2" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-compare": "^1.0.0" + "node": ">= 0.4" } }, - "node_modules/portfinder": { - "version": "1.0.32", + "node_modules/get-stream": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "pump": "^3.0.0" }, "engines": { - "node": ">= 0.12.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", + "node_modules/getos": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "async": "^3.2.0" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", + "node_modules/getpass": { + "version": "0.1.7", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "assert-plus": "^1.0.0" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "minimist": "^1.2.6" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss": { - "version": "8.4.21", + "node_modules/glob-parent": { + "version": "5.1.2", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "license": "MIT", + "license": "ISC", "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "is-glob": "^4.0.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 6" } }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, + "license": "Apache-2.0", "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, "peerDependencies": { - "postcss": "^8.2" + "tslib": "2" } }, - "node_modules/postcss-calc": { - "version": "8.2.4", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/postcss-clamp": { - "version": "4.1.0", + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" + "node": "18 || 20 || >=22" } }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "CC0-1.0", + "license": "BlueOak-1.0.0", "dependencies": { - "postcss-value-parser": "^4.2.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "18 || 20 || >=22" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-color-hex-alpha": { - "version": "8.0.4", + "node_modules/global-dirs": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "ini": "2.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "ISC", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=10" } }, - "node_modules/postcss-colormin": { - "version": "5.3.0", + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-custom-media": { - "version": "8.0.2", + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "isexe": "^2.0.0" }, - "peerDependencies": { - "postcss": "^8.3" + "bin": { + "which": "bin/which" } }, - "node_modules/postcss-custom-properties": { - "version": "12.1.11", + "node_modules/globals": { + "version": "11.12.0", "dev": true, "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=4" } }, - "node_modules/postcss-custom-selectors": { - "version": "6.0.3", + "node_modules/globby": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "dev": true, - "license": "CC0-1.0", + "node_modules/good-listener": { + "version": "1.2.2", + "license": "MIT", + "optional": true, "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "delegate": "^3.1.2" } }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "dev": true, - "license": "MIT", + "node_modules/google-libphonenumber": { + "version": "3.2.32", + "license": "(MIT AND Apache-2.0)", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10" } }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gzipper": { + "version": "4.5.0", "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" + "license": "GPL-3.0", + "dependencies": { + "commander": "^7.2.0", + "deep-equal": "^2.0.5", + "uuid": "^8.3.2" }, - "peerDependencies": { - "postcss": "^8.2.15" + "bin": { + "gzipper": "bin/index.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", + "node_modules/gzipper/node_modules/commander": { + "version": "7.2.0", "dev": true, "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 10" } }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT", + "optional": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" }, - "node_modules/postcss-env-function": { - "version": "4.0.6", + "node_modules/has": { + "version": "1.0.3", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "function-bind": "^1.1.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">= 0.4.0" } }, - "node_modules/postcss-focus-visible": { - "version": "6.0.4", + "node_modules/has-bigints": { + "version": "1.0.2", "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-focus-within": { - "version": "5.0.4", + "node_modules/has-flag": { + "version": "3.0.0", "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=4" } }, - "node_modules/postcss-font-variant": { - "version": "5.0.0", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.0" + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-import": { - "version": "15.0.0", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" + "node": ">= 0.4" } }, - "node_modules/postcss-initial": { - "version": "4.0.1", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.0" + "bin": { + "he": "bin/he" } }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "dev": true, - "license": "CC0-1.0", + "node_modules/highcharts": { + "version": "10.3.3", + "license": "https://www.highcharts.com/license" + }, + "node_modules/highcharts-angular": { + "version": "3.0.0", + "license": "SEE LICENSE IN ", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "tslib": "^2.0.0" }, "peerDependencies": { - "postcss": "^8.2" + "@angular/common": ">=9.0.0", + "@angular/core": ">=9.0.0", + "highcharts": ">=6.0.0" } }, - "node_modules/postcss-loader": { - "version": "7.0.1", + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" + "parse-passwd": "^1.0.0" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "node": ">=0.10.0" } }, - "node_modules/postcss-logical": { - "version": "5.0.4", + "node_modules/hono": { + "version": "4.12.8", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.8.tgz", + "integrity": "sha512-VJCEvtrezO1IAR+kqEYnxUOoStaQPGrCmX3j4wDTNOcD1uRPFpGlwQUIW8niPuvHXaTUxeOUl5MMDGrl+tmO9A==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=16.9.0" } }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", + "node_modules/hosted-git-info": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" + "license": "ISC", + "dependencies": { + "lru-cache": "^11.1.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": "20 || >=22" } }, - "node_modules/postcss-merge-rules": { - "version": "5.1.3", + "node_modules/hpack.js": { + "version": "2.1.6", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "safe-buffer": "~5.1.0" } }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=12" } }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=0.12" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.8" } }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", + "node_modules/http-assert/node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.6" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.6" } }, - "node_modules/postcss-nesting": { - "version": "10.2.0", + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.8" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://opencollective.com/express" } }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", + "node_modules/http-errors/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.8" } }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", + "node_modules/http-parser-js": { + "version": "0.5.8", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8.0.0" } }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 14" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=12.0.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "bin": { + "http-server": "bin/http-server" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">=12" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", + "node_modules/http-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", + "node_modules/http-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", + "node_modules/http-server/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=7.0.0" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", + "node_modules/http-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.3", + "node_modules/http-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], "license": "MIT", - "engines": { - "node": "^12 || ^14 || >=16" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependencies": { - "postcss": "^8.2" + "engines": { + "node": ">=8" } }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", + "node_modules/http-signature": { + "version": "1.3.6", "dev": true, "license": "MIT", "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10" } }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, - "license": "CC0-1.0", + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">= 14" } }, - "node_modules/postcss-page-break": { - "version": "3.0.4", + "node_modules/human-signals": { + "version": "1.1.1", "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8" + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" } }, - "node_modules/postcss-place": { - "version": "7.0.5", + "node_modules/husky": { + "version": "7.0.4", "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" - } - }, - "node_modules/postcss-preset-env": { - "version": "7.8.0", - "dev": true, - "license": "CC0-1.0", - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.0.5", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.8", - "browserslist": "^4.21.3", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.10", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "bin": { + "husky": "lib/bin.js" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, - "license": "CC0-1.0", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=10.18" } }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.1", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-reduce-transforms": { + "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "ISC", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^10 || ^12 || >= 14" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.1.0" } }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "postcss": "^8.0.3" - } + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "harmony-reflect": "^1.4.6" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=4" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", + "node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", "dev": true, "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "dev": true, + "license": "ISC", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "minimatch": "^10.0.3" }, "engines": { - "node": ">=4" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/postcss-svgo": { - "version": "5.1.0", + "node_modules/ignore-walk/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": "18 || 20 || >=22" } }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "balanced-match": "^4.0.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": "18 || 20 || >=22" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prettier": { - "version": "2.7.1", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "license": "MIT", + "optional": true, "bin": { - "prettier": "bin-prettier.js" + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", + "node_modules/immutable": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", "dev": true, "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { "node": ">=6" }, @@ -20048,1240 +24564,1287 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-format": { - "version": "28.1.3", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=4" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/primeicons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", - "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==", - "peer": true - }, - "node_modules/primeng": { - "version": "14.2.2", + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "primeicons": "^6.0.1", - "rxjs": "^6.0.0 || ^7.0.0", - "zone.js": "^0.10.2 || ^0.11.0 || ^0.12.0" + "engines": { + "node": ">=0.8.19" } }, - "node_modules/prismjs": { - "version": "1.29.0", + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/proc-log": { - "version": "2.0.1", + "node_modules/inflight": { + "version": "1.0.6", "dev": true, "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", + "node_modules/inherits": { + "version": "2.0.4", "dev": true, "license": "ISC" }, - "node_modules/promise-retry": { - "version": "2.0.1", + "node_modules/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/prompts": { - "version": "2.4.2", + "node_modules/internal-slot": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/protobufjs": { - "version": "6.11.3", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" + "node_modules/internmap": { + "version": "2.0.3", + "license": "ISC", + "engines": { + "node": ">=12" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", + "node_modules/intl-tel-input": { + "version": "17.0.19", + "license": "MIT" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, "engines": { - "node": ">= 0.10" + "node": ">= 12" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prr": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/psl": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.0", + "node_modules/is-arguments": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "license": "MIT", + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/qs": { - "version": "6.11.0", + "node_modules/is-array-buffer": { + "version": "3.0.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", + "node_modules/is-arrayish": { + "version": "0.2.1", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT" }, - "node_modules/random-avatar-generator": { - "version": "2.0.0", + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, "license": "MIT", "dependencies": { - "seedrandom": "^3.0.5" + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/randombytes": { + "node_modules/is-binary-path": { "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/range-parser": { - "version": "1.2.1", + "node_modules/is-boolean-object": { + "version": "1.1.2", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/raw-body": { - "version": "2.5.1", + "node_modules/is-callable": { + "version": "1.2.7", "dev": true, "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", + "node_modules/is-ci": { + "version": "3.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/raw-loader": { - "version": "4.0.2", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/raw-loader/node_modules/ajv": { - "version": "6.12.6", + "node_modules/is-date-object": { + "version": "1.0.5", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/raw-loader/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/is-docker": { + "version": "2.2.1", "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/raw-loader/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/is-extglob": { + "version": "2.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/raw-loader/node_modules/loader-utils": { - "version": "2.0.4", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, "engines": { - "node": ">=8.9.0" + "node": ">=8" } }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/is-glob": { + "version": "4.0.3", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "license": "MIT", + "engines": { + "node": ">=20" }, - "peerDependencies": { - "react": "^18.2.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/read-cache": { + "node_modules/is-inside-container": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "license": "MIT", "dependencies": { - "pify": "^2.3.0" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json": { - "version": "5.0.2", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", + "node_modules/is-installed-globally": { + "version": "0.4.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "node_modules/is-interactive": { "version": "2.0.0", - "dev": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/readable-stream": { - "version": "3.6.0", + "node_modules/is-map": { + "version": "2.0.2", + "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/readdirp": { - "version": "3.6.0", + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", + "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/recordrtc": { - "version": "5.6.2", - "license": "MIT" - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "license": "Apache-2.0" - }, - "node_modules/regenerate": { - "version": "1.4.2", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", + "node_modules/is-number-object": { + "version": "1.0.7", "dev": true, "license": "MIT", "dependencies": { - "regenerate": "^1.4.2" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "dev": true, - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", + "node_modules/is-obj": { + "version": "1.0.1", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/regex-parser": { - "version": "2.2.11", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", + "node_modules/is-path-inside": { + "version": "3.0.3", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/regexpp": { - "version": "3.2.0", + "node_modules/is-plain-obj": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/regexpu-core": { - "version": "5.2.2", + "node_modules/is-plain-object": { + "version": "2.0.4", "dev": true, "license": "MIT", "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/regjsgen": { - "version": "0.7.1", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "dev": true, "license": "MIT" }, - "node_modules/regjsparser": { - "version": "0.9.1", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "jsesc": "~0.5.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/request-progress": { - "version": "3.0.0", + "node_modules/is-regexp": { + "version": "1.0.0", "dev": true, "license": "MIT", - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/require-from-string": { + "node_modules/is-set": { "version": "2.0.2", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.1", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", + "node_modules/is-stream": { + "version": "2.0.1", "dev": true, "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve-from": { - "version": "5.0.0", + "node_modules/is-string": { + "version": "1.0.7", "dev": true, "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", + "node_modules/is-symbol": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/is-typed-array": { + "version": "1.1.10", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", + "node_modules/is-typedarray": { + "version": "1.0.0", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/resolve.exports": { - "version": "1.1.0", + "node_modules/is-unicode-supported": { + "version": "0.1.0", "dev": true, "license": "MIT", "engines": { "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/retry": { - "version": "0.12.0", + "node_modules/is-weakmap": { + "version": "2.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/is-weakset": { + "version": "2.0.2", "dev": true, "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rfdc": { - "version": "1.3.0", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true, "license": "MIT" }, - "node_modules/rimraf": { - "version": "3.0.2", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/is-wsl": { + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", + "node_modules/isarray": { + "version": "2.0.5", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", "dev": true, "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "brace-expansion": "^1.1.7" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/robust-predicates": { - "version": "3.0.1", - "license": "Unlicense" - }, - "node_modules/run-async": { - "version": "2.4.1", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/run-parallel": { - "version": "1.2.0", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rw": { - "version": "1.3.3", - "license": "BSD-3-Clause" - }, - "node_modules/rxfire": { - "version": "6.0.3", - "license": "Apache-2.0", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^1.9.0 || ~2.1.0" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "firebase": "^9.0.0", - "rxjs": "^6.0.0 || ^7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/rxfire/node_modules/tslib": { - "version": "2.1.0", - "license": "0BSD" - }, - "node_modules/rxjs": { - "version": "7.5.7", - "license": "Apache-2.0", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "tslib": "^2.1.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.2", - "license": "MIT", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, - "node_modules/sass": { - "version": "1.54.4", + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" }, "bin": { - "sass": "sass.js" + "jake": "bin/cli.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=10" } }, - "node_modules/sass-loader": { - "version": "13.0.2", + "node_modules/jest": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", + "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", "dev": true, "license": "MIT", "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" + "@jest/core": "^29.4.3", + "@jest/types": "^29.4.3", + "import-local": "^3.0.2", + "jest-cli": "^29.4.3" }, - "engines": { - "node": ">= 14.15.0" + "bin": { + "jest": "bin/jest.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { + "node-notifier": { "optional": true } } }, - "node_modules/sax": { - "version": "1.2.4", - "dev": true, - "license": "ISC" - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/schema-utils": { - "version": "2.7.1", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, - "license": "MIT" - }, - "node_modules/sdp-transform": { - "version": "2.14.1", "license": "MIT", - "bin": { - "sdp-verify": "checker.js" + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/secure-compare": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "license": "MIT" - }, - "node_modules/select": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/select-hose": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/selfsigned": { - "version": "2.1.1", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "node-forge": "^1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/semver": { - "version": "7.3.7", - "license": "ISC", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/semver-dsl": { - "version": "1.0.1", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^5.3.0" - } - }, - "node_modules/semver-dsl/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/semver/node_modules/yallist": { + "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/send": { - "version": "0.18.0", + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/depd": { - "version": "2.0.0", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/serve-index": { - "version": "1.9.1", + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.8.0" + "node": ">=7.0.0" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/serve-static": { - "version": "1.15.0", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC" - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" + "engines": { + "node": ">=8" } }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "license": "MIT" - }, - "node_modules/sisteransi": { - "version": "1.0.5", + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/slash": { - "version": "3.0.0", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "3.0.0", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { + "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -21294,8 +25857,27 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/color-convert": { + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21305,789 +25887,811 @@ "node": ">=7.0.0" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/socket.io-client": { - "version": "4.5.4", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/socket.io-parser": { - "version": "4.2.2", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=10.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/sockjs": { - "version": "0.3.24", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/socks": { - "version": "2.7.1", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/source-map": { - "version": "0.7.4", - "license": "BSD-3-Clause", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/source-map-js": { - "version": "1.0.2", + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/source-map-loader": { - "version": "4.0.0", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.72.1" + "node": ">=8" } }, - "node_modules/source-map-loader/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/source-map-resolve": { - "version": "0.6.0", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "license": "MIT" - }, - "node_modules/spdx-correct": { - "version": "3.1.1", + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/spdy": { - "version": "4.0.2", + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.17.0", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ssri": { - "version": "9.0.1", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stable": { - "version": "0.1.8", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT" - }, - "node_modules/stack-trace": { - "version": "0.0.10", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/stack-utils": { - "version": "2.0.6", + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/statuses": { - "version": "2.0.1", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "internal-slot": "^1.0.4" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string-argv": { - "version": "0.3.1", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.6.19" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/string-length": { - "version": "4.0.2", + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/string-width": { - "version": "4.2.3", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/stringify-object": { - "version": "3.3.0", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/style-loader": { - "version": "3.3.1", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, - "peerDependencies": { - "webpack": "^5.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/stylehacks": { - "version": "5.1.1", + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stylis": { - "version": "4.1.3", - "license": "MIT" - }, - "node_modules/stylus": { - "version": "0.59.0", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.0.1", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/stylus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/stylus-loader": { - "version": "7.0.0", + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "stylus": ">=0.52.4", - "webpack": "^5.0.0" + "node": ">=7.0.0" } }, - "node_modules/stylus-loader/node_modules/fast-glob": { - "version": "3.2.12", + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, "engines": { - "node": ">=8.6.0" + "node": ">=8" } }, - "node_modules/stylus/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/stylus/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "color-convert": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/supports-color": { - "version": "5.5.0", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/svgo": { - "version": "2.8.0", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/svgo/node_modules/commander": { + "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.11", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/terminal-link": { - "version": "2.1.1", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/test-exclude": { - "version": "6.0.0", + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=7.0.0" } }, - "node_modules/test-exclude/node_modules/glob": { + "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -22105,8 +26709,20 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -22116,168 +26732,142 @@ "node": "*" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/throttleit": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "license": "MIT" - }, - "node_modules/thunky": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-emitter": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.2.1", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "rimraf": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=8.17.0" + "node": ">=8" } }, - "node_modules/tmpl": { - "version": "1.0.5", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/toidentifier": { - "version": "1.0.1", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.8" + "node": ">=7.0.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/tree-kill": { - "version": "1.2.2", + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "bin": { - "tree-kill": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/tributejs": { - "version": "5.1.3", - "license": "MIT" - }, - "node_modules/triple-beam": { - "version": "1.3.0", - "license": "MIT" - }, - "node_modules/ts-jest": { - "version": "28.0.8", + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "^2.2.1", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^28.0.0", - "babel-jest": "^28.0.0", - "jest": "^28.0.0", - "typescript": ">=4.3" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } + "node": ">=8" } }, - "node_modules/ts-loader": { - "version": "9.4.2", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { + "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -22290,8 +26880,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ts-loader/node_modules/chalk": { + "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -22305,8 +26897,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ts-loader/node_modules/color-convert": { + "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22316,16 +26910,20 @@ "node": ">=7.0.0" } }, - "node_modules/ts-loader/node_modules/has-flag": { + "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/ts-loader/node_modules/supports-color": { + "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -22335,71 +26933,28 @@ "node": ">=8" } }, - "node_modules/ts-node": { - "version": "10.9.1", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { @@ -22412,8 +26967,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -22427,8 +26997,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "node_modules/jest-validate/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22438,16 +27010,20 @@ "node": ">=7.0.0" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -22457,15526 +27033,8474 @@ "node": ">=8" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "node_modules/tslint": { - "version": "6.1.3", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4.8.0" + "node": ">=10" }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/tslint/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/tslint/node_modules/glob": { - "version": "7.2.3", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=7.0.0" } }, - "node_modules/tslint/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/tslint/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "has-flag": "^4.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/tslint/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=8" } }, - "node_modules/tslint/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/tslint/node_modules/tsutils": { - "version": "2.29.0", + "node_modules/jest-worker": { + "version": "27.5.1", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/tsutils": { - "version": "3.21.0", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=8" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type-check": { - "version": "0.4.0", - "dev": true, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, - "node_modules/type-detect": { - "version": "4.0.8", + "node_modules/jose": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.1.tgz", + "integrity": "sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/panva" } }, - "node_modules/type-is": { - "version": "1.6.18", + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">= 0.6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/typed-assert": { - "version": "1.0.9", + "node_modules/jsbn": { + "version": "0.1.1", "dev": true, "license": "MIT" }, - "node_modules/typescript": { - "version": "4.8.4", - "license": "Apache-2.0", + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4.2.0" + "node": ">=6" } }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", + "node_modules/json-schema": { + "version": "0.4.0", "dev": true, - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "license": "(AFL-2.1 OR BSD-3-Clause)" }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "BSD-2-Clause" }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/union": { - "version": "0.5.0", + "node_modules/json-stringify-safe": { + "version": "5.0.1", "dev": true, - "dependencies": { - "qs": "^6.4.0" + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6" } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/unique-slug": { + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jsprim": { "version": "2.0.2", "dev": true, - "license": "ISC", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "dev": true, + "node_modules/jssip": { + "version": "3.10.0", "license": "MIT", - "engines": { - "node": ">= 0.8" + "dependencies": { + "@types/debug": "^4.1.7", + "@types/events": "^3.0.0", + "debug": "^4.3.1", + "events": "^3.3.0", + "sdp-transform": "^2.14.1" } }, - "node_modules/untildify": { - "version": "4.0.0", + "node_modules/karma-source-map-support": { + "version": "1.4.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "source-map-support": "^0.5.5" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", + "node_modules/katex": { + "version": "0.16.41", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.41.tgz", + "integrity": "sha512-AdDAqox1xU1h5yGai/uksjxwXby0gbRkwQaWvaE6Esp2wDX/Y/lL6qxQhVg84gzFsriyIv+WVg7bXaVy1PbcJg==", "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" ], "license": "MIT", + "optional": true, "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "commander": "^8.3.0" }, "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "katex": "cli.js" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 12" } }, - "node_modules/url-join": { - "version": "4.0.1", + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "optional": true }, - "node_modules/utils-merge": { - "version": "1.0.1", + "node_modules/kind-of": { + "version": "6.0.3", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">=0.10.0" } }, - "node_modules/uuid": { - "version": "8.3.2", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">=6" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/v8-compile-cache-lib": { + "node_modules/koa": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-3.0.1.tgz", + "integrity": "sha512-oDxVkRwPOHhGlxKIDiDB2h+/l05QPtefD7nSqRgDfZt8P+QVYFWjfeK8jANf5O2YXjk8egd7KntvXKYx82wOag==", "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.0.1", - "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "accepts": "^1.3.8", + "content-disposition": "~0.5.4", + "content-type": "^1.0.5", + "cookies": "~0.9.1", + "delegates": "^1.0.0", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.5.0", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">=10.12.0" + "node": ">= 18" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "license": "MIT" }, - "node_modules/validate-npm-package-name": { - "version": "4.0.0", + "node_modules/koa/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8" } }, - "node_modules/vary": { - "version": "1.1.2", + "node_modules/koa/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/verror": { - "version": "1.10.0", + "node_modules/koa/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/walker": { - "version": "1.0.8", + "node_modules/koa/node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "makeerror": "1.0.12" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/watchpack": { - "version": "2.4.0", + "node_modules/langium": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", "license": "MIT", + "optional": true, "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=20.10.0", + "npm": ">=10.2.3" } }, - "node_modules/wbuf": { - "version": "1.7.3", + "node_modules/launch-editor": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.1.tgz", + "integrity": "sha512-lPSddlAAluRKJ7/cjRFoXUFzaX7q/YKI7yPHuEvSJVqoXvFnJov1/Ud87Aa4zULIbA9Nja4mSPK8l0z/7eV2wA==", "dev": true, "license": "MIT", "dependencies": { - "minimalistic-assert": "^1.0.0" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, - "node_modules/wcwidth": { - "version": "1.0.1", + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" + "optional": true }, - "node_modules/webpack": { - "version": "5.75.0", + "node_modules/lazy-ass": { + "version": "1.6.0", + "dev": true, "license": "MIT", + "engines": { + "node": "> 0.8" + } + }, + "node_modules/less": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.4.2.tgz", + "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" }, "bin": { - "webpack": "bin/webpack.js" + "lessc": "bin/lessc" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=14" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", + "node_modules/less-loader": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.3.1.tgz", + "integrity": "sha512-JZZmG7gMzoDP3VGeEG8Sh6FW5wygB5jYL7Wp29FFihuRTsIBacqO3LbRPr2yStYD11riVf13selLm/CPFRDBRQ==", "dev": true, "license": "MIT", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.19", + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6" } }, - "node_modules/webpack-dev-server": { - "version": "4.11.1", + "node_modules/levn": { + "version": "0.4.1", "dev": true, "license": "MIT", "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "node": ">= 0.8.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" }, "peerDependenciesMeta": { - "webpack-cli": { + "webpack": { + "optional": true + }, + "webpack-sources": { "optional": true } } }, - "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.19", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "detect-libc": "^2.0.3" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" + "url": "https://opencollective.com/parcel" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10.0.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "dev": true, - "license": "MIT", + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "license": "MIT", + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=10.13.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack-subresource-integrity": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "typed-assert": "^1.0.8" - }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", - "webpack": "^5.12.0" + "node": ">= 12.0.0" }, - "peerDependenciesMeta": { - "html-webpack-plugin": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack-virtual-modules": { - "version": "0.4.6", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 10.13.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/parcel" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "license": "Apache-2.0", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "license": "Apache-2.0", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.8.0" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/winston": { - "version": "3.8.2", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.5.0", - "license": "MIT", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.2.3", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.5.1", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zone.js": { - "version": "0.11.5", - "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - } - } - }, - "dependencies": { - "@abacritt/angularx-social-login": { - "version": "1.2.5", - "requires": { - "tslib": ">=2.3.1" - } - }, - "@adobe/css-tools": { - "version": "4.1.0", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-builders/custom-webpack": { - "version": "14.0.1", - "dev": true, - "requires": { - "@angular-devkit/architect": ">=0.1400.0 < 0.1500.0", - "@angular-devkit/build-angular": "^14.0.0", - "@angular-devkit/core": "^14.0.0", - "lodash": "^4.17.15", - "ts-node": "^10.0.0", - "tsconfig-paths": "^3.9.0", - "webpack-merge": "^5.7.3" - } - }, - "@angular-devkit/architect": { - "version": "0.1402.10", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.10", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "@angular-devkit/build-angular": { - "version": "14.2.3", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.3", - "@angular-devkit/build-webpack": "0.1402.3", - "@angular-devkit/core": "14.2.3", - "@babel/core": "7.18.10", - "@babel/generator": "7.18.12", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.10", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.10", - "@babel/preset-env": "7.18.10", - "@babel/runtime": "7.18.9", - "@babel/template": "7.18.10", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.3", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.2", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.15.5", - "esbuild-wasm": "0.15.5", - "glob": "8.0.3", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "karma-source-map-support": "1.4.0", - "less": "4.1.3", - "less-loader": "11.0.0", - "license-webpack-plugin": "4.0.2", - "loader-utils": "3.2.0", - "mini-css-extract-plugin": "2.6.1", - "minimatch": "5.1.0", - "open": "8.4.0", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "6.0.1", - "piscina": "3.2.0", - "postcss": "8.4.16", - "postcss-import": "15.0.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.8.0", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.54.4", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.59.0", - "stylus-loader": "7.0.0", - "terser": "5.14.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.4.0", - "webpack": "5.74.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.11.0", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1402.3", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.3", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1402.3", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.3", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.2.3", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "colorette": { - "version": "2.0.19", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "postcss": { - "version": "8.4.16", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - } - } - }, - "tslib": { - "version": "2.4.0", - "dev": true - }, - "webpack": { - "version": "5.74.0", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - } - }, - "webpack-dev-server": { - "version": "4.11.0", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "ws": { - "version": "8.12.0", - "dev": true, - "requires": {} - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1402.4", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.4", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1402.4", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.4", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.2.4", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "14.2.10", - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.1.0", - "rxjs": "6.6.7", - "source-map": "0.7.4" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1" - } - } - }, - "@angular-devkit/schematics": { - "version": "14.2.10", - "requires": { - "@angular-devkit/core": "14.2.10", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "rxjs": { - "version": "6.6.7", - "requires": { - "tslib": "^1.9.0" - } - }, - "tslib": { - "version": "1.14.1" - } - } - }, - "@angular-eslint/bundled-angular-compiler": { - "version": "14.0.4", - "dev": true - }, - "@angular-eslint/eslint-plugin": { - "version": "14.0.4", - "dev": true, - "requires": { - "@angular-eslint/utils": "14.0.4", - "@typescript-eslint/utils": "5.36.2" - } - }, - "@angular-eslint/eslint-plugin-template": { - "version": "14.0.4", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", - "aria-query": "5.0.2", - "axobject-query": "3.0.1" - } - }, - "@angular-eslint/template-parser": { - "version": "14.0.4", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "eslint-scope": "^5.1.0" - } - }, - "@angular-eslint/utils": { - "version": "14.0.4", - "dev": true, - "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.4", - "@typescript-eslint/utils": "5.36.2" - } - }, - "@angular-material-components/datetime-picker": { - "version": "8.0.0", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular-material-components/moment-adapter": { - "version": "8.0.0", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/animations": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.2.2", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - } - }, - "@angular/cli": { - "version": "14.2.10", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.10", - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "@schematics/angular": "14.2.10", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.3", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.1.0", - "npm-package-arg": "9.1.0", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.6.2", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - } - }, - "@angular/common": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.2.2", - "requires": { - "@babel/core": "^7.17.2", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.11.0", - "magic-string": "^0.26.0", - "reflect-metadata": "^0.1.2", - "semver": "^7.0.0", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - } - }, - "@angular/core": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/elements": { - "version": "14.2.2", - "resolved": "https://registry.npmjs.org/@angular/elements/-/elements-14.2.2.tgz", - "integrity": "sha512-ZbRHBs+xs70Gn7NgFC9glyBHy6mX/EKVJ9lxF3KWppP3puC+tWsiEKPDHVj6HgeubxVaSYrImcKE5vX6mIv4Rg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/fire": { - "version": "7.5.0", - "requires": { - "@angular-devkit/schematics": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "@schematics/angular": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "file-loader": "^6.2.0", - "firebase": "^9.8.0", - "fs-extra": "^8.0.1", - "fuzzy": "^0.1.3", - "inquirer": "^8.1.1", - "inquirer-autocomplete-prompt": "^1.0.1", - "jsonc-parser": "^3.0.0", - "node-fetch": "^2.6.1", - "open": "^8.0.0", - "ora": "^5.3.0", - "rxfire": "^6.0.0", - "semver": "^7.1.3", - "triple-beam": "^1.3.0", - "tslib": "^2.0.0", - "winston": "^3.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "@angular/forms": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/language-service": { - "version": "14.2.2", - "dev": true - }, - "@angular/localize": { - "version": "14.2.2", - "requires": { - "@babel/core": "7.18.9", - "glob": "8.0.3", - "yargs": "^17.2.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.18.9", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.0" - } - } - }, - "@angular/material": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material-moment-adapter": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "dev": true - }, - "@babel/code-frame": { - "version": "7.18.6", - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.14" - }, - "@babel/core": { - "version": "7.18.10", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0" - } - } - }, - "@babel/generator": { - "version": "7.18.12", - "requires": { - "@babel/types": "^7.18.10", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.20.7", - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.12", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-function-name": { - "version": "7.19.0", - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.11", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/template": { - "version": "7.20.7", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-replace-supers": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/template": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - } - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "requires": { - "@babel/types": "^7.20.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4" - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1" - }, - "@babel/helper-validator-option": { - "version": "7.18.6" - }, - "@babel/helper-wrap-function": { - "version": "7.20.5", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/helpers": { - "version": "7.20.13", - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.13", - "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/template": { - "version": "7.20.7", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - } - } - }, - "@babel/highlight": { - "version": "7.18.6", - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.13" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.20.5", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.20.14", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" - }, - "dependencies": { - "@babel/template": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - } - } - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/preset-env": { - "version": "7.18.10", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.18.10", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.18.9", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.18.9", - "@babel/plugin-transform-classes": "^7.18.9", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.18.9", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.18.9", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.18.9", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.10", - "babel-plugin-polyfill-corejs2": "^0.3.2", - "babel-plugin-polyfill-corejs3": "^0.5.3", - "babel-plugin-polyfill-regenerator": "^0.4.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.18.9", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.18.10", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - } - }, - "@babel/traverse": { - "version": "7.20.13", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.20.14", - "requires": { - "@babel/types": "^7.20.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/types": { - "version": "7.20.7", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "dev": true - }, - "@braintree/sanitize-url": { - "version": "6.0.2" - }, - "@colors/colors": { - "version": "1.5.0" - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-color-function": { - "version": "1.1.1", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" - } - }, - "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.1.1", - "dev": true, - "requires": {} - }, - "@cypress/request": { - "version": "2.88.11", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.10.3", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "dependencies": { - "qs": { - "version": "6.10.4", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - } - } - }, - "@cypress/webpack-preprocessor": { - "version": "5.16.1", - "dev": true, - "requires": { - "@babel/core": "^7.0.1", - "@babel/generator": "^7.17.9", - "@babel/parser": "^7.13.0", - "@babel/traverse": "^7.17.9", - "bluebird": "3.7.1", - "debug": "^4.3.2", - "fs-extra": "^10.1.0", - "loader-utils": "^2.0.0", - "lodash": "^4.17.20", - "md5": "2.3.0", - "source-map": "^0.6.1", - "webpack-virtual-modules": "^0.4.4" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "dev": true - } - } - }, - "@cypress/xvfb": { - "version": "1.2.4", - "dev": true, - "requires": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "@dabh/diagnostics": { - "version": "2.0.3", - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "dev": true - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "argparse": { - "version": "2.0.1", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "globals": { - "version": "13.20.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "type-fest": { - "version": "0.20.2", - "dev": true - } - } - }, - "@firebase/analytics": { - "version": "0.9.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/analytics-compat": { - "version": "0.2.1", - "requires": { - "@firebase/analytics": "0.9.1", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/analytics-types": { - "version": "0.8.0" - }, - "@firebase/app": { - "version": "0.9.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check": { - "version": "0.6.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check-compat": { - "version": "0.3.1", - "requires": { - "@firebase/app-check": "0.6.1", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/app-check-interop-types": { - "version": "0.2.0" - }, - "@firebase/app-check-types": { - "version": "0.5.0" - }, - "@firebase/app-compat": { - "version": "0.2.1", - "requires": { - "@firebase/app": "0.9.1", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/app-types": { - "version": "0.9.0" - }, - "@firebase/auth": { - "version": "0.21.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@firebase/auth-compat": { - "version": "0.3.1", - "requires": { - "@firebase/auth": "0.21.1", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@firebase/auth-interop-types": { - "version": "0.2.1" - }, - "@firebase/auth-types": { - "version": "0.12.0", - "requires": {} - }, - "@firebase/component": { - "version": "0.6.1", - "requires": { - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/database": { - "version": "0.14.1", - "requires": { - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "faye-websocket": "0.11.4", - "tslib": "^2.1.0" - } - }, - "@firebase/database-compat": { - "version": "0.3.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/database": "0.14.1", - "@firebase/database-types": "0.10.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/database-types": { - "version": "0.10.1", - "requires": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.0" - } - }, - "@firebase/firestore": { - "version": "3.8.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "@firebase/webchannel-wrapper": "0.9.0", - "@grpc/grpc-js": "~1.7.0", - "@grpc/proto-loader": "^0.6.13", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@firebase/firestore-compat": { - "version": "0.3.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/firestore": "3.8.1", - "@firebase/firestore-types": "2.5.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/firestore-types": { - "version": "2.5.1", - "requires": {} - }, - "@firebase/functions": { - "version": "0.9.1", - "requires": { - "@firebase/app-check-interop-types": "0.2.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.1", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@firebase/functions-compat": { - "version": "0.3.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/functions": "0.9.1", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/functions-types": { - "version": "0.6.0" - }, - "@firebase/installations": { - "version": "0.6.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" - } - }, - "@firebase/installations-compat": { - "version": "0.2.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/installations-types": { - "version": "0.5.0", - "requires": {} - }, - "@firebase/logger": { - "version": "0.4.0", - "requires": { - "tslib": "^2.1.0" - } - }, - "@firebase/messaging": { - "version": "0.12.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.0", - "idb": "7.0.1", - "tslib": "^2.1.0" - } - }, - "@firebase/messaging-compat": { - "version": "0.2.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/messaging": "0.12.1", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/messaging-interop-types": { - "version": "0.2.0" - }, - "@firebase/performance": { - "version": "0.6.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/performance-compat": { - "version": "0.2.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.1", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/performance-types": { - "version": "0.2.0" - }, - "@firebase/remote-config": { - "version": "0.4.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/installations": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/remote-config-compat": { - "version": "0.2.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.1", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/remote-config-types": { - "version": "0.3.0" - }, - "@firebase/storage": { - "version": "0.10.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/util": "1.9.0", - "node-fetch": "2.6.7", - "tslib": "^2.1.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@firebase/storage-compat": { - "version": "0.2.1", - "requires": { - "@firebase/component": "0.6.1", - "@firebase/storage": "0.10.1", - "@firebase/storage-types": "0.7.0", - "@firebase/util": "1.9.0", - "tslib": "^2.1.0" - } - }, - "@firebase/storage-types": { - "version": "0.7.0", - "requires": {} - }, - "@firebase/util": { - "version": "1.9.0", - "requires": { - "tslib": "^2.1.0" - } - }, - "@firebase/webchannel-wrapper": { - "version": "0.9.0" - }, - "@gar/promisify": { - "version": "1.1.3", - "dev": true - }, - "@grpc/grpc-js": { - "version": "1.7.3", - "requires": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "dependencies": { - "@grpc/proto-loader": { - "version": "0.7.4", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - } - }, - "protobufjs": { - "version": "7.2.0", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "dependencies": { - "long": { - "version": "5.2.1" - } - } - }, - "yargs": { - "version": "16.2.0", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9" - } - } - }, - "@grpc/proto-loader": { - "version": "0.6.13", - "requires": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^6.11.3", - "yargs": "^16.2.0" - }, - "dependencies": { - "yargs": { - "version": "16.2.0", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9" - } - } - }, - "@highcharts/map-collection": { - "version": "2.0.1" - }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "dev": true - }, - "@jest/console": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "@jest/reporters": { - "version": "28.1.3", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-config": { - "version": "28.1.3", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-resolve": { - "version": "28.1.3", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "28.1.3", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/environment": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - } - }, - "@jest/expect": { - "version": "28.1.3", - "dev": true, - "requires": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - } - }, - "@jest/expect-utils": { - "version": "28.1.3", - "dev": true, - "requires": { - "jest-get-type": "^28.0.2" - } - }, - "@jest/fake-timers": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/globals": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - } - }, - "@jest/reporters": { - "version": "28.1.1", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.1", - "@jest/test-result": "^28.1.1", - "@jest/transform": "^28.1.1", - "@jest/types": "^28.1.1", - "@jridgewell/trace-mapping": "^0.3.7", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.1", - "jest-util": "^28.1.1", - "jest-worker": "^28.1.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-worker": { - "version": "28.1.3", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/schemas": { - "version": "28.1.3", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/source-map": { - "version": "28.1.2", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "28.1.1", - "dev": true, - "requires": { - "@jest/console": "^28.1.1", - "@jest/types": "^28.1.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, - "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - } - } - }, - "@jest/transform": { - "version": "28.1.3", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/types": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0" - }, - "@jridgewell/set-array": { - "version": "1.1.2" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "dev": true - }, - "@materia-ui/ngx-monaco-editor": { - "version": "6.0.0", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/component": { - "version": "14.2.0", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/component-store": { - "version": "14.2.0", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/effects": { - "version": "14.0.2", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/entity": { - "version": "14.0.2", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/router-store": { - "version": "14.0.2", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/store": { - "version": "14.0.2", - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngrx/store-devtools": { - "version": "14.0.2", - "dev": true, - "requires": { - "tslib": "^2.0.0" - } - }, - "@ngtools/webpack": { - "version": "14.2.3", - "dev": true, - "requires": {} - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "2.1.2", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.2", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "dev": true - } - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/move-file": { - "version": "2.0.1", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "4.2.1", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - } - }, - "@nrwl/angular": { - "version": "15.0.3", - "dev": true, - "requires": { - "@angular-devkit/schematics": "~14.2.0", - "@nrwl/cypress": "15.0.3", - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/storybook": "15.0.3", - "@nrwl/webpack": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "@schematics/angular": "~14.2.0", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "http-server": "^14.1.0", - "ignore": "^5.0.4", - "magic-string": "~0.26.2", - "minimatch": "3.0.5", - "semver": "7.3.4", - "ts-node": "10.9.1", - "tsconfig-paths": "^3.9.0", - "tslib": "^2.3.0", - "webpack": "^5.58.1", - "webpack-merge": "5.7.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.5", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "webpack-merge": { - "version": "5.7.3", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "@nrwl/cli": { - "version": "15.0.3", - "dev": true, - "requires": { - "nx": "15.0.3" - } - }, - "@nrwl/cypress": { - "version": "15.0.3", - "dev": true, - "requires": { - "@babel/core": "^7.0.1", - "@babel/preset-env": "^7.0.0", - "@cypress/webpack-preprocessor": "^5.12.0", - "@nrwl/devkit": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "babel-loader": "^8.0.2", - "chalk": "4.1.0", - "dotenv": "~10.0.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "semver": "7.3.4", - "ts-loader": "^9.3.1", - "tsconfig-paths-webpack-plugin": "3.5.2", - "tslib": "^2.3.0", - "webpack": "^4 || ^5", - "webpack-node-externals": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "@nrwl/devkit": { - "version": "15.0.3", - "dev": true, - "requires": { - "@phenomnomnominal/tsquery": "4.1.1", - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.3.4", - "tslib": "^2.3.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "@nrwl/eslint-plugin-nx": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/devkit": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@typescript-eslint/utils": "^5.36.1", - "chalk": "4.1.0", - "confusing-browser-globals": "^1.0.9", - "semver": "7.3.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "@nrwl/jest": { - "version": "15.0.3", - "dev": true, - "requires": { - "@jest/reporters": "28.1.1", - "@jest/test-result": "28.1.1", - "@nrwl/devkit": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "chalk": "4.1.0", - "dotenv": "~10.0.0", - "identity-obj-proxy": "3.0.0", - "jest-config": "28.1.1", - "jest-resolve": "28.1.1", - "jest-util": "28.1.1", - "resolve.exports": "1.1.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@nrwl/js": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "@parcel/watcher": "2.0.4", - "chalk": "4.1.0", - "fast-glob": "3.2.7", - "fs-extra": "^10.1.0", - "ignore": "^5.0.4", - "js-tokens": "^4.0.0", - "minimatch": "3.0.5", - "source-map-support": "0.5.19", - "tree-kill": "1.2.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "minimatch": { - "version": "3.0.5", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true - } - } - }, - "@nrwl/linter": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@phenomnomnominal/tsquery": "4.1.1", - "nx": "15.0.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - } - }, - "@nrwl/nx-cloud": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-16.2.0.tgz", - "integrity": "sha512-NNSXBxI6DRndO5SRtvqi9qtTdknbqUNHIJO511S61YmdeQM18OflUB7ejyRQvQVhkB+XpGutSIp/BJPLocJf+w==", - "dev": true, - "requires": { - "nx-cloud": "16.2.0" - } - }, - "@nrwl/storybook": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/cypress": "15.0.3", - "@nrwl/devkit": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/workspace": "15.0.3", - "dotenv": "~10.0.0", - "semver": "7.3.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "dev": true - } - } - }, - "@nrwl/tao": { - "version": "15.0.3", - "dev": true, - "requires": { - "nx": "15.0.3" - } - }, - "@nrwl/webpack": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/devkit": "15.0.3", - "@nrwl/js": "15.0.3", - "@nrwl/workspace": "15.0.3", - "autoprefixer": "^10.4.9", - "babel-loader": "^8.2.2", - "browserslist": "^4.16.6", - "caniuse-lite": "^1.0.30001394", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "copy-webpack-plugin": "^10.2.4", - "css-minimizer-webpack-plugin": "^3.4.1", - "dotenv": "~10.0.0", - "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "7.2.13", - "fs-extra": "^10.1.0", - "ignore": "^5.0.4", - "less": "3.12.2", - "less-loader": "^10.1.0", - "license-webpack-plugin": "^4.0.2", - "loader-utils": "1.2.3", - "mini-css-extract-plugin": "~2.4.7", - "parse5": "4.0.0", - "parse5-html-rewriting-stream": "6.0.1", - "postcss": "^8.4.14", - "postcss-import": "~14.1.0", - "postcss-loader": "^6.1.1", - "raw-loader": "^4.0.2", - "rxjs": "^6.5.4", - "sass": "^1.42.1", - "sass-loader": "^12.2.0", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.0", - "stylus": "^0.55.0", - "stylus-loader": "^6.2.0", - "terser-webpack-plugin": "^5.3.3", - "ts-loader": "^9.3.1", - "ts-node": "10.9.1", - "tsconfig-paths": "^3.9.0", - "tsconfig-paths-webpack-plugin": "3.5.2", - "tslib": "^2.3.0", - "webpack": "^5.58.1", - "webpack-dev-server": "^4.9.3", - "webpack-merge": "^5.8.0", - "webpack-node-externals": "^3.0.0", - "webpack-sources": "^3.2.3", - "webpack-subresource-integrity": "^5.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "array-union": { - "version": "3.0.1", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "copy-webpack-plugin": { - "version": "10.2.4", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - } - }, - "debug": { - "version": "3.1.0", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globby": { - "version": "12.2.0", - "dev": true, - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "iconv-lite": { - "version": "0.6.3", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "json5": { - "version": "1.0.2", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "less": { - "version": "3.12.2", - "dev": true, - "requires": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true, - "optional": true - }, - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "less-loader": { - "version": "10.2.0", - "dev": true, - "requires": { - "klona": "^2.0.4" - } - }, - "loader-utils": { - "version": "1.2.3", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "make-dir": { - "version": "2.1.0", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "dev": true, - "optional": true - } - } - }, - "mini-css-extract-plugin": { - "version": "2.4.7", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "parse5": { - "version": "4.0.0", - "dev": true - }, - "pify": { - "version": "4.0.1", - "dev": true, - "optional": true - }, - "postcss-import": { - "version": "14.1.0", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-loader": { - "version": "6.2.1", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "sass-loader": { - "version": "12.6.0", - "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "slash": { - "version": "4.0.0", - "dev": true - }, - "source-map-loader": { - "version": "3.0.2", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - } - }, - "stylus": { - "version": "0.55.0", - "dev": true, - "requires": { - "css": "^3.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "stylus-loader": { - "version": "6.2.0", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "klona": "^2.0.4", - "normalize-path": "^3.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true - } - } - }, - "@nrwl/workspace": { - "version": "15.0.3", - "dev": true, - "requires": { - "@nrwl/devkit": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@parcel/watcher": "2.0.4", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^10.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "nx": "15.0.3", - "open": "^8.4.0", - "rxjs": "^6.5.4", - "semver": "7.3.4", - "tmp": "~0.2.1", - "tslib": "^2.3.0", - "yargs": "^17.4.0", - "yargs-parser": "21.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.1.4", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.5", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "dev": true - } - } - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "dev": true - }, - "yargs-parser": { - "version": "21.0.1", - "dev": true - } - } - }, - "@parcel/watcher": { - "version": "2.0.4", - "dev": true, - "requires": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - } - }, - "@phenomnomnominal/tsquery": { - "version": "4.1.1", - "dev": true, - "requires": { - "esquery": "^1.0.1" - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2" - }, - "@protobufjs/base64": { - "version": "1.1.2" - }, - "@protobufjs/codegen": { - "version": "2.0.4" - }, - "@protobufjs/eventemitter": { - "version": "1.1.0" - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2" - }, - "@protobufjs/inquire": { - "version": "1.1.0" - }, - "@protobufjs/path": { - "version": "1.1.2" - }, - "@protobufjs/pool": { - "version": "1.1.0" - }, - "@protobufjs/utf8": { - "version": "1.1.0" - }, - "@schematics/angular": { - "version": "14.2.10", - "requires": { - "@angular-devkit/core": "14.2.10", - "@angular-devkit/schematics": "14.2.10", - "jsonc-parser": "3.1.0" - } - }, - "@sinclair/typebox": { - "version": "0.24.51", - "dev": true - }, - "@sinonjs/commons": { - "version": "1.8.6", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "9.1.2", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0" - }, - "@tootallnate/once": { - "version": "2.0.0", - "dev": true - }, - "@trysound/sax": { - "version": "0.2.0", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "dev": true - }, - "@types/babel__core": { - "version": "7.20.0", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.18.3", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/chart.js": { - "version": "2.9.37", - "dev": true, - "requires": { - "moment": "^2.10.2" - } - }, - "@types/connect": { - "version": "3.4.35", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/debug": { - "version": "4.1.7", - "requires": { - "@types/ms": "*" - } - }, - "@types/eslint": { - "version": "8.4.10", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51" - }, - "@types/events": { - "version": "3.0.0" - }, - "@types/express": { - "version": "4.17.16", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.31", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.33", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.6", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/http-proxy": { - "version": "1.17.9", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "28.1.8", - "dev": true, - "requires": { - "expect": "^28.0.0", - "pretty-format": "^28.0.0" - } - }, - "@types/json-schema": { - "version": "7.0.11" - }, - "@types/json5": { - "version": "0.0.29", - "dev": true - }, - "@types/lodash": { - "version": "4.14.191", - "dev": true - }, - "@types/lodash-es": { - "version": "4.17.6", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, - "@types/long": { - "version": "4.0.2" - }, - "@types/marked": { - "version": "4.0.8" - }, - "@types/mime": { - "version": "3.0.1", - "dev": true - }, - "@types/ms": { - "version": "0.7.31" - }, - "@types/node": { - "version": "14.14.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", - "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==" - }, - "@types/parse-json": { - "version": "4.0.0", - "dev": true - }, - "@types/prettier": { - "version": "2.7.2", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "dev": true - }, - "@types/retry": { - "version": "0.12.0", - "dev": true - }, - "@types/serve-index": { - "version": "1.9.1", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.0", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sinonjs__fake-timers": { - "version": "8.1.1", - "dev": true - }, - "@types/sizzle": { - "version": "2.3.3", - "dev": true - }, - "@types/sockjs": { - "version": "0.3.33", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "dev": true - }, - "@types/ws": { - "version": "8.5.4", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "17.0.22", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "dev": true - }, - "@types/yauzl": { - "version": "2.10.0", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/type-utils": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.38.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.36.2", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.36.2", - "eslint-visitor-keys": "^3.3.0" - } - } - } - }, - "@typescript-eslint/types": { - "version": "5.38.1", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/utils": { - "version": "5.36.2", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" - } - }, - "@typescript-eslint/types": { - "version": "5.36.2", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.36.2", - "eslint-visitor-keys": "^3.3.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.38.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webcomponents/custom-elements": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", - "integrity": "sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==" - }, - "@xtuc/ieee754": { - "version": "1.2.0" - }, - "@xtuc/long": { - "version": "4.2.2" - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "dev": true - }, - "@yarnpkg/parsers": { - "version": "3.0.0-rc.37", - "dev": true, - "requires": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - } - }, - "@zkochan/js-yaml": { - "version": "0.0.6", - "dev": true, - "requires": { - "argparse": "^2.0.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "dev": true - } - } - }, - "abab": { - "version": "2.0.6", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.2" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "requires": {} - }, - "acorn-jsx": { - "version": "5.3.2", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "8.11.0", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "angular-froala-wysiwyg": { - "version": "4.0.15", - "requires": { - "froala-editor": "4.0.15", - "tslib": "^2.0.0" - } - }, - "angular-text-input-highlight": { - "version": "1.4.3", - "requires": {} - }, - "ansi-colors": { - "version": "4.1.3", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-styles": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "app-root-path": { - "version": "3.1.0", - "dev": true - }, - "aproba": { - "version": "2.0.0", - "dev": true - }, - "arch": { - "version": "2.2.0", - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "arg": { - "version": "4.1.3", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "dev": true - } - } - }, - "aria-query": { - "version": "5.0.2", - "dev": true - }, - "array-flatten": { - "version": "2.1.2", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "dev": true - }, - "async": { - "version": "3.2.4" - }, - "asynckit": { - "version": "0.4.0", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "dev": true - }, - "atob": { - "version": "2.1.2", - "dev": true - }, - "autoprefixer": { - "version": "10.4.13", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-lite": "^1.0.30001426", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "dev": true - }, - "aws4": { - "version": "1.12.0", - "dev": true - }, - "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - } - } - }, - "axobject-query": { - "version": "3.0.1", - "dev": true - }, - "babel-jest": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-loader": { - "version": "8.2.5", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "28.1.3", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "28.1.3", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2" - }, - "base64-inline-loader": { - "version": "2.0.1", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.32" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1" - }, - "basic-auth": { - "version": "2.0.1", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "dev": true - } - } - }, - "batch": { - "version": "0.6.1", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2" - }, - "binary-extensions": { - "version": "2.2.0" - }, - "bl": { - "version": "4.1.0", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "blob-util": { - "version": "2.0.2", - "dev": true - }, - "bluebird": { - "version": "3.7.1", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.1.0", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "braces": { - "version": "3.0.2", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bs-logger": { - "version": "0.2.6", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "dev": true - }, - "buffer-from": { - "version": "1.1.2" - }, - "builtin-modules": { - "version": "1.1.1", - "dev": true - }, - "builtins": { - "version": "5.0.1", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "bytes": { - "version": "3.0.0", - "dev": true - }, - "cacache": { - "version": "16.1.2", - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "dev": true - } - } - }, - "cachedir": { - "version": "2.3.0", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001450" - }, - "caseless": { - "version": "0.12.0", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "char-regex": { - "version": "1.0.2", - "dev": true - }, - "chardet": { - "version": "0.7.0" - }, - "charenc": { - "version": "0.0.2", - "dev": true - }, - "chart.js": { - "version": "2.9.4", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-color": { - "version": "2.4.1", - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "requires": { - "color-name": "^1.0.0" - } - }, - "check-more-types": { - "version": "2.24.0", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3" - }, - "ci-info": { - "version": "3.7.1", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1" - }, - "cli-table3": { - "version": "0.6.3", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cli-truncate": { - "version": "2.1.0", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "cli-width": { - "version": "3.0.0" - }, - "clipboard": { - "version": "2.0.11", - "requires": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" - } - }, - "cliui": { - "version": "7.0.4", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4" - }, - "clone-deep": { - "version": "4.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "co": { - "version": "4.6.0", - "dev": true - }, - "codelyzer": { - "version": "6.0.2", - "dev": true, - "requires": { - "@angular/compiler": "9.0.0", - "@angular/core": "9.0.0", - "app-root-path": "^3.0.0", - "aria-query": "^3.0.0", - "axobject-query": "2.0.2", - "css-selector-tokenizer": "^0.7.1", - "cssauron": "^1.4.0", - "damerau-levenshtein": "^1.0.4", - "rxjs": "^6.5.3", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2", - "tslib": "^1.10.0", - "zone.js": "~0.10.3" - }, - "dependencies": { - "@angular/compiler": { - "version": "9.0.0", - "dev": true, - "requires": {} - }, - "@angular/core": { - "version": "9.0.0", - "dev": true, - "requires": {} - }, - "aria-query": { - "version": "3.0.0", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "axobject-query": { - "version": "2.0.2", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, - "rxjs": { - "version": "6.6.7", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "source-map": { - "version": "0.5.7", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "dev": true - }, - "zone.js": { - "version": "0.10.3", - "dev": true - } - } - }, - "collect-v8-coverage": { - "version": "1.0.1", - "dev": true - }, - "color": { - "version": "3.2.1", - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "requires": { - "color-name": "1.1.3" - }, - "dependencies": { - "color-name": { - "version": "1.1.3" - } - } - }, - "color-name": { - "version": "1.1.4" - }, - "color-string": { - "version": "1.9.1", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "color-support": { - "version": "1.1.3", - "dev": true - }, - "colord": { - "version": "2.9.3", - "dev": true - }, - "colorette": { - "version": "1.4.0", - "dev": true - }, - "colorspace": { - "version": "1.1.4", - "requires": { - "color": "^3.1.3", - "text-hex": "1.0.x" + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "combined-stream": { - "version": "1.0.8", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, - "requires": { - "delayed-stream": "~1.0.0" + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "commander": { - "version": "2.20.3" - }, - "common-tags": { - "version": "1.8.2", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "dev": true + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" }, - "compressible": { - "version": "2.0.18", + "node_modules/linkifyjs": { + "version": "3.0.0-beta.3", "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "jquery": ">= 1.11.0", + "react": ">= 0.14.0", + "react-dom": ">= 0.14.0" } }, - "compression": { - "version": "1.7.4", + "node_modules/lint-staged": { + "version": "11.2.6", "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "dev": true - } + "cli-truncate": "2.1.0", + "colorette": "^1.4.0", + "commander": "^8.2.0", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "execa": "^5.1.1", + "listr2": "^3.12.2", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "3.3.0", + "supports-color": "8.1.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "concat": { - "version": "1.0.3", - "requires": { - "commander": "^2.9.0" + "node_modules/lint-staged/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "concat-map": { - "version": "0.0.1", - "dev": true - }, - "confusing-browser-globals": { - "version": "1.0.11", - "dev": true - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", + "node_modules/lint-staged/node_modules/execa": { + "version": "5.1.1", "dev": true, - "requires": { - "safe-buffer": "5.2.1" + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "content-type": { - "version": "1.0.5", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0" - }, - "cookie": { - "version": "0.5.0", - "dev": true + "node_modules/lint-staged/node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "cookie-signature": { - "version": "1.0.6", - "dev": true + "node_modules/lint-staged/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "copy-anything": { - "version": "2.0.6", + "node_modules/lint-staged/node_modules/human-signals": { + "version": "2.1.0", "dev": true, - "requires": { - "is-what": "^3.14.1" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" } }, - "copy-webpack-plugin": { - "version": "11.0.0", + "node_modules/lint-staged/node_modules/supports-color": { + "version": "8.1.1", "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/listr2": { + "version": "3.14.0", + "dev": true, + "license": "MIT", "dependencies": { - "fast-glob": { - "version": "3.2.12", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globby": { - "version": "13.1.3", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "slash": { - "version": "4.0.0", - "dev": true + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true } } }, - "core-js": { - "version": "3.27.2" + "node_modules/listr2/node_modules/colorette": { + "version": "2.0.19", + "dev": true, + "license": "MIT" }, - "core-js-compat": { - "version": "3.27.2", + "node_modules/lmdb": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.1.tgz", + "integrity": "sha512-NYHA0MRPjvNX+vSw8Xxg6FLKxzAG+e7Pt8RqAQA/EehzHVXq9SxDqJIN3JL1hK0dweb884y8kIh6rkWvPyg9Wg==", "dev": true, - "requires": { - "browserslist": "^4.21.4" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@harperfast/extended-iterable": "^1.0.3", + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.5.1", + "@lmdb/lmdb-darwin-x64": "3.5.1", + "@lmdb/lmdb-linux-arm": "3.5.1", + "@lmdb/lmdb-linux-arm64": "3.5.1", + "@lmdb/lmdb-linux-x64": "3.5.1", + "@lmdb/lmdb-win32-arm64": "3.5.1", + "@lmdb/lmdb-win32-x64": "3.5.1" } }, - "core-util-is": { - "version": "1.0.2", - "dev": true - }, - "corser": { - "version": "2.0.1", - "dev": true - }, - "cosmiconfig": { - "version": "7.1.0", + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "create-require": { - "version": "1.1.1", - "dev": true - }, - "critters": { - "version": "0.0.16", + "node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, - "requires": { - "chalk": "^4.1.0", - "css-select": "^4.2.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "postcss": "^8.3.7", - "pretty-bytes": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "parse5": { - "version": "6.0.1", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "license": "MIT", + "engines": { + "node": ">= 12.13.0" } }, - "cross-fetch": { - "version": "3.1.5", - "requires": { - "node-fetch": "2.6.7" - }, + "node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "node-fetch": { - "version": "2.6.7", - "requires": { - "whatwg-url": "^5.0.0" - } - } + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "cross-spawn": { - "version": "7.0.3", + "node_modules/lodash": { + "version": "4.17.21", "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } + "license": "MIT" }, - "crypt": { - "version": "0.0.2", - "dev": true + "node_modules/lodash-es": { + "version": "4.17.21", + "license": "MIT" }, - "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" }, - "css": { - "version": "3.0.0", + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } - } + "license": "MIT" }, - "css-blank-pseudo": { - "version": "3.0.3", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } + "license": "MIT" }, - "css-declaration-sorter": { - "version": "6.3.1", + "node_modules/lodash.memoize": { + "version": "4.1.2", "dev": true, - "requires": {} + "license": "MIT" }, - "css-has-pseudo": { - "version": "3.0.4", + "node_modules/lodash.merge": { + "version": "4.6.2", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } + "license": "MIT" }, - "css-loader": { - "version": "6.7.1", + "node_modules/lodash.once": { + "version": "4.1.1", "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - } + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" }, - "css-minimizer-webpack-plugin": { - "version": "3.4.1", + "node_modules/log-symbols": { + "version": "4.1.0", "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, + "license": "MIT", "dependencies": { - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - } + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "css-prefers-color-scheme": { - "version": "6.0.3", - "dev": true, - "requires": {} - }, - "css-select": { + "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "css-selector-tokenizer": { - "version": "0.7.3", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "css-tree": { - "version": "1.1.3", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "css-what": { - "version": "6.1.0", - "dev": true - }, - "cssauron": { - "version": "1.4.0", + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "requires": { - "through": "X.X.X" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "cssdb": { - "version": "7.4.1", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "dev": true - }, - "cssnano": { - "version": "5.1.14", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.13", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.13", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.3", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.1", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "csso": { - "version": "4.2.0", + "node_modules/log-update": { + "version": "4.0.0", "dev": true, - "requires": { - "css-tree": "^1.1.2" + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "cypress": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-9.7.0.tgz", - "integrity": "sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "requires": { - "@cypress/request": "^2.88.10", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^5.1.0", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.6", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.3.2", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", "dependencies": { - "@types/node": { - "version": "14.18.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", - "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "bluebird": { - "version": "3.7.2", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "commander": { - "version": "5.1.0", - "dev": true - }, - "fs-extra": { - "version": "9.1.0", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "d3": { - "version": "7.8.2", - "requires": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", "dependencies": { - "d3-scale": { - "version": "4.0.2", - "requires": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - } - }, - "d3-time": { - "version": "3.1.0", - "requires": { - "d3-array": "2 - 3" - } - }, - "d3-time-format": { - "version": "4.1.0", - "requires": { - "d3-time": "1 - 3" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" } }, - "d3-array": { - "version": "3.2.2", - "requires": { - "internmap": "1 - 2" + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" } }, - "d3-axis": { - "version": "3.0.0" + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" }, - "d3-brush": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - } + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "dev": true, + "license": "MIT" }, - "d3-chord": { - "version": "3.0.1", - "requires": { - "d3-path": "1 - 3" + "node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" } }, - "d3-color": { - "version": "3.1.0" + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } }, - "d3-contour": { - "version": "4.0.2", - "requires": { - "d3-array": "^3.2.0" + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "d3-delaunay": { - "version": "6.0.2", - "requires": { - "delaunator": "5" + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, - "d3-dispatch": { - "version": "3.0.1" + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } }, - "d3-drag": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "d3-dsv": { - "version": "3.0.1", - "requires": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz", + "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==", + "dev": true, + "license": "ISC", "dependencies": { - "commander": { - "version": "7.2.0" - }, - "iconv-lite": { - "version": "0.6.3", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "@gar/promise-retry": "^1.0.0", + "@npmcli/agent": "^4.0.0", + "@npmcli/redact": "^4.0.0", + "cacache": "^20.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^6.0.0", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "d3-ease": { - "version": "3.0.1" + "node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "d3-fetch": { - "version": "3.0.1", - "requires": { - "d3-dsv": "1 - 3" + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" } }, - "d3-force": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" + "node_modules/marked": { + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.5.tgz", + "integrity": "sha512-6hLvc0/JEbRjRgzI6wnT2P1XuM1/RrrDEX0kPt0N7jGm1133g6X7DlxFasUIx+72aKAr904GTxhSLDrd5DIlZg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "d3-format": { - "version": "3.1.0" + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" }, - "d3-geo": { - "version": "3.1.0", - "requires": { - "d3-array": "2.5.0 - 3" + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "d3-hierarchy": { - "version": "3.1.2" + "node_modules/memfs": { + "version": "3.4.13", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } }, - "d3-interpolate": { - "version": "3.0.1", - "requires": { - "d3-color": "1 - 3" + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "d3-path": { - "version": "3.1.0" + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" }, - "d3-polygon": { - "version": "3.0.1" + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "d3-quadtree": { - "version": "3.0.1" + "node_modules/mermaid": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", + "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.0.1", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.33.1", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.19", + "dompurify": "^3.3.1", + "katex": "^0.16.25", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT", + "optional": true }, - "d3-random": { - "version": "3.0.1" + "node_modules/mermaid/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT", + "optional": true }, - "d3-scale": { - "version": "3.3.0", - "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" + "node_modules/mermaid/node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "optional": true, + "bin": { + "marked": "bin/marked.js" }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", "dependencies": { - "d3-array": { - "version": "2.12.1", - "requires": { - "internmap": "^1.0.0" - } - }, - "d3-color": { - "version": "2.0.0" - }, - "d3-format": { - "version": "2.0.0" - }, - "d3-interpolate": { - "version": "2.0.1", - "requires": { - "d3-color": "1 - 2" - } - }, - "internmap": { - "version": "1.0.1" - } + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "d3-scale-chromatic": { - "version": "3.0.0", - "requires": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "d3-selection": { - "version": "3.0.0" - }, - "d3-shape": { - "version": "3.2.0", - "requires": { - "d3-path": "^3.1.0" + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "d3-time": { - "version": "2.1.1", - "requires": { - "d3-array": "2" + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" }, - "dependencies": { - "d3-array": { - "version": "2.12.1", - "requires": { - "internmap": "^1.0.0" - } - }, - "internmap": { - "version": "1.0.1" - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "d3-time-format": { - "version": "3.0.0", - "requires": { - "d3-time": "1 - 2" + "node_modules/mini-css-extract-plugin": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", + "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "d3-timer": { - "version": "3.0.1" + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "dev": true, + "license": "ISC" }, - "d3-transition": { - "version": "3.0.1", - "requires": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "d3-zoom": { - "version": "3.0.0", - "requires": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "node_modules/minimist": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "dagre-d3-es": { - "version": "7.0.6", - "requires": { - "d3": "^7.7.0", - "lodash-es": "^4.17.21" + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "damerau-levenshtein": { - "version": "1.0.8", - "dev": true - }, - "dashdash": { - "version": "1.14.1", + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, - "requires": { - "assert-plus": "^1.0.0" + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "dayjs": { - "version": "1.11.7" - }, - "debug": { - "version": "4.3.4", - "requires": { - "ms": "2.1.2" + "node_modules/minipass-fetch": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", + "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^2.0.0", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + }, + "optionalDependencies": { + "iconv-lite": "^0.7.2" } }, - "decode-uri-component": { - "version": "0.2.2", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "dev": true - }, - "deep-equal": { - "version": "2.2.0", + "node_modules/minipass-fetch/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "deep-is": { - "version": "0.1.4", - "dev": true - }, - "deepmerge": { - "version": "4.3.0" - }, - "default-gateway": { - "version": "6.0.3", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "requires": { - "execa": "^5.0.0" - }, + "license": "ISC", "dependencies": { - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - } + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "defaults": { - "version": "1.0.4", - "requires": { - "clone": "^1.0.2" + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "define-lazy-prop": { - "version": "2.0.0" + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" }, - "define-properties": { - "version": "1.1.4", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "delaunator": { - "version": "5.0.0", - "requires": { - "robust-predicates": "^3.0.0" + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "delayed-stream": { - "version": "1.0.0", - "dev": true - }, - "delegate": { - "version": "3.2.0" - }, - "delegates": { - "version": "1.0.0", - "dev": true - }, - "depd": { - "version": "1.1.2", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0" + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" }, - "destroy": { - "version": "1.2.0", - "dev": true + "node_modules/minipass-sized": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", + "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">=8" + } }, - "detect-newline": { + "node_modules/minizlib": { "version": "3.1.0", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "dev": true + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } }, - "diff": { - "version": "4.0.2", - "dev": true + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "license": "MIT", + "optional": true, + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } }, - "diff-sequences": { - "version": "28.1.1", - "dev": true + "node_modules/moment": { + "version": "2.29.4", + "license": "MIT", + "engines": { + "node": "*" + } }, - "dir-glob": { - "version": "3.0.1", + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, - "requires": { - "path-type": "^4.0.0" + "license": "MIT", + "engines": { + "node": ">=10" } }, - "dns-equal": { - "version": "1.0.0", - "dev": true + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" }, - "dns-packet": { - "version": "5.4.0", + "node_modules/msgpackr": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.9.tgz", + "integrity": "sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==", "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" + "license": "MIT", + "optional": true, + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" } }, - "doctrine": { - "version": "3.0.0", + "node_modules/multicast-dns": { + "version": "7.2.5", "dev": true, - "requires": { - "esutils": "^2.0.2" + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "dom-serializer": { - "version": "1.4.1", + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, - "domelementtype": { - "version": "2.3.0", - "dev": true + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "domhandler": { - "version": "4.3.1", + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, - "requires": { - "domelementtype": "^2.2.0" + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" } }, - "dompurify": { - "version": "2.4.1" + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" }, - "domutils": { - "version": "2.8.0", + "node_modules/needle": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", + "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" } }, - "dotenv": { - "version": "10.0.0", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "ee-first": { - "version": "1.1.1", - "dev": true - }, - "ejs": { - "version": "3.1.8", + "node_modules/negotiator": { + "version": "0.6.3", "dev": true, - "requires": { - "jake": "^10.8.5" + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "electron-to-chromium": { - "version": "1.4.284" - }, - "emittery": { - "version": "0.10.2", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0" + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" }, - "emoji-toolkit": { - "version": "6.6.0" + "node_modules/ng-click-outside": { + "version": "9.0.1", + "license": "MIT", + "peerDependencies": { + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0" + } }, - "emojis-list": { - "version": "3.0.0" + "node_modules/ng-hcaptcha": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ng-hcaptcha/-/ng-hcaptcha-2.6.0.tgz", + "integrity": "sha512-qFtWpYw3LXohFbrFA017c9Z6Jti9vsSh4PPtul3whbg3tTe8T6qXMwC/9TwBP/bTu0uhqulcz7iPuMAs8PdjTA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + }, + "peerDependencies": { + "@angular/common": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.01 || ^19.0.0 || ^20.0.0", + "@angular/core": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", + "@angular/forms": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0" + } }, - "enabled": { - "version": "2.0.0" + "node_modules/ng-hcaptcha/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, - "encodeurl": { - "version": "1.0.2", - "dev": true + "node_modules/ng-otp-input": { + "version": "1.8.5", + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "peerDependencies": { + "@angular/common": ">=6.0.0", + "@angular/core": ">=6.0.0" + } }, - "encoding": { - "version": "0.1.13", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" + "node_modules/ngrx-store-localstorage": { + "version": "14.0.0", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.2.2", + "tslib": "^2.3.0" }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@ngrx/store": "^14.0.0" + } + }, + "node_modules/ngx-bootstrap": { + "version": "9.0.0", + "license": "MIT", "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^14.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/forms": "^14.0.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, - "end-of-stream": { - "version": "1.4.4", + "node_modules/ngx-build-plus": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/ngx-build-plus/-/ngx-build-plus-19.0.0.tgz", + "integrity": "sha512-JXzRvDZH1gQ2xGiePduHoMeR9kaK1cHHhT6d6npVBq8aWGFHs1iAg/5/gkieCsz2QfrcaoSF8ZBb9ZhcGX4Z2g==", "dev": true, - "requires": { - "once": "^1.4.0" + "license": "MIT", + "dependencies": { + "webpack-merge": "^5.0.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=19.0.0", + "@schematics/angular": ">=19.0.0", + "rxjs": ">= 6.0.0" } }, - "engine.io-client": { - "version": "6.2.3", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" + "node_modules/ngx-cookie-service": { + "version": "14.0.1", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0" } }, - "engine.io-parser": { - "version": "5.0.6" - }, - "enhanced-resolve": { - "version": "5.12.0", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "node_modules/ngx-markdown": { + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-21.1.0.tgz", + "integrity": "sha512-qiyn9Je20F9yS4/q0p1Xhk2b/HW0rHWWlJNRm8DIzJKNck9Rmn/BfFxq0webmQHPPyYkg2AjNq/ZeSqDTQJbsQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "clipboard": "^2.0.11", + "emoji-toolkit": ">= 8.0.0 < 11.0.0", + "katex": "^0.16.0", + "mermaid": ">= 10.6.0 < 12.0.0", + "prismjs": "^1.30.0" + }, + "peerDependencies": { + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "marked": "^17.0.0", + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.15.0 || ~0.16.0" } }, - "enquirer": { - "version": "2.3.6", + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } + "license": "MIT" }, - "entities": { - "version": "2.2.0", - "dev": true + "node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT", + "optional": true }, - "env-paths": { - "version": "2.2.1", - "dev": true + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } }, - "err-code": { - "version": "2.0.3", - "dev": true + "node_modules/node-forge": { + "version": "1.3.1", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } }, - "errno": { - "version": "0.1.8", + "node_modules/node-gyp": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^15.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "which": "^6.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, + "license": "MIT", "optional": true, - "requires": { - "prr": "~1.0.1" + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "error-ex": { - "version": "1.3.2", + "node_modules/node-gyp/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" } }, - "es-get-iterator": { - "version": "1.1.3", + "node_modules/node-gyp/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "es-module-lexer": { - "version": "0.9.3" - }, - "esbuild": { - "version": "0.15.5", - "dev": true, - "optional": true, - "requires": { - "@esbuild/linux-loong64": "0.15.5", - "esbuild-android-64": "0.15.5", - "esbuild-android-arm64": "0.15.5", - "esbuild-darwin-64": "0.15.5", - "esbuild-darwin-arm64": "0.15.5", - "esbuild-freebsd-64": "0.15.5", - "esbuild-freebsd-arm64": "0.15.5", - "esbuild-linux-32": "0.15.5", - "esbuild-linux-64": "0.15.5", - "esbuild-linux-arm": "0.15.5", - "esbuild-linux-arm64": "0.15.5", - "esbuild-linux-mips64le": "0.15.5", - "esbuild-linux-ppc64le": "0.15.5", - "esbuild-linux-riscv64": "0.15.5", - "esbuild-linux-s390x": "0.15.5", - "esbuild-netbsd-64": "0.15.5", - "esbuild-openbsd-64": "0.15.5", - "esbuild-sunos-64": "0.15.5", - "esbuild-windows-32": "0.15.5", - "esbuild-windows-64": "0.15.5", - "esbuild-windows-arm64": "0.15.5" - } - }, - "esbuild-wasm": { - "version": "0.15.5", - "dev": true - }, - "escalade": { - "version": "3.1.1" + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" }, - "escape-html": { - "version": "1.0.3", - "dev": true + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true, + "license": "MIT" }, - "escape-string-regexp": { - "version": "1.0.5" + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "license": "MIT" }, - "eslint": { - "version": "8.15.0", + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, - "requires": { - "@eslint/eslintrc": "^1.2.3", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, + "license": "MIT", "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "dev": true - }, - "eslint-scope": { - "version": "7.1.1", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "dev": true - } + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" } }, - "eslint-config-prettier": { - "version": "8.1.0", + "node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", "dev": true, - "requires": {} + "license": "ISC", + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, - "eslint-plugin-cypress": { - "version": "2.12.1", + "node_modules/normalize-path": { + "version": "3.0.0", "dev": true, - "requires": { - "globals": "^11.12.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "eslint-scope": { - "version": "5.1.1", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "node_modules/npm-bundled": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", + "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "eslint-utils": { - "version": "3.0.0", + "node_modules/npm-install-checks": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz", + "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==", "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, + "license": "BSD-2-Clause", "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "dev": true - } + "semver": "^7.1.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "eslint-visitor-keys": { - "version": "3.3.0", - "dev": true - }, - "espree": { - "version": "9.4.1", + "node_modules/npm-normalize-package-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", + "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "esprima": { - "version": "4.0.1", - "dev": true - }, - "esquery": { - "version": "1.4.0", + "node_modules/npm-package-arg": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz", + "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==", "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, + "license": "ISC", "dependencies": { - "estraverse": { - "version": "5.3.0", - "dev": true - } + "hosted-git-info": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^7.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "esrecurse": { - "version": "4.3.0", - "requires": { - "estraverse": "^5.2.0" - }, + "node_modules/npm-packlist": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz", + "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==", + "dev": true, + "license": "ISC", "dependencies": { - "estraverse": { - "version": "5.3.0" - } + "ignore-walk": "^8.0.0", + "proc-log": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "estraverse": { - "version": "4.3.0" - }, - "esutils": { - "version": "2.0.3", - "dev": true - }, - "etag": { - "version": "1.8.1", - "dev": true - }, - "eventemitter-asyncresource": { - "version": "1.0.0", - "dev": true - }, - "eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "dev": true - }, - "events": { - "version": "3.3.0" + "node_modules/npm-pick-manifest": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz", + "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "npm-package-arg": "^13.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, - "execa": { - "version": "4.1.0", + "node_modules/npm-registry-fetch": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz", + "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==", "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^4.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^15.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^13.0.0", + "proc-log": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "executable": { - "version": "4.1.1", + "node_modules/npm-run-path": { + "version": "4.0.1", "dev": true, - "requires": { - "pify": "^2.2.0" + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "exit": { - "version": "0.1.2", - "dev": true + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, - "expect": { - "version": "28.1.3", + "node_modules/nx": { + "version": "21.6.10", + "resolved": "https://registry.npmjs.org/nx/-/nx-21.6.10.tgz", + "integrity": "sha512-iKSyAg0VGG1MEOnlyyseMOt4n9J7I955VC+0UPQbNQTLdIUW8ibIHubpQyjd8Qvq4CfrLxzm+iq1AmbZ5vEG4A==", "dev": true, - "requires": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@napi-rs/wasm-runtime": "0.2.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.2", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.12.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "front-matter": "^4.0.2", + "ignore": "^5.0.4", + "jest-diff": "^30.0.2", + "jsonc-parser": "3.2.0", + "lines-and-columns": "2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "resolve.exports": "2.0.3", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tree-kill": "^1.2.2", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yaml": "^2.6.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "21.6.10", + "@nx/nx-darwin-x64": "21.6.10", + "@nx/nx-freebsd-x64": "21.6.10", + "@nx/nx-linux-arm-gnueabihf": "21.6.10", + "@nx/nx-linux-arm64-gnu": "21.6.10", + "@nx/nx-linux-arm64-musl": "21.6.10", + "@nx/nx-linux-x64-gnu": "21.6.10", + "@nx/nx-linux-x64-musl": "21.6.10", + "@nx/nx-win32-arm64-msvc": "21.6.10", + "@nx/nx-win32-x64-msvc": "21.6.10" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } + "peerDependencies": { + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "@swc/core": { + "optional": true } } }, - "express": { - "version": "4.18.2", + "node_modules/nx/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, + "license": "MIT", "dependencies": { - "array-flatten": { - "version": "1.1.1", - "dev": true - }, - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "2.0.0", - "dev": true - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "dev": true - }, - "external-editor": { - "version": "3.1.0", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "@sinclair/typebox": "^0.34.0" }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "requires": { - "os-tmpdir": "~1.0.2" - } - } + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "extract-zip": { - "version": "2.0.1", + "node_modules/nx/node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "license": "MIT", + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" } }, - "extsprintf": { - "version": "1.3.0", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-glob": { - "version": "3.2.7", + "node_modules/nx/node_modules/@sinclair/typebox": { + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0" - }, - "fast-levenshtein": { - "version": "2.0.6", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "dev": true + "license": "MIT" }, - "fastq": { - "version": "1.15.0", + "node_modules/nx/node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "requires": { - "websocket-driver": ">=0.5.1" + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" } }, - "fb-watchman": { - "version": "2.0.2", + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "bser": "2.1.1" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "fd-slicer": { - "version": "1.1.0", + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "fecha": { - "version": "4.2.3" - }, - "figures": { - "version": "3.2.0", - "requires": { - "escape-string-regexp": "^1.0.5" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "file-entry-cache": { - "version": "6.0.1", + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "flat-cache": "^3.0.4" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "file-loader": { - "version": "6.2.0", - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "node_modules/nx/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1" - }, - "loader-utils": { - "version": "2.0.4", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "funding": { + "url": "https://dotenvx.com" } }, - "filelist": { - "version": "1.0.4", + "node_modules/nx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "minimatch": "^5.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "fill-range": { - "version": "7.0.1", - "requires": { - "to-regex-range": "^5.0.1" + "node_modules/nx/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "finalhandler": { - "version": "1.2.0", + "node_modules/nx/node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "find-cache-dir": { - "version": "3.3.2", + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } + "license": "MIT" }, - "find-up": { - "version": "4.1.0", + "node_modules/nx/node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "firebase": { - "version": "9.16.0", - "requires": { - "@firebase/analytics": "0.9.1", - "@firebase/analytics-compat": "0.2.1", - "@firebase/app": "0.9.1", - "@firebase/app-check": "0.6.1", - "@firebase/app-check-compat": "0.3.1", - "@firebase/app-compat": "0.2.1", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "0.21.1", - "@firebase/auth-compat": "0.3.1", - "@firebase/database": "0.14.1", - "@firebase/database-compat": "0.3.1", - "@firebase/firestore": "3.8.1", - "@firebase/firestore-compat": "0.3.1", - "@firebase/functions": "0.9.1", - "@firebase/functions-compat": "0.3.1", - "@firebase/installations": "0.6.1", - "@firebase/installations-compat": "0.2.1", - "@firebase/messaging": "0.12.1", - "@firebase/messaging-compat": "0.2.1", - "@firebase/performance": "0.6.1", - "@firebase/performance-compat": "0.2.1", - "@firebase/remote-config": "0.4.1", - "@firebase/remote-config-compat": "0.2.1", - "@firebase/storage": "0.10.1", - "@firebase/storage-compat": "0.2.1", - "@firebase/util": "1.9.0" - } - }, - "flat": { - "version": "5.0.2", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", + "node_modules/nx/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flatted": { - "version": "3.2.7", - "dev": true - }, - "fn.name": { - "version": "1.1.0" - }, - "follow-redirects": { - "version": "1.15.2", - "dev": true - }, - "for-each": { - "version": "0.3.3", + "node_modules/nx/node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", "dev": true, - "requires": { - "is-callable": "^1.1.3" + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "forever-agent": { - "version": "0.6.1", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "7.2.13", + "node_modules/nx/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" + "license": "MIT", + "engines": { + "node": ">=10" }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "form-data": { - "version": "2.3.3", + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "forwarded": { - "version": "0.2.0", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "dev": true - }, - "froala-editor": { - "version": "4.0.15" - }, - "fs-constants": { - "version": "1.0.0", - "dev": true - }, - "fs-extra": { - "version": "5.0.0", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "node_modules/nx/node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, - "fs-minipass": { - "version": "2.1.0", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "requires": { - "minipass": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "fs-monkey": { - "version": "1.0.3", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0" + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "fsevents": { - "version": "2.3.2", - "optional": true + "node_modules/object-is": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "function-bind": { + "node_modules/object-keys": { "version": "1.1.1", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "dev": true - }, - "functions-have-names": { - "version": "1.2.3", - "dev": true - }, - "fuzzy": { - "version": "0.1.3" - }, - "gauge": { - "version": "4.0.4", "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "license": "MIT", + "engines": { + "node": ">= 0.4" } }, - "gensync": { - "version": "1.0.0-beta.2" + "node_modules/object.assign": { + "version": "4.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "get-caller-file": { - "version": "2.0.5" + "node_modules/obuf": { + "version": "1.1.2", + "dev": true, + "license": "MIT" }, - "get-intrinsic": { - "version": "1.2.0", + "node_modules/on-finished": { + "version": "2.4.1", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "dev": true + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "get-package-type": { - "version": "0.1.0", - "dev": true + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "get-stream": { - "version": "5.2.0", + "node_modules/onetime": { + "version": "5.1.2", "dev": true, - "requires": { - "pump": "^3.0.0" + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "getos": { - "version": "3.2.1", + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "requires": { - "async": "^3.2.0" + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "getpass": { - "version": "0.1.7", + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, - "requires": { - "assert-plus": "^1.0.0" + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" } }, - "glob": { - "version": "8.0.3", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "node_modules/optionator": { + "version": "0.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "glob-parent": { - "version": "5.1.2", - "requires": { - "is-glob": "^4.0.1" + "node_modules/ora": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-9.3.0.tgz", + "integrity": "sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.6.2", + "cli-cursor": "^5.0.0", + "cli-spinners": "^3.2.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.1.0", + "log-symbols": "^7.0.1", + "stdin-discarder": "^0.3.1", + "string-width": "^8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "glob-to-regexp": { - "version": "0.4.1" + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "global-dirs": { - "version": "3.0.1", - "dev": true, - "requires": { - "ini": "2.0.0" + "node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", "dependencies": { - "ini": { - "version": "2.0.0", - "dev": true - } + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/cli-spinners": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", + "integrity": "sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==", + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "globals": { - "version": "11.12.0" + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "globby": { - "version": "11.1.0", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "node_modules/ora/node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", "dependencies": { - "fast-glob": { - "version": "3.2.12", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - } + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "good-listener": { - "version": "1.2.2", - "requires": { - "delegate": "^3.1.2" + "node_modules/ora/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "google-libphonenumber": { - "version": "3.2.32" - }, - "gopd": { - "version": "1.0.1", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" + "node_modules/ora/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "graceful-fs": { - "version": "4.2.10" - }, - "gzipper": { - "version": "4.5.0", - "dev": true, - "requires": { - "commander": "^7.2.0", - "deep-equal": "^2.0.5", - "uuid": "^8.3.2" - }, + "node_modules/ora/node_modules/string-width": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", + "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", + "license": "MIT", "dependencies": { - "commander": { - "version": "7.2.0", - "dev": true - } + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "handle-thing": { - "version": "2.0.1", - "dev": true - }, - "harmony-reflect": { - "version": "1.6.2", - "dev": true - }, - "has": { - "version": "1.0.3", - "dev": true, - "requires": { - "function-bind": "^1.1.1" + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "has-bigints": { - "version": "1.0.2", - "dev": true - }, - "has-flag": { - "version": "3.0.0" - }, - "has-property-descriptors": { - "version": "1.0.0", + "node_modules/ordered-binary": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.1.tgz", + "integrity": "sha512-QkCdPooczexPLiXIrbVOPYkR3VO3T6v2OyKRkR1Xbhpy7/LAVXwahnRCgRp78Oe/Ehf0C/HATAxfSr6eA1oX+w==", "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } + "license": "MIT", + "optional": true }, - "has-symbols": { - "version": "1.0.3", - "dev": true + "node_modules/ospath": { + "version": "1.2.2", + "dev": true, + "license": "MIT" }, - "has-tostringtag": { - "version": "1.0.0", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { - "has-symbols": "^1.0.2" + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "has-unicode": { - "version": "2.0.1", - "dev": true - }, - "hdr-histogram-js": { - "version": "2.0.3", + "node_modules/p-locate": { + "version": "4.1.0", "dev": true, - "requires": { - "@assemblyscript/loader": "^0.10.1", - "base64-js": "^1.2.0", - "pako": "^1.0.3" + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "hdr-histogram-percentiles-obj": { - "version": "3.0.0", - "dev": true - }, - "he": { - "version": "1.2.0", - "dev": true - }, - "highcharts": { - "version": "10.3.3" - }, - "highcharts-angular": { - "version": "3.0.0", - "requires": { - "tslib": "^2.0.0" + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "hosted-git-info": { - "version": "5.2.1", + "node_modules/p-map": { + "version": "4.0.0", "dev": true, - "requires": { - "lru-cache": "^7.5.1" - }, + "license": "MIT", "dependencies": { - "lru-cache": { - "version": "7.14.1", - "dev": true - } + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "hpack.js": { - "version": "2.1.6", + "node_modules/p-retry": { + "version": "4.6.2", "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, + "license": "MIT", "dependencies": { - "isarray": { - "version": "1.0.0", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" } }, - "html-encoding-sniffer": { - "version": "3.0.0", + "node_modules/p-try": { + "version": "2.2.0", "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "html-entities": { - "version": "2.3.3", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "dev": true + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" }, - "http-deceiver": { - "version": "1.2.7", - "dev": true + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT", + "optional": true }, - "http-errors": { - "version": "2.0.0", + "node_modules/pacote": { + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", + "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, + "license": "ISC", "dependencies": { - "depd": { - "version": "2.0.0", - "dev": true - } + "@npmcli/git": "^7.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "@npmcli/run-script": "^10.0.0", + "cacache": "^20.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^13.0.0", + "npm-packlist": "^10.0.1", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^4.0.0", + "ssri": "^13.0.0", + "tar": "^7.4.3" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "http-parser-js": { - "version": "0.5.8" - }, - "http-proxy": { - "version": "1.18.1", + "node_modules/parent-module": { + "version": "1.0.1", "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "http-proxy-agent": { - "version": "5.0.0", + "node_modules/parse-json": { + "version": "5.2.0", "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "http-proxy-middleware": { - "version": "2.0.6", + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "http-server": { - "version": "14.1.1", + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, - "requires": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "http-signature": { - "version": "1.3.6", + "node_modules/parse5-html-rewriting-stream": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-8.0.0.tgz", + "integrity": "sha512-wzh11mj8KKkno1pZEu+l2EVeWsuKDfR5KNWZOTsslfUX8lPDZx77m9T0kIoAVkFtD1nx6YF8oh4BnPHvxMtNMw==", "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" + "license": "MIT", + "dependencies": { + "entities": "^6.0.0", + "parse5": "^8.0.0", + "parse5-sax-parser": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "https-proxy-agent": { - "version": "5.0.1", + "node_modules/parse5-html-rewriting-stream/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "human-signals": { - "version": "1.1.1", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", + "node_modules/parse5-sax-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-8.0.0.tgz", + "integrity": "sha512-/dQ8UzHZwnrzs3EvDj6IkKrD/jIZyTlB+8XrHJvcjNgRdmWruNdN9i9RK/JtxakmlUdPwKubKPTCqvbTgzGhrw==", "dev": true, - "requires": { - "ms": "^2.0.0" + "license": "MIT", + "dependencies": { + "parse5": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "husky": { - "version": "7.0.4", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "icss-utils": { - "version": "5.1.0", + "node_modules/parseurl": { + "version": "1.3.3", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "idb": { - "version": "7.0.1" + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT", + "optional": true }, - "identity-obj-proxy": { - "version": "3.0.0", + "node_modules/path-exists": { + "version": "4.0.0", "dev": true, - "requires": { - "harmony-reflect": "^1.4.6" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "5.2.4", - "dev": true - }, - "ignore-walk": { - "version": "5.0.1", + "node_modules/path-is-absolute": { + "version": "1.0.1", "dev": true, - "requires": { - "minimatch": "^5.0.1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "image-size": { - "version": "0.5.5", + "node_modules/path-key": { + "version": "3.1.1", "dev": true, - "optional": true + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "immutable": { - "version": "4.2.2", - "dev": true + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" }, - "import-fresh": { - "version": "3.3.0", + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, + "license": "BlueOak-1.0.0", "dependencies": { - "resolve-from": { - "version": "4.0.0", - "dev": true - } + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "import-local": { - "version": "3.1.0", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "imurmurhash": { - "version": "0.1.4", - "dev": true + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" }, - "indent-string": { + "node_modules/path-type": { "version": "4.0.0", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "infer-owner": { - "version": "1.0.4", - "dev": true + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT", + "optional": true }, - "inflight": { - "version": "1.0.6", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } + "node_modules/pend": { + "version": "1.2.0", + "dev": true, + "license": "MIT" }, - "inherits": { - "version": "2.0.4" + "node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" }, - "ini": { - "version": "3.0.0", - "dev": true + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, - "inquirer": { - "version": "8.2.4", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "inquirer-autocomplete-prompt": { - "version": "1.4.0", - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "figures": "^3.2.0", - "run-async": "^2.4.0", - "rxjs": "^6.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "rxjs": { - "version": "6.6.7", - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1" - } + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "internal-slot": { - "version": "1.0.4", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">= 6" } }, - "internmap": { - "version": "2.0.3" - }, - "intl-tel-input": { - "version": "17.0.19" - }, - "ip": { - "version": "2.0.0", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "dev": true - }, - "is-arguments": { - "version": "1.1.1", + "node_modules/piscina": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-5.1.4.tgz", + "integrity": "sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=20.x" + }, + "optionalDependencies": { + "@napi-rs/nice": "^1.0.4" } }, - "is-array-buffer": { - "version": "3.0.1", + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "license": "MIT", + "engines": { + "node": ">=16.20.0" } }, - "is-arrayish": { - "version": "0.2.1", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { - "has-bigints": "^1.0.1" + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-binary-path": { - "version": "2.1.0", - "requires": { - "binary-extensions": "^2.0.0" + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, - "is-boolean-object": { - "version": "1.1.2", + "node_modules/pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "license": "BSD-3-Clause", + "dependencies": { + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "dev": true - }, - "is-callable": { - "version": "1.2.7", - "dev": true + "node_modules/pkijs/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "is-ci": { - "version": "3.0.1", + "node_modules/please-upgrade-node": { + "version": "3.2.0", "dev": true, - "requires": { - "ci-info": "^3.2.0" + "license": "MIT", + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT", + "optional": true + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "optional": true, + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" } }, - "is-core-module": { - "version": "2.11.0", + "node_modules/portfinder": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", + "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", "dev": true, - "requires": { - "has": "^1.0.3" + "license": "MIT", + "dependencies": { + "async": "^3.2.6", + "debug": "^4.3.6" + }, + "engines": { + "node": ">= 10.12" } }, - "is-date-object": { - "version": "1.0.5", + "node_modules/portfinder/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "is-docker": { - "version": "2.2.1" - }, - "is-extglob": { - "version": "2.1.1" - }, - "is-fullwidth-code-point": { - "version": "3.0.0" - }, - "is-generator-fn": { - "version": "2.1.0", - "dev": true + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "is-glob": { - "version": "4.0.3", - "requires": { - "is-extglob": "^2.1.1" + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "is-installed-globally": { - "version": "0.4.0", + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" } }, - "is-interactive": { - "version": "1.0.0" - }, - "is-lambda": { - "version": "1.0.1", - "dev": true - }, - "is-map": { - "version": "2.0.2", - "dev": true - }, - "is-number": { - "version": "7.0.0" - }, - "is-number-object": { - "version": "1.0.7", + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-obj": { - "version": "1.0.1", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", "dev": true, - "requires": { - "isobject": "^3.0.1" + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-regex": { - "version": "1.1.4", + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-regexp": { - "version": "1.0.0", - "dev": true - }, - "is-set": { - "version": "2.0.2", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", "dev": true, - "requires": { - "call-bind": "^1.0.2" + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-stream": { - "version": "2.0.1" - }, - "is-string": { - "version": "1.0.7", + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-symbol": { - "version": "1.0.4", + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", "dev": true, - "requires": { - "has-symbols": "^1.0.2" + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "is-typed-array": { - "version": "1.1.10", + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0" + "node_modules/postcss-loader": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.0.tgz", + "integrity": "sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^2.5.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } }, - "is-weakmap": { + "node_modules/postcss-loader/node_modules/argparse": { "version": "2.0.1", - "dev": true + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" }, - "is-weakset": { - "version": "2.0.2", + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "is-what": { - "version": "3.14.1", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "requires": { - "is-docker": "^2.0.0" + "node_modules/postcss-loader/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "isarray": { - "version": "2.0.5", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "dev": true + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" }, - "isstream": { - "version": "0.1.2", - "dev": true + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "dev": true + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } }, - "istanbul-lib-instrument": { - "version": "5.2.1", + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "license": "MIT", "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "istanbul-lib-report": { - "version": "3.0.0", + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "istanbul-lib-source-maps": { - "version": "4.0.1", + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "istanbul-reports": { - "version": "3.1.5", + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jake": { - "version": "10.8.5", + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "peerDependencies": { + "postcss": "^8.1.0" } }, - "jest": { - "version": "28.1.3", + "node_modules/postcss-modules-local-by-default": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "jest-changed-files": { - "version": "28.1.3", + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, + "license": "MIT", "dependencies": { - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - } + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "jest-circus": { - "version": "28.1.3", + "node_modules/postcss-modules-scope": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "license": "ISC", "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "jest-cli": { - "version": "28.1.3", + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, - "requires": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, + "license": "MIT", "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-config": { - "version": "28.1.3", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-resolve": { - "version": "28.1.3", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "jest-config": { - "version": "28.1.1", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.1", - "@jest/types": "^28.1.1", - "babel-jest": "^28.1.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.1", - "jest-environment-node": "^28.1.1", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.1", - "jest-runner": "^28.1.1", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, + "license": "ISC", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "jest-diff": { - "version": "28.1.3", + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-docblock": { - "version": "28.1.1", + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", "dev": true, - "requires": { - "detect-newline": "^3.0.0" + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-each": { - "version": "28.1.3", + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-environment-node": { - "version": "28.1.3", + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-get-type": { - "version": "28.0.2", - "dev": true - }, - "jest-haste-map": { - "version": "28.1.3", + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "28.1.3", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-leak-detector": { - "version": "28.1.3", + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", "dev": true, - "requires": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-matcher-utils": { - "version": "28.1.3", + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-message-util": { - "version": "28.1.3", + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-mock": { - "version": "28.1.3", + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*" + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-pnp-resolver": { - "version": "1.2.3", + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "28.0.2", - "dev": true + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } }, - "jest-resolve": { - "version": "28.1.1", + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.1", - "jest-validate": "^28.1.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, - "has-flag": { - "version": "4.0.0", - "dev": true + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-resolve-dependencies": { - "version": "28.1.3", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, - "requires": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "jest-runner": { - "version": "28.1.3", + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, + "license": "MIT", "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-resolve": { - "version": "28.1.3", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "28.1.3", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "dev": true - }, - "source-map-support": { - "version": "0.5.13", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-runtime": { - "version": "28.1.3", + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", "dev": true, - "requires": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "jest-resolve": { - "version": "28.1.3", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "jest-snapshot": { - "version": "28.1.3", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" + "license": "MIT", + "engines": { + "node": ">=20" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "jest-util": { - "version": "28.1.1", + "node_modules/prelude-ls": { + "version": "1.2.1", "dev": true, - "requires": { - "@jest/types": "^28.1.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "license": "MIT", + "engines": { + "node": ">= 0.8.0" } }, - "jest-validate": { - "version": "28.1.3", + "node_modules/prettier": { + "version": "2.7.1", "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "jest-watcher": { - "version": "28.1.3", + "node_modules/pretty-bytes": { + "version": "5.6.0", "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" + "license": "MIT", + "engines": { + "node": ">=6" }, - "dependencies": { - "@jest/test-result": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "jest-worker": { - "version": "27.5.1", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0" - }, - "supports-color": { - "version": "8.1.1", - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "dev": true, - "peer": true - }, - "js-tokens": { - "version": "4.0.0" - }, - "js-yaml": { - "version": "3.14.1", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "jsbn": { - "version": "0.1.1", - "dev": true - }, - "jsesc": { - "version": "2.5.2" - }, - "json-parse-even-better-errors": { - "version": "2.3.1" - }, - "json-schema": { - "version": "0.4.0", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "dev": true - }, - "json5": { - "version": "2.2.3" + "node_modules/primeng": { + "version": "14.2.2", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/forms": "^14.0.0", + "primeicons": "^6.0.1", + "rxjs": "^6.0.0 || ^7.0.0", + "zone.js": "^0.10.2 || ^0.11.0 || ^0.12.0" + } }, - "jsonc-parser": { - "version": "3.1.0" + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } }, - "jsonfile": { - "version": "4.0.0", - "requires": { - "graceful-fs": "^4.1.6" + "node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "jsonparse": { - "version": "1.3.1", - "dev": true + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" }, - "jsprim": { - "version": "2.0.2", + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" } }, - "jssip": { - "version": "3.10.0", - "requires": { - "@types/debug": "^4.1.7", - "@types/events": "^3.0.0", - "debug": "^4.3.1", - "events": "^3.3.0", - "sdp-transform": "^2.14.1" + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "karma-source-map-support": { - "version": "1.4.0", + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "requires": { - "source-map-support": "^0.5.5" + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "katex": { - "version": "0.16.4", - "requires": { - "commander": "^8.0.0" - }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { - "commander": { - "version": "8.3.0" - } + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" } }, - "khroma": { - "version": "2.0.0" - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "dev": true - }, - "klona": { - "version": "2.0.6", - "dev": true - }, - "kuler": { - "version": "2.0.0" - }, - "lazy-ass": { - "version": "1.6.0", - "dev": true - }, - "less": { - "version": "4.1.3", + "node_modules/proxy-addr": { + "version": "2.0.7", "dev": true, - "requires": { - "copy-anything": "^2.0.1", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "parse-node-version": "^1.0.1", - "source-map": "~0.6.0", - "tslib": "^2.3.0" - }, + "license": "MIT", "dependencies": { - "make-dir": { - "version": "2.1.0", - "dev": true, - "optional": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "dev": true, - "optional": true - } + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, - "less-loader": { - "version": "11.0.0", + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", "dev": true, - "requires": { - "klona": "^2.0.4" + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "leven": { - "version": "3.1.0", - "dev": true - }, - "levn": { - "version": "0.4.1", + "node_modules/proxy-from-env": { + "version": "1.0.0", "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } + "license": "MIT" }, - "license-webpack-plugin": { - "version": "4.0.2", + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lilconfig": { - "version": "2.0.6", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "dev": true + "license": "MIT", + "optional": true }, - "linkifyjs": { - "version": "3.0.0-beta.3", + "node_modules/psl": { + "version": "1.9.0", "dev": true, - "requires": {} + "license": "MIT" }, - "lint-staged": { - "version": "11.2.6", + "node_modules/pump": { + "version": "3.0.0", "dev": true, - "requires": { - "cli-truncate": "2.1.0", - "colorette": "^1.4.0", - "commander": "^8.2.0", - "cosmiconfig": "^7.0.1", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "execa": "^5.1.1", - "listr2": "^3.12.2", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "please-upgrade-node": "^3.2.0", - "string-argv": "0.3.1", - "stringify-object": "3.3.0", - "supports-color": "8.1.1" - }, + "license": "MIT", "dependencies": { - "commander": { - "version": "8.3.0", - "dev": true - }, - "execa": { - "version": "5.1.1", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "listr2": { - "version": "3.14.0", + "node_modules/punycode": { + "version": "2.3.0", "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "dev": true - } + "license": "MIT", + "engines": { + "node": ">=6" } }, - "loader-runner": { - "version": "4.3.0" - }, - "loader-utils": { - "version": "3.2.0", - "dev": true + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" }, - "locate-path": { - "version": "5.0.0", + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", "dev": true, - "requires": { - "p-locate": "^4.1.0" + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" } }, - "lodash": { - "version": "4.17.21" - }, - "lodash-es": { - "version": "4.17.21" - }, - "lodash.camelcase": { - "version": "4.3.0" - }, - "lodash.debounce": { - "version": "4.0.8", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "dev": true - }, - "lodash.once": { - "version": "4.1.1", - "dev": true + "node_modules/pvtsutils/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, - "lodash.uniq": { - "version": "4.5.0", - "dev": true + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } }, - "log-symbols": { - "version": "4.1.0", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - } + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "log-update": { - "version": "4.0.0", + "node_modules/queue-microtask": { + "version": "1.2.3", "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "slice-ansi": { - "version": "4.0.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "wrap-ansi": { - "version": "6.2.0", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } + { + "type": "consulting", + "url": "https://feross.org/support" } - } - }, - "logform": { - "version": "2.4.2", - "requires": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "long": { - "version": "4.0.0" + ], + "license": "MIT" }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/rambda": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", + "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", "dev": true, - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "requires": { - "yallist": "^3.0.2" - } + "license": "MIT" }, - "magic-string": { - "version": "0.26.2", - "requires": { - "sourcemap-codec": "^1.4.8" + "node_modules/random-avatar-generator": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "seedrandom": "^3.0.5" } }, - "make-dir": { - "version": "3.1.0", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "requires": { - "semver": "^6.0.0" - }, + "license": "MIT", "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "safe-buffer": "^5.1.0" } }, - "make-error": { - "version": "1.3.6", - "dev": true - }, - "make-fetch-happen": { - "version": "10.2.1", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "7.14.1", - "dev": true - } + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "makeerror": { - "version": "1.0.12", + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, - "requires": { - "tmpl": "1.0.5" + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "marked": { - "version": "4.2.12" + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "md5": { - "version": "2.3.0", + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, - "requires": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" } }, - "mdn-data": { - "version": "2.0.14", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "dev": true - }, - "memfs": { - "version": "3.4.13", + "node_modules/readable-stream": { + "version": "3.6.0", "dev": true, - "requires": { - "fs-monkey": "^1.0.3" + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "merge-descriptors": { - "version": "1.0.1", - "dev": true - }, - "merge-stream": { - "version": "2.0.0" - }, - "merge2": { - "version": "1.4.1", - "dev": true - }, - "mermaid": { - "version": "9.3.0", - "requires": { - "@braintree/sanitize-url": "^6.0.0", - "d3": "^7.0.0", - "dagre-d3-es": "7.0.6", - "dompurify": "2.4.1", - "khroma": "^2.0.0", - "lodash-es": "^4.17.21", - "moment-mini": "^2.24.0", - "non-layered-tidy-tree-layout": "^2.0.2", - "stylis": "^4.1.2", - "uuid": "^9.0.0" - }, - "dependencies": { - "uuid": { - "version": "9.0.0" - } + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "methods": { - "version": "1.1.2", - "dev": true + "node_modules/recordrtc": { + "version": "5.6.2", + "license": "MIT" }, - "micromatch": { - "version": "4.0.5", + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "dev": true + "license": "Apache-2.0" }, - "mime-db": { - "version": "1.52.0" + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" }, - "mime-types": { - "version": "2.1.35", - "requires": { - "mime-db": "1.52.0" + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "mimic-fn": { - "version": "2.1.0" + "node_modules/regex-parser": { + "version": "2.2.11", + "dev": true, + "license": "MIT" }, - "mini-css-extract-plugin": { - "version": "2.6.1", + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "minimalistic-assert": { - "version": "1.0.1", - "dev": true - }, - "minimatch": { - "version": "5.1.0", - "requires": { - "brace-expansion": "^2.0.1" + "node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "minimist": { - "version": "1.2.7", - "dev": true - }, - "minipass": { - "version": "3.3.6", + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, - "requires": { - "yallist": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "yallist": { - "version": "4.0.0", - "dev": true - } + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" } }, - "minipass-collect": { - "version": "1.0.2", + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, - "requires": { - "minipass": "^3.0.0" - } + "license": "MIT" }, - "minipass-fetch": { - "version": "2.1.2", + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "minipass-flush": { - "version": "1.0.5", + "node_modules/request-progress": { + "version": "3.0.0", "dev": true, - "requires": { - "minipass": "^3.0.0" + "license": "MIT", + "dependencies": { + "throttleit": "^1.0.0" } }, - "minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "node_modules/require-directory": { + "version": "2.1.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "minipass-pipeline": { - "version": "1.2.4", - "dev": true, - "requires": { - "minipass": "^3.0.0" + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "minipass-sized": { - "version": "1.0.3", + "node_modules/requires-port": { + "version": "1.0.0", "dev": true, - "requires": { - "minipass": "^3.0.0" - } + "license": "MIT" }, - "minizlib": { - "version": "2.1.2", + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "yallist": { - "version": "4.0.0", - "dev": true - } + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "mkdirp": { - "version": "1.0.4", - "dev": true - }, - "moment": { - "version": "2.29.4" - }, - "moment-mini": { - "version": "2.29.4" - }, - "ms": { - "version": "2.1.2" - }, - "multicast-dns": { - "version": "7.2.5", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "mute-stream": { - "version": "0.0.8" - }, - "nanoid": { - "version": "3.3.4", - "dev": true - }, - "native-request": { - "version": "1.1.0", - "dev": true, - "optional": true - }, - "natural-compare": { - "version": "1.4.0", - "dev": true - }, - "needle": { - "version": "3.2.0", + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "3.2.7", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "negotiator": { - "version": "0.6.3", - "dev": true - }, - "neo-async": { - "version": "2.6.2" - }, - "ng-click-outside": { - "version": "9.0.1", - "requires": {} - }, - "ng-hcaptcha": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ng-hcaptcha/-/ng-hcaptcha-2.6.0.tgz", - "integrity": "sha512-qFtWpYw3LXohFbrFA017c9Z6Jti9vsSh4PPtul3whbg3tTe8T6qXMwC/9TwBP/bTu0uhqulcz7iPuMAs8PdjTA==", - "requires": { - "tslib": "^2.8.1" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" }, - "dependencies": { - "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - } + "engines": { + "node": ">=0.10.0" } }, - "ng-otp-input": { - "version": "1.8.5", - "requires": { - "tslib": "^2.2.0" + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "ngrx-store-localstorage": { - "version": "14.0.0", - "requires": { - "deepmerge": "^4.2.2", - "tslib": "^2.3.0" + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" } }, - "ngx-bootstrap": { - "version": "9.0.0", - "requires": { - "tslib": "^2.3.0" + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "ngx-build-plus": { - "version": "14.0.0", + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "requires": { - "@angular-devkit/build-angular": ">=14.0.0", - "@schematics/angular": ">=14.0.0", - "webpack-merge": "^5.0.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "ngx-cookie-service": { - "version": "14.0.1", - "requires": { - "tslib": "^2.0.0" + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" } }, - "ngx-markdown": { - "version": "14.0.1", - "requires": { - "@types/marked": "^4.0.3", - "clipboard": "^2.0.11", - "emoji-toolkit": "^6.6.0", - "katex": "^0.16.0", - "marked": "^4.0.17", - "mermaid": "^9.1.2", - "prismjs": "^1.28.0", - "tslib": "^2.3.0" + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" } }, - "nice-napi": { - "version": "1.0.2", + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "node-abort-controller": { - "version": "3.1.1", - "dev": true - }, - "node-addon-api": { - "version": "3.2.1", - "dev": true - }, - "node-fetch": { - "version": "2.6.9", - "requires": { - "whatwg-url": "^5.0.0" + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node-forge": { - "version": "1.3.1", - "dev": true + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, - "node-gyp": { - "version": "9.3.1", + "node_modules/rimraf": { + "version": "3.0.2", "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, + "license": "ISC", "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "node-gyp-build": { - "version": "4.6.0", - "dev": true - }, - "node-int64": { - "version": "0.4.0", - "dev": true - }, - "node-machine-id": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", - "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true - }, - "node-releases": { - "version": "2.0.9" - }, - "non-layered-tidy-tree-layout": { - "version": "2.0.2" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "nopt": { - "version": "6.0.0", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, - "requires": { - "abbrev": "^1.0.0" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "normalize-package-data": { - "version": "4.0.1", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "normalize-path": { - "version": "3.0.0" - }, - "normalize-range": { - "version": "0.1.2", - "dev": true + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "normalize-url": { - "version": "6.1.0", - "dev": true + "node_modules/robust-predicates": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", + "license": "Unlicense", + "optional": true }, - "npm-bundled": { - "version": "1.1.2", + "node_modules/rolldown": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.4.tgz", + "integrity": "sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==", "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.113.0", + "@rolldown/pluginutils": "1.0.0-rc.4" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.4", + "@rolldown/binding-darwin-x64": "1.0.0-rc.4", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.4", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.4", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.4", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.4", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.4", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.4", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.4" } }, - "npm-install-checks": { - "version": "5.0.0", + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dev": true, - "requires": { - "semver": "^7.1.1" + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" } }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "dev": true + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } }, - "npm-package-arg": { - "version": "9.1.0", + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" } }, - "npm-packlist": { - "version": "5.1.3", + "node_modules/router/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "npm-bundled": { - "version": "2.0.1", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^2.0.0" - } - }, - "npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "npm-pick-manifest": { - "version": "7.0.1", + "node_modules/router/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "npm-registry-fetch": { - "version": "13.3.1", + "node_modules/router/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } + "license": "MIT" }, - "npm-run-path": { - "version": "4.0.1", + "node_modules/router/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", "dev": true, - "requires": { - "path-key": "^3.0.0" + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "npmlog": { - "version": "6.0.2", + "node_modules/rslog": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rslog/-/rslog-1.3.2.tgz", + "integrity": "sha512-1YyYXBvN0a2b1MSIDLwDTqqgjDzRKxUg/S/+KO6EAgbtZW1B3fdLHAMhEEtvk1patJYMqcRvlp3HQwnxj7AdGQ==", "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } + "license": "MIT" }, - "nth-check": { - "version": "2.1.1", + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "dev": true, - "requires": { - "boolbase": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "nx": { - "version": "15.0.3", + "node_modules/run-parallel": { + "version": "1.2.0", "dev": true, - "requires": { - "@nrwl/cli": "15.0.3", - "@nrwl/tao": "15.0.3", - "@parcel/watcher": "2.0.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "^3.0.0-rc.18", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.0.0", - "chalk": "4.1.0", - "chokidar": "^3.5.1", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^7.0.2", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "fast-glob": "3.2.7", - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^10.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "minimatch": "3.0.5", - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "semver": "7.3.4", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^3.9.0", - "tslib": "^2.3.0", - "v8-compile-cache": "2.3.0", - "yargs": "^17.4.0", - "yargs-parser": "21.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "dev": true - }, - "axios": { - "version": "1.3.1", - "dev": true, - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "form-data": { - "version": "4.0.0", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "10.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.1.4", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsonc-parser": { - "version": "3.2.0", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.0.5", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "dev": true - }, - "semver": { - "version": "7.3.4", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "dev": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "yallist": { - "version": "4.0.0", - "dev": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "yargs-parser": { - "version": "21.0.1", - "dev": true + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "nx-cloud": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/nx-cloud/-/nx-cloud-16.2.0.tgz", - "integrity": "sha512-LESjpYO6Ksg4AjbXnzH9qZqyQzTauwFFUITeyz5NAVEFKaBTEICyupSk+3Xq3v4QQurFJOE3rShhYuSQP5moeQ==", - "dev": true, - "requires": { - "@nrwl/nx-cloud": "16.2.0", - "axios": "1.1.3", - "chalk": "^4.1.0", - "dotenv": "~10.0.0", - "fs-extra": "^11.1.0", - "node-machine-id": "^1.1.12", - "open": "~8.4.0", - "strip-json-comments": "^3.1.1", - "tar": "6.1.11", - "yargs-parser": ">=21.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/rxfire": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/rxfire/-/rxfire-6.1.0.tgz", + "integrity": "sha512-NezdjeY32VZcCuGO0bbb8H8seBsJSCaWdUwGsHNzUcAOHR0VGpzgPtzjuuLXr8R/iemkqSzbx/ioS7VwV43ynA==", + "license": "Apache-2.0", + "peerDependencies": { + "firebase": "^9.0.0 || ^10.0.0 || ^11.0.0", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + { + "type": "patreon", + "url": "https://www.patreon.com/feross" }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ], + "license": "MIT" }, - "object-inspect": { - "version": "1.12.3", - "dev": true + "node_modules/safer-buffer": { + "version": "2.1.2", + "devOptional": true, + "license": "MIT" }, - "object-is": { - "version": "1.1.5", + "node_modules/sass": { + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.0.2", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "object-keys": { - "version": "1.1.1", - "dev": true - }, - "object.assign": { - "version": "4.1.4", + "node_modules/sass-embedded": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.98.0.tgz", + "integrity": "sha512-Do7u6iRb6K+lrllcTkB1BXcHwOxcKe3rEfOF/GcCLE2w3WpddakRAosJOHFUR37DpsvimQXEt5abs3NzUjEIqg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "obuf": { - "version": "1.1.2", - "dev": true + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.1.5", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-all-unknown": "1.98.0", + "sass-embedded-android-arm": "1.98.0", + "sass-embedded-android-arm64": "1.98.0", + "sass-embedded-android-riscv64": "1.98.0", + "sass-embedded-android-x64": "1.98.0", + "sass-embedded-darwin-arm64": "1.98.0", + "sass-embedded-darwin-x64": "1.98.0", + "sass-embedded-linux-arm": "1.98.0", + "sass-embedded-linux-arm64": "1.98.0", + "sass-embedded-linux-musl-arm": "1.98.0", + "sass-embedded-linux-musl-arm64": "1.98.0", + "sass-embedded-linux-musl-riscv64": "1.98.0", + "sass-embedded-linux-musl-x64": "1.98.0", + "sass-embedded-linux-riscv64": "1.98.0", + "sass-embedded-linux-x64": "1.98.0", + "sass-embedded-unknown-all": "1.98.0", + "sass-embedded-win32-arm64": "1.98.0", + "sass-embedded-win32-x64": "1.98.0" + } + }, + "node_modules/sass-embedded-all-unknown": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-all-unknown/-/sass-embedded-all-unknown-1.98.0.tgz", + "integrity": "sha512-6n4RyK7/1mhdfYvpP3CClS3fGoYqDvRmLClCESS6I7+SAzqjxvGG6u5Fo+cb1nrPNbbilgbM4QKdgcgWHO9NCA==", + "cpu": [ + "!arm", + "!arm64", + "!riscv64", + "!x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "sass": "1.98.0" + } }, - "on-finished": { - "version": "2.4.1", + "node_modules/sass-embedded-all-unknown/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "requires": { - "ee-first": "1.1.1" + "license": "MIT", + "optional": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "on-headers": { - "version": "1.0.2", - "dev": true - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" + "node_modules/sass-embedded-all-unknown/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "one-time": { - "version": "1.0.0", - "requires": { - "fn.name": "1.x.x" + "node_modules/sass-embedded-all-unknown/node_modules/sass": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.98.0.tgz", + "integrity": "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, - "onetime": { - "version": "5.1.2", - "requires": { - "mimic-fn": "^2.1.0" + "node_modules/sass-embedded-android-arm": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.98.0.tgz", + "integrity": "sha512-LjGiMhHgu7VL1n7EJxTCre1x14bUsWd9d3dnkS2rku003IWOI/fxc7OXgaKagoVzok1kv09rzO3vFXJR5ZeONQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "open": { - "version": "8.4.0", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "node_modules/sass-embedded-android-arm64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.98.0.tgz", + "integrity": "sha512-M9Ra98A6vYJHpwhoC/5EuH1eOshQ9ZyNwC8XifUDSbRl/cGeQceT1NReR9wFj3L7s1pIbmes1vMmaY2np0uAKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "opener": { - "version": "1.5.2", - "dev": true - }, - "optionator": { - "version": "0.9.1", + "node_modules/sass-embedded-android-riscv64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.98.0.tgz", + "integrity": "sha512-WPe+0NbaJIZE1fq/RfCZANMeIgmy83x4f+SvFOG7LhUthHpZWcOcrPTsCKKmN3xMT3iw+4DXvqTYOCYGRL3hcQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "ora": { - "version": "5.4.1", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0" - }, - "supports-color": { - "version": "7.2.0", - "requires": { - "has-flag": "^4.0.0" - } - } + "node_modules/sass-embedded-android-x64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.98.0.tgz", + "integrity": "sha512-zrD25dT7OHPEgLWuPEByybnIfx4rnCtfge4clBgjZdZ3lF6E7qNLRBtSBmoFflh6Vg0RlEjJo5VlpnTMBM5MQQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" } }, - "os-tmpdir": { - "version": "1.0.2" - }, - "ospath": { - "version": "1.2.2", - "dev": true - }, - "p-limit": { - "version": "3.1.0", + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.98.0.tgz", + "integrity": "sha512-cgr1z9rBnCdMf8K+JabIaYd9Rag2OJi5mjq08XJfbJGMZV/TA6hFJCLGkr5/+ZOn4/geTM5/3aSfQ8z5EIJAOg==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "yocto-queue": "^0.1.0" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" } }, - "p-locate": { - "version": "4.1.0", + "node_modules/sass-embedded-darwin-x64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.98.0.tgz", + "integrity": "sha512-OLBOCs/NPeiMqTdOrMFbVHBQFj19GS3bSVSxIhcCq16ZyhouUkYJEZjxQgzv9SWA2q6Ki8GCqp4k6jMeUY9dcA==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" } }, - "p-map": { - "version": "4.0.0", + "node_modules/sass-embedded-linux-arm": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.98.0.tgz", + "integrity": "sha512-03baQZCxVyEp8v1NWBRlzGYrmVT/LK7ZrHlF1piscGiGxwfdxoLXVuxsylx3qn/dD/4i/rh7Bzk7reK1br9jvQ==", + "cpu": [ + "arm" + ], "dev": true, - "requires": { - "aggregate-error": "^3.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "p-retry": { - "version": "4.6.2", + "node_modules/sass-embedded-linux-arm64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.98.0.tgz", + "integrity": "sha512-axOE3t2MTBwCtkUCbrdM++Gj0gC0fdHJPrgzQ+q1WUmY9NoNMGqflBtk5mBZaWUeha2qYO3FawxCB8lctFwCtw==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "dependencies": { - "retry": { - "version": "0.13.1", - "dev": true - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "p-try": { - "version": "2.2.0", - "dev": true - }, - "pacote": { - "version": "13.6.2", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.98.0.tgz", + "integrity": "sha512-OBkjTDPYR4hSaueOGIM6FDpl9nt/VZwbSRpbNu9/eEJcxE8G/vynRugW8KRZmCFjPy8j/jkGBvvS+k9iOqKV3g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "pako": { - "version": "1.0.11", - "dev": true - }, - "parent-module": { - "version": "1.0.1", + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.98.0.tgz", + "integrity": "sha512-LeqNxQA8y4opjhe68CcFvMzCSrBuJqYVFbwElEj9bagHXQHTp9xVPJRn6VcrC+0VLEDq13HVXMv7RslIuU0zmA==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "callsites": "^3.0.0" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "parse-json": { - "version": "5.2.0", + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.98.0.tgz", + "integrity": "sha512-7w6hSuOHKt8FZsmjRb3iGSxEzM87fO9+M8nt5JIQYMhHTj5C+JY/vcske0v715HCVj5e1xyTnbGXf8FcASeAIw==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "parse-node-version": { - "version": "1.0.1", - "dev": true - }, - "parse5": { - "version": "5.1.1", - "optional": true + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.98.0.tgz", + "integrity": "sha512-QikNyDEJOVqPmxyCFkci8ZdCwEssdItfjQFJB+D+Uy5HFqcS5Lv3d3GxWNX/h1dSb23RPyQdQc267ok5SbEyJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.98.0.tgz", + "integrity": "sha512-E7fNytc/v4xFBQKzgzBddV/jretA4ULAPO6XmtBiQu4zZBdBozuSxsQLe2+XXeb0X4S2GIl72V7IPABdqke/vA==", + "cpu": [ + "riscv64" + ], "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "dev": true - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", + "node_modules/sass-embedded-linux-x64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.98.0.tgz", + "integrity": "sha512-VsvP0t/uw00mMNPv3vwyYKUrFbqzxQHnRMO+bHdAMjvLw4NFf6mscpym9Bzf+NXwi1ZNKnB6DtXjmcpcvqFqYg==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "dev": true - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" } }, - "parse5-sax-parser": { - "version": "6.0.1", + "node_modules/sass-embedded-unknown-all": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-unknown-all/-/sass-embedded-unknown-all-1.98.0.tgz", + "integrity": "sha512-C4MMzcAo3oEDQnW7L8SBgB9F2Fq5qHPnaYTZRMOH3Mp/7kM4OooBInXpCiiFjLnjY95hzP4KyctVx0uYR6MYlQ==", "dev": true, - "requires": { - "parse5": "^6.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "!android", + "!darwin", + "!linux", + "!win32" + ], "dependencies": { - "parse5": { - "version": "6.0.1", - "dev": true - } + "sass": "1.98.0" } }, - "parseurl": { - "version": "1.3.3", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "dev": true - }, - "pend": { - "version": "1.2.0", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "dev": true - }, - "picocolors": { - "version": "1.0.0" - }, - "picomatch": { - "version": "2.3.1" + "node_modules/sass-embedded-unknown-all/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "pify": { - "version": "2.3.0", - "dev": true + "node_modules/sass-embedded-unknown-all/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } }, - "pirates": { - "version": "4.0.5", - "dev": true + "node_modules/sass-embedded-unknown-all/node_modules/sass": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.98.0.tgz", + "integrity": "sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^4.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } }, - "piscina": { - "version": "3.2.0", + "node_modules/sass-embedded-win32-arm64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.98.0.tgz", + "integrity": "sha512-nP/10xbAiPbhQkMr3zQfXE4TuOxPzWRQe1Hgbi90jv2R4TbzbqQTuZVOaJf7KOAN4L2Bo6XCTRjK5XkVnwZuwQ==", + "cpu": [ + "arm64" + ], "dev": true, - "requires": { - "eventemitter-asyncresource": "^1.0.0", - "hdr-histogram-js": "^2.0.1", - "hdr-histogram-percentiles-obj": "^3.0.0", - "nice-napi": "^1.0.2" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" } }, - "pkg-dir": { - "version": "4.2.0", + "node_modules/sass-embedded-win32-x64": { + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.98.0.tgz", + "integrity": "sha512-/lbrVsfbcbdZQ5SJCWcV0NVPd6YRs+FtAnfedp4WbCkO/ZO7Zt/58MvI4X2BVpRY/Nt5ZBo1/7v2gYcQ+J4svQ==", + "cpu": [ + "x64" + ], "dev": true, - "requires": { - "find-up": "^4.0.0" + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" } }, - "please-upgrade-node": { - "version": "3.2.0", + "node_modules/sass-embedded/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "semver-compare": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "portfinder": { - "version": "1.0.32", + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/sass-loader": { + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", + "dev": true, + "license": "MIT", "dependencies": { - "async": { - "version": "2.6.4", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true }, - "debug": { - "version": "3.2.7", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "node-sass": { + "optional": true + }, + "sass": { + "optional": true }, - "mkdirp": { - "version": "0.5.6", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true } } }, - "postcss": { - "version": "8.4.21", + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "postcss-attribute-case-insensitive": { - "version": "5.0.2", + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "postcss-calc": { - "version": "8.2.4", + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" } }, - "postcss-clamp": { - "version": "4.1.0", + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "postcss-color-functional-notation": { - "version": "4.2.4", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "node_modules/sdp-transform": { + "version": "2.14.1", + "license": "MIT", + "bin": { + "sdp-verify": "checker.js" } }, - "postcss-color-hex-alpha": { - "version": "8.0.4", + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-color-rebeccapurple": { - "version": "7.1.1", + "node_modules/seedrandom": { + "version": "3.0.5", + "license": "MIT" + }, + "node_modules/select": { + "version": "1.1.2", + "license": "MIT", + "optional": true + }, + "node_modules/select-hose": { + "version": "2.0.0", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-colormin": { - "version": "5.3.0", + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, - "postcss-convert-values": { - "version": "5.1.3", + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "postcss-custom-media": { - "version": "8.0.2", + "node_modules/semver-compare": { + "version": "1.0.0", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT" + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.3.0" } }, - "postcss-custom-properties": { - "version": "12.1.11", + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.1", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "postcss-custom-selectors": { - "version": "6.0.3", + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "postcss-dir-pseudo-class": { - "version": "6.0.5", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "postcss-discard-comments": { - "version": "5.1.2", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-discard-duplicates": { - "version": "5.1.0", + "node_modules/send/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "postcss-discard-empty": { - "version": "5.1.1", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-discard-overridden": { - "version": "5.1.0", + "node_modules/serialize-javascript": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.4.tgz", + "integrity": "sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==", "dev": true, - "requires": {} + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "postcss-double-position-gradients": { - "version": "3.1.2", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "postcss-env-function": { - "version": "4.0.6", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "postcss-focus-visible": { - "version": "6.0.4", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } + "license": "ISC" }, - "postcss-focus-within": { - "version": "5.0.4", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } + "license": "MIT" }, - "postcss-font-variant": { - "version": "5.0.0", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", "dev": true, - "requires": {} + "license": "ISC" }, - "postcss-gap-properties": { - "version": "3.0.5", + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "postcss-image-set-function": { - "version": "4.0.7", + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "postcss-import": { - "version": "15.0.0", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "postcss-initial": { - "version": "4.0.1", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true, - "requires": {} + "license": "ISC" }, - "postcss-lab-function": { - "version": "4.2.1", + "node_modules/shallow-clone": { + "version": "3.0.1", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "postcss-loader": { - "version": "7.0.1", + "node_modules/shebang-command": { + "version": "2.0.0", "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.7" + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "postcss-logical": { - "version": "5.0.4", + "node_modules/shebang-regex": { + "version": "3.0.0", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "postcss-media-minmax": { - "version": "5.0.0", + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "postcss-merge-longhand": { - "version": "5.1.7", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "postcss-merge-rules": { - "version": "5.1.3", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "postcss-minify-font-values": { - "version": "5.1.0", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "postcss-minify-gradients": { - "version": "5.1.1", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "postcss-minify-params": { - "version": "5.1.4", + "node_modules/signal-exit": { + "version": "3.0.7", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } + "license": "ISC" }, - "postcss-minify-selectors": { - "version": "5.2.1", + "node_modules/sigstore": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz", + "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "@sigstore/sign": "^4.1.0", + "@sigstore/tuf": "^4.0.1", + "@sigstore/verify": "^3.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-modules-local-by-default": { - "version": "4.0.0", + "node_modules/slash": { + "version": "3.0.0", "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "postcss-modules-scope": { + "node_modules/slice-ansi": { "version": "3.0.0", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "postcss-modules-values": { - "version": "4.0.0", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "requires": { - "icss-utils": "^5.0.0" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "postcss-nesting": { - "version": "10.2.0", + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "postcss-normalize-charset": { - "version": "5.1.0", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "node_modules/socket.io-client": { + "version": "4.5.4", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" + }, + "engines": { + "node": ">=10.0.0" } }, - "postcss-normalize-positions": { - "version": "5.1.1", + "node_modules/socket.io-parser": { + "version": "4.2.2", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "postcss-normalize-repeat-style": { - "version": "5.1.1", + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "postcss-normalize-string": { - "version": "5.1.0", + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" } }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-normalize-unicode": { - "version": "5.1.1", - "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" } }, - "postcss-normalize-url": { - "version": "5.1.0", - "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "postcss-normalize-whitespace": { - "version": "5.1.1", + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" } }, - "postcss-opacity-percentage": { - "version": "1.1.3", + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "postcss-ordered-values": { - "version": "5.1.3", + "node_modules/source-map-support": { + "version": "0.5.21", "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "postcss-overflow-shorthand": { - "version": "3.0.4", + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "postcss-page-break": { - "version": "3.0.4", + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, - "requires": {} + "license": "CC-BY-3.0" }, - "postcss-place": { - "version": "7.0.5", + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-preset-env": { - "version": "7.8.0", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.5", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.8", - "browserslist": "^4.21.3", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.0.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.10", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "postcss-pseudo-class-any-link": { - "version": "7.1.6", + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } + "license": "CC0-1.0" }, - "postcss-reduce-initial": { - "version": "5.1.1", + "node_modules/spdy": { + "version": "4.0.2", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "postcss-reduce-transforms": { - "version": "5.1.0", + "node_modules/spdy-transport": { + "version": "3.0.0", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "postcss-replace-overflow-wrap": { - "version": "4.0.0", + "node_modules/sprintf-js": { + "version": "1.1.2", "dev": true, - "requires": {} + "license": "BSD-3-Clause" }, - "postcss-selector-not": { - "version": "6.0.1", + "node_modules/sshpk": { + "version": "1.17.0", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss-selector-parser": { - "version": "6.0.11", + "node_modules/ssri": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "postcss-svgo": { - "version": "5.1.0", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "postcss-unique-selectors": { - "version": "5.1.1", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "postcss-value-parser": { - "version": "4.2.0", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "dev": true - }, - "prettier": { - "version": "2.7.1", - "dev": true - }, - "pretty-bytes": { - "version": "5.6.0", - "dev": true + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true, + "license": "MIT" }, - "pretty-format": { - "version": "28.1.3", + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "dev": true - } + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "primeicons": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-6.0.1.tgz", - "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==", - "peer": true - }, - "primeng": { - "version": "14.2.2", - "requires": { - "tslib": "^2.3.0" + "node_modules/stdin-discarder": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.3.1.tgz", + "integrity": "sha512-reExS1kSGoElkextOcPkel4NE99S0BWxjUHQeDFnR8S993JxpPX7KU4MNmO19NXhlJp+8dmdCbKQVNgLJh2teA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "prismjs": { - "version": "1.29.0" - }, - "proc-log": { - "version": "2.0.1", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "dev": true + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } }, - "promise-retry": { - "version": "2.0.1", + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "license": "MIT", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" } }, - "prompts": { - "version": "2.4.2", + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, - "protobufjs": { - "version": "6.11.3", - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "proxy-addr": { - "version": "2.0.7", + "node_modules/string-argv": { + "version": "0.3.1", "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "dev": true - } + "license": "MIT", + "engines": { + "node": ">=0.6.19" } }, - "proxy-from-env": { - "version": "1.0.0", - "dev": true - }, - "prr": { - "version": "1.0.1", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "optional": true + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } }, - "psl": { - "version": "1.9.0", - "dev": true + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, - "pump": { - "version": "3.0.0", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "punycode": { - "version": "2.3.0" - }, - "qs": { - "version": "6.11.0", + "node_modules/stringify-object": { + "version": "3.3.0", "dev": true, - "requires": { - "side-channel": "^1.0.4" + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "queue-microtask": { - "version": "1.2.3", - "dev": true + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "random-avatar-generator": { - "version": "2.0.0", - "requires": { - "seedrandom": "^3.0.5" + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "randombytes": { - "version": "2.1.0", - "requires": { - "safe-buffer": "^5.1.0" + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "range-parser": { - "version": "1.2.1", - "dev": true + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "raw-body": { - "version": "2.5.1", + "node_modules/strip-json-comments": { + "version": "3.1.1", "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "license": "MIT", + "engines": { + "node": ">=8" }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "dev": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "raw-loader": { - "version": "4.0.2", + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">= 12.13.0" }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - }, - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0" + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT", + "optional": true + }, + "node_modules/supports-color": { + "version": "5.5.0", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "react-is": { - "version": "18.2.0", - "dev": true - }, - "read-cache": { + "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "dev": true, - "requires": { - "pify": "^2.3.0" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "read-package-json": { - "version": "5.0.2", + "node_modules/svgo": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", + "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "npm-normalize-package-bin": { - "version": "2.0.0", - "dev": true - } + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "read-package-json-fast": { - "version": "2.0.3", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">= 10" } }, - "readable-stream": { - "version": "3.6.0", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "node_modules/svgo/node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "readdirp": { - "version": "3.6.0", - "requires": { - "picomatch": "^2.2.1" + "node_modules/svgo/node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "recordrtc": { - "version": "5.6.2" - }, - "reflect-metadata": { - "version": "0.1.13" - }, - "regenerate": { - "version": "1.4.2", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "10.1.0", + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", "dev": true, - "requires": { - "regenerate": "^1.4.2" + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, - "regenerator-runtime": { - "version": "0.13.9", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.1", + "node_modules/sync-message-port": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.2.0.tgz", + "integrity": "sha512-gAQ9qrUN/UCypHtGFbbe7Rc/f9bzO88IwrG8TDo/aMKAApKyD6E3W4Cm0EfhfBb6Z6SKt59tTCTfD+n1xmAvMg==", "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" + "license": "MIT", + "engines": { + "node": ">=16.0.0" } }, - "regex-parser": { - "version": "2.2.11", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.4.3", + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, - "regexpp": { - "version": "3.2.0", - "dev": true + "node_modules/tailwindcss": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", + "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", + "license": "MIT" }, - "regexpu-core": { - "version": "5.2.2", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "regjsgen": { - "version": "0.7.1", - "dev": true - }, - "regjsparser": { - "version": "0.9.1", + "node_modules/tar": { + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, + "license": "BlueOak-1.0.0", "dependencies": { - "jsesc": { - "version": "0.5.0", - "dev": true - } + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "request-progress": { - "version": "3.0.0", + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "requires": { - "throttleit": "^1.0.0" + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" } }, - "require-directory": { - "version": "2.1.1" - }, - "require-from-string": { - "version": "2.0.2" - }, - "requires-port": { - "version": "1.0.0", - "dev": true - }, - "resolve": { - "version": "1.22.1", + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, - "resolve-cwd": { - "version": "3.0.0", + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, - "requires": { - "resolve-from": "^5.0.0" + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "resolve-from": { - "version": "5.0.0", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" - }, + "license": "MIT", "dependencies": { - "loader-utils": { - "version": "2.0.4", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true }, - "source-map": { - "version": "0.6.1", - "dev": true + "uglify-js": { + "optional": true } } }, - "resolve.exports": { - "version": "1.1.0", - "dev": true + "node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } }, - "restore-cursor": { - "version": "3.1.0", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "retry": { - "version": "0.12.0", - "dev": true + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "reusify": { - "version": "1.0.4", - "dev": true + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "rfdc": { - "version": "1.3.0", - "dev": true + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" }, - "rimraf": { - "version": "3.0.2", + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", "dev": true, - "requires": { - "glob": "^7.1.3" + "license": "MIT", + "engines": { + "node": ">=10.18" }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" } }, - "robust-predicates": { - "version": "3.0.1" + "node_modules/throttleit": { + "version": "1.0.0", + "dev": true, + "license": "MIT" }, - "run-async": { - "version": "2.4.1" + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" }, - "run-parallel": { - "version": "1.2.0", + "node_modules/thunky": { + "version": "1.1.0", "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } + "license": "MIT" }, - "rw": { - "version": "1.3.3" + "node_modules/tiny-emitter": { + "version": "2.1.0", + "license": "MIT", + "optional": true }, - "rxfire": { - "version": "6.0.3", - "requires": { - "tslib": "^1.9.0 || ~2.1.0" - }, - "dependencies": { - "tslib": { - "version": "2.1.0" - } + "node_modules/tinyexec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" } }, - "rxjs": { - "version": "7.5.7", - "requires": { - "tslib": "^2.1.0" + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, - "safe-buffer": { - "version": "5.2.1" - }, - "safe-stable-stringify": { - "version": "2.4.2" - }, - "safer-buffer": { - "version": "2.1.2" + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "sass": { - "version": "1.54.4", + "node_modules/tmp": { + "version": "0.2.1", "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" } }, - "sass-loader": { - "version": "13.0.2", + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } + "license": "BSD-3-Clause" }, - "sax": { - "version": "1.2.4", - "dev": true + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0" + "license": "MIT", + "engines": { + "node": ">=0.6" } }, - "schema-utils": { - "version": "2.7.1", + "node_modules/tough-cookie": { + "version": "2.5.0", "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, + "license": "BSD-3-Clause", "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "dev": true, - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true - } + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "sdp-transform": { - "version": "2.14.1" - }, - "secure-compare": { - "version": "3.0.1", - "dev": true - }, - "seedrandom": { - "version": "3.0.5" - }, - "select": { - "version": "1.1.2" - }, - "select-hose": { - "version": "2.0.0", - "dev": true - }, - "selfsigned": { - "version": "2.1.1", + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", "dev": true, - "requires": { - "node-forge": "^1" + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "semver": { - "version": "7.3.7", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0" - } + "node_modules/tree-kill": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" } }, - "semver-compare": { - "version": "1.0.0", - "dev": true + "node_modules/tributejs": { + "version": "5.1.3", + "license": "MIT" }, - "semver-dsl": { - "version": "1.0.1", + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, - "requires": { - "semver": "^5.3.0" + "license": "MIT", + "engines": { + "node": ">=18.12" }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-checker-rspack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.3.0.tgz", + "integrity": "sha512-89oK/BtApjdid1j9CGjPGiYry+EZBhsnTAM481/8ipgr/y2IOgCbW1HPnan+fs5FnzlpUgf9dWGNZ4Ayw3Bd8A==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": { - "version": "5.7.1", - "dev": true + "@rspack/lite-tapable": "^1.1.0", + "chokidar": "^3.6.0", + "memfs": "^4.56.10", + "picocolors": "^1.1.1" + }, + "peerDependencies": { + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "typescript": ">=3.8.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true } } }, - "send": { - "version": "0.18.0", + "node_modules/ts-checker-rspack-plugin/node_modules/memfs": { + "version": "4.56.11", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.11.tgz", + "integrity": "sha512-/GodtwVeKVIHZKLUSr2ZdOxKBC5hHki4JNCU22DoCGPEHr5o2PD5U721zvESKyWwCfTfavFl9WZYgA13OAYK0g==", "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, + "license": "Apache-2.0", "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "depd": { - "version": "2.0.0", - "dev": true - }, - "ms": { - "version": "2.1.3", - "dev": true - } + "@jsonjoy.com/fs-core": "4.56.11", + "@jsonjoy.com/fs-fsa": "4.56.11", + "@jsonjoy.com/fs-node": "4.56.11", + "@jsonjoy.com/fs-node-builtins": "4.56.11", + "@jsonjoy.com/fs-node-to-fsa": "4.56.11", + "@jsonjoy.com/fs-node-utils": "4.56.11", + "@jsonjoy.com/fs-print": "4.56.11", + "@jsonjoy.com/fs-snapshot": "4.56.11", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "serialize-javascript": { - "version": "6.0.1", - "requires": { - "randombytes": "^2.1.0" + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6.10" } }, - "serve-index": { - "version": "1.9.1", + "node_modules/ts-jest": { + "version": "29.0.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.5.tgz", + "integrity": "sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "dev": true + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true }, - "ms": { - "version": "2.0.0", - "dev": true + "@jest/types": { + "optional": true }, - "setprototypeof": { - "version": "1.1.0", - "dev": true + "babel-jest": { + "optional": true }, - "statuses": { - "version": "1.5.0", - "dev": true + "esbuild": { + "optional": true } } }, - "serve-static": { - "version": "1.15.0", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, - "requires": { - "kind-of": "^6.0.2" + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "shebang-command": { - "version": "2.0.0", + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "shebang-regex": "^3.0.0" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "shebang-regex": { - "version": "3.0.0", - "dev": true - }, - "side-channel": { - "version": "1.0.4", + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7" - }, - "simple-swizzle": { - "version": "0.2.2", - "requires": { - "is-arrayish": "^0.3.1" - }, + "license": "MIT", "dependencies": { - "is-arrayish": { - "version": "0.3.2" - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "sisteransi": { - "version": "1.0.5", - "dev": true - }, - "slash": { - "version": "3.0.0", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - } + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "smart-buffer": { - "version": "4.2.0", - "dev": true - }, - "socket.io-client": { - "version": "4.5.4", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.2.3", - "socket.io-parser": "~4.2.1" + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "socket.io-parser": { - "version": "4.2.2", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "sockjs": { - "version": "0.3.24", + "node_modules/ts-node": { + "version": "10.9.1", "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "socks": { - "version": "2.7.1", + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "socks-proxy-agent": { - "version": "7.0.0", + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "source-map": { - "version": "0.7.4" - }, - "source-map-js": { - "version": "1.0.2", - "dev": true - }, - "source-map-loader": { - "version": "4.0.0", + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" - }, + "license": "MIT", "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "source-map-resolve": { - "version": "0.6.0", + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1" - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "sourcemap-codec": { - "version": "1.4.8" - }, - "spdx-correct": { - "version": "3.1.1", + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "spdx-exceptions": { - "version": "2.3.0", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "spdx-license-ids": { - "version": "3.0.12", - "dev": true - }, - "spdy": { - "version": "4.0.2", + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "spdy-transport": { + "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "sprintf-js": { - "version": "1.1.2", - "dev": true - }, - "sshpk": { - "version": "1.17.0", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } + "node_modules/tslib": { + "version": "2.5.0", + "license": "0BSD" }, - "ssri": { - "version": "9.0.1", + "node_modules/tslint": { + "version": "6.1.3", "dev": true, - "requires": { - "minipass": "^3.1.1" + "license": "Apache-2.0", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" } }, - "stable": { - "version": "0.1.8", - "dev": true - }, - "stack-trace": { - "version": "0.0.10" - }, - "stack-utils": { - "version": "2.0.6", + "node_modules/tslint/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "dev": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "statuses": { - "version": "2.0.1", - "dev": true - }, - "stop-iteration-iterator": { - "version": "1.0.0", + "node_modules/tslint/node_modules/glob": { + "version": "7.2.3", "dev": true, - "requires": { - "internal-slot": "^1.0.4" - } - }, - "string_decoder": { - "version": "1.3.0", - "requires": { - "safe-buffer": "~5.2.0" + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "string-argv": { - "version": "0.3.1", - "dev": true - }, - "string-length": { - "version": "4.0.2", + "node_modules/tslint/node_modules/minimatch": { + "version": "3.1.2", "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "stringify-object": { - "version": "3.3.0", + "node_modules/tslint/node_modules/mkdirp": { + "version": "0.5.6", "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "dev": true + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } }, - "strong-log-transformer": { - "version": "2.1.0", + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", "dev": true, - "requires": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "style-loader": { - "version": "3.3.1", + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", "dev": true, - "requires": {} + "license": "0BSD" }, - "stylehacks": { - "version": "5.1.1", + "node_modules/tslint/node_modules/tsutils": { + "version": "2.29.0", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" } }, - "stylis": { - "version": "4.1.3" - }, - "stylus": { - "version": "0.59.0", + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true, - "requires": { - "@adobe/css-tools": "^4.0.1", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "license": "MIT", + "engines": { + "node": ">=0.6.x" } }, - "stylus-loader": { - "version": "7.0.0", + "node_modules/tsutils": { + "version": "3.21.0", "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "klona": "^2.0.5", - "normalize-path": "^3.0.0" - }, - "dependencies": { - "fast-glob": { - "version": "3.2.12", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - } + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "supports-color": { - "version": "5.5.0", - "requires": { - "has-flag": "^3.0.0" - } + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" }, - "supports-hyperlinks": { - "version": "2.3.0", + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, + "license": "MIT", "dependencies": { - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" }, - "svgo": { - "version": "2.8.0", + "node_modules/tuf-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", + "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==", "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" + "license": "MIT", + "dependencies": { + "@tufjs/models": "4.1.0", + "debug": "^4.4.3", + "make-fetch-happen": "^15.0.1" }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tuf-js/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", "dependencies": { - "commander": { - "version": "7.2.0", - "dev": true + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "symbol-observable": { - "version": "4.0.0", - "dev": true - }, - "tapable": { - "version": "2.2.1" + "node_modules/tuf-js/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, - "tar": { - "version": "6.1.11", + "node_modules/tunnel-agent": { + "version": "0.6.0", "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, + "license": "Apache-2.0", "dependencies": { - "yallist": { - "version": "4.0.0", - "dev": true - } + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "tar-stream": { - "version": "2.2.0", + "node_modules/tweetnacl": { + "version": "0.14.5", "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } + "license": "Unlicense" }, - "terminal-link": { - "version": "2.1.1", + "node_modules/type-check": { + "version": "0.4.0", "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "terser": { - "version": "5.14.2", - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "terser-webpack-plugin": { - "version": "5.3.6", - "requires": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1" - }, - "schema-utils": { - "version": "3.1.1", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "test-exclude": { - "version": "6.0.0", + "node_modules/type-is": { + "version": "1.6.18", "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, + "license": "MIT", "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, - "text-hex": { - "version": "1.0.0" - }, - "text-table": { - "version": "0.2.0", - "dev": true - }, - "throttleit": { - "version": "1.0.0", - "dev": true - }, - "through": { - "version": "2.3.8" - }, - "thunky": { - "version": "1.1.0", - "dev": true - }, - "tiny-emitter": { - "version": "2.1.0" + "node_modules/typed-assert": { + "version": "1.0.9", + "dev": true, + "license": "MIT" }, - "tmp": { - "version": "0.2.1", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "requires": { - "rimraf": "^3.0.0" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, - "tmpl": { - "version": "1.0.5", - "dev": true + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT", + "optional": true }, - "to-fast-properties": { - "version": "2.0.0" + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "to-regex-range": { - "version": "5.0.1", - "requires": { - "is-number": "^7.0.0" + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "toidentifier": { - "version": "1.0.1", - "dev": true + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "tough-cookie": { - "version": "2.5.0", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "tr46": { - "version": "0.0.3" + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } }, - "tree-kill": { - "version": "1.2.2", - "dev": true + "node_modules/unique-filename": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz", + "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, - "tributejs": { - "version": "5.1.3" + "node_modules/unique-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz", + "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, - "triple-beam": { - "version": "1.3.0" + "node_modules/universalify": { + "version": "0.1.2", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } }, - "ts-jest": { - "version": "28.0.8", + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^28.0.0", - "json5": "^2.2.1", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "ts-loader": { - "version": "9.4.2", + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "has-flag": { - "version": "4.0.0", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, - "ts-node": { - "version": "10.9.1", + "node_modules/untildify": { + "version": "4.0.0", "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "tsconfig-paths": { - "version": "3.14.1", + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "dev": true - } + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" } }, - "tsconfig-paths-webpack-plugin": { - "version": "3.5.2", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, - "has-flag": { - "version": "4.0.0", - "dev": true + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" }, - "supports-color": { - "version": "7.2.0", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "tslib": { - "version": "2.5.0" - }, - "tslint": { - "version": "6.1.3", + "node_modules/uri-js": { + "version": "4.4.1", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.3", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.13.0", - "tsutils": "^2.29.0" - }, + "license": "BSD-2-Clause", "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "mkdirp": { - "version": "0.5.6", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "semver": { - "version": "5.7.1", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - } + "punycode": "^2.1.0" } }, - "tsutils": { - "version": "3.21.0", + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "dev": true - } - } + "license": "MIT" }, - "tunnel-agent": { - "version": "0.6.0", + "node_modules/util-deprecate": { + "version": "1.0.2", "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } + "license": "MIT" }, - "tweetnacl": { - "version": "0.14.5", - "dev": true + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } }, - "type-check": { - "version": "0.4.0", + "node_modules/uuid": { + "version": "8.3.2", "dev": true, - "requires": { - "prelude-ls": "^1.2.1" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "type-detect": { - "version": "4.0.8", - "dev": true + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "dev": true, + "license": "MIT" }, - "type-fest": { - "version": "0.21.3" + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "dev": true, + "license": "MIT" }, - "type-is": { - "version": "1.6.18", + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, - "typed-assert": { - "version": "1.0.9", - "dev": true - }, - "typescript": { - "version": "4.8.4" - }, - "unicode-canonical-property-names-ecmascript": { + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", + "node_modules/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "dev": true - }, - "union": { - "version": "0.5.0", + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", "dev": true, - "requires": { - "qs": "^6.4.0" - } + "license": "MIT" }, - "unique-filename": { - "version": "1.1.1", + "node_modules/vary": { + "version": "1.1.2", "dev": true, - "requires": { - "unique-slug": "^2.0.0" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "unique-slug": { - "version": "2.0.2", + "node_modules/verror": { + "version": "1.10.0", "dev": true, - "requires": { - "imurmurhash": "^0.1.4" + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "universalify": { - "version": "0.1.2" - }, - "unpipe": { - "version": "1.0.0", - "dev": true - }, - "untildify": { - "version": "4.0.0", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "uri-js": { - "version": "4.4.1", - "requires": { - "punycode": "^2.1.0" + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "url-join": { - "version": "4.0.1", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2" - }, - "utils-merge": { - "version": "1.0.1", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "dev": true + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14.0.0" + } }, - "v8-to-istanbul": { + "node_modules/vscode-languageserver": { "version": "9.0.1", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "optional": true, + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "optional": true, + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" } }, - "validate-npm-package-name": { - "version": "4.0.0", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT", + "optional": true }, - "vary": { - "version": "1.1.2", - "dev": true + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT", + "optional": true }, - "verror": { - "version": "1.10.0", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT", + "optional": true }, - "walker": { + "node_modules/walker": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { + "license": "Apache-2.0", + "dependencies": { "makeerror": "1.0.12" } }, - "watchpack": { - "version": "2.4.0", - "requires": { + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" } }, - "wbuf": { + "node_modules/wbuf": { "version": "1.7.3", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "minimalistic-assert": "^1.0.0" } }, - "wcwidth": { + "node_modules/wcwidth": { "version": "1.0.1", - "requires": { + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { "defaults": "^1.0.3" } }, - "webidl-conversions": { - "version": "3.0.1" - }, - "webpack": { - "version": "5.75.0", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/web-vitals": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "license": "Apache-2.0" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.19.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "requires": {} - }, - "json-schema-traverse": { - "version": "0.4.1" - }, - "schema-utils": { - "version": "3.1.1", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true } } }, - "webpack-dev-middleware": { + "node_modules/webpack-dev-middleware": { "version": "5.3.3", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "webpack-dev-server": { - "version": "4.11.1", + "node_modules/webpack-dev-middleware/node_modules/colorette": { + "version": "2.0.19", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", "@types/express": "^4.17.13", "@types/serve-index": "^1.9.1", "@types/serve-static": "^1.13.10", "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", + "@types/ws": "^8.5.5", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.0.11", "chokidar": "^3.5.3", @@ -37989,6 +35513,7 @@ "html-entities": "^2.3.2", "http-proxy-middleware": "^2.0.3", "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", "open": "^8.0.9", "p-retry": "^4.5.0", "rimraf": "^3.0.2", @@ -37998,255 +35523,530 @@ "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" + "ws": "^8.13.0" }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "dev": true + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true }, - "schema-utils": { - "version": "4.0.0", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/colorette": { + "version": "2.0.19", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - "ws": { - "version": "8.12.0", - "dev": true, - "requires": {} + "utf-8-validate": { + "optional": true } } }, - "webpack-merge": { - "version": "5.8.0", + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "clone-deep": "^4.0.1", + "flat": "^5.0.2", "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "webpack-node-externals": { + "node_modules/webpack-node-externals": { "version": "3.0.0", - "dev": true + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "webpack-sources": { - "version": "3.2.3" + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } }, - "webpack-subresource-integrity": { + "node_modules/webpack-subresource-integrity": { "version": "5.1.0", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } } }, - "webpack-virtual-modules": { - "version": "0.4.6", - "dev": true - }, - "websocket-driver": { + "node_modules/websocket-driver": { "version": "0.7.4", - "requires": { + "license": "Apache-2.0", + "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "websocket-extensions": { - "version": "0.1.4" + "node_modules/websocket-extensions": { + "version": "0.1.4", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } }, - "whatwg-encoding": { + "node_modules/whatwg-encoding": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "iconv-lite": "0.6.3" }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "whatwg-url": { + "node_modules/whatwg-url": { "version": "5.0.0", - "requires": { + "license": "MIT", + "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "which-boxed-primitive": { + "node_modules/which-boxed-primitive": { "version": "1.0.2", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", "is-number-object": "^1.0.4", "is-string": "^1.0.5", "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "which-collection": { + "node_modules/which-collection": { "version": "1.0.1", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", "is-weakmap": "^2.0.1", "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "which-typed-array": { + "node_modules/which-typed-array": { "version": "1.1.9", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0", "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "wide-align": { - "version": "1.1.5", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wildcard": { - "version": "2.0.0", - "dev": true + "license": "MIT" }, - "winston": { - "version": "3.8.2", - "requires": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "node_modules/word-wrap": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "winston-transport": { - "version": "4.5.0", - "requires": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" + "node_modules/wrap-ansi": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, - "wrap-ansi": { + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", - "requires": { + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "requires": { - "color-name": "~1.1.4" - } - } + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "wrappy": { - "version": "1.0.2" + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "ws": { + "node_modules/ws": { "version": "8.2.3", - "requires": {} + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "xmlhttprequest-ssl": { - "version": "2.0.0" + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "engines": { + "node": ">=0.4.0" + } }, - "y18n": { - "version": "5.0.8" + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "yallist": { - "version": "3.1.1" + "node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" }, - "yaml": { + "node_modules/yaml": { "version": "1.10.2", - "dev": true + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } }, - "yargs": { - "version": "17.5.1", - "requires": { - "cliui": "^7.0.2", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" } }, - "yargs-parser": { - "version": "21.1.1" + "node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "yauzl": { + "node_modules/yauzl": { "version": "2.10.0", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, - "yn": { + "node_modules/yn": { "version": "3.1.1", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "yocto-queue": { + "node_modules/yocto-queue": { "version": "0.1.0", - "dev": true + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "zone.js": { - "version": "0.11.5", - "requires": { - "tslib": "^2.3.0" + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" } + }, + "node_modules/zone.js": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "license": "MIT" } } } diff --git a/package.json b/package.json index 5643f5db..103caeed 100755 --- a/package.json +++ b/package.json @@ -1,24 +1,29 @@ { - "name": "proxy", + "name": "36-blocks", "version": "0.0.3", "license": "MIT", "scripts": { "nx": "nx", - "start": "node --max_old_space_size=4096 ./node_modules/@nrwl/cli/bin/nx serve --configuration=serve --project=proxy", - "start:proxy-auth": "nx serve proxy-auth", - "build": "npm run build:web", - "build:test": "npm run build:web:test && npm run build:proxy-auth:test", - "build:prod": "npm run build:web:prod && npm run build:proxy-auth:prod", - "build:web": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build --project=proxy --configuration=local ", - "build:web:test": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy --configuration=test && node tools/postbuild --path=dist/apps/proxy", - "build:web:prod": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy --configuration=production && node tools/postbuild --path=dist/apps/proxy", - "build:web:stage": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy --configuration=stage && node tools/postbuild --path=dist/apps/proxy", - "build:proxy-auth": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy-auth-element && npm run postbuild:proxy-auth:elements", - "build:proxy-auth:test": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy-auth-element --configuration=test && npm run postbuild:proxy-auth:elements", - "build:proxy-auth:stage": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy-auth-element --configuration=stage && npm run postbuild:proxy-auth:elements", - "build:proxy-auth:prod": "node --max_old_space_size=2560 ./node_modules/@nrwl/cli/bin/nx build proxy-auth-element --configuration=production && npm run postbuild:proxy-auth:elements", - "postbuild:proxy-auth:elements": "node ./apps/proxy-auth/build-elements.js", + "start": "node tools/set-env --proxy && node --max_old_space_size=4096 ./node_modules/nx/bin/nx.js serve --configuration=serve --project=36-blocks", + "start:proxy-auth": "node tools/set-env --auth && nx serve 36-blocks-widget", + "build": "npm run build:proxy-auth && npm run build:web", + "build:test": "npm run build:proxy-auth:test && npm run build:web:test", + "build:prod": "npm run build:proxy-auth:prod && npm run build:web:prod", + "set-env": "node tools/set-env", + "set-env:proxy": "node tools/set-env --proxy", + "set-env:auth": "node tools/set-env --auth", + "build:web": "node tools/set-env --proxy && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build --project=36-blocks --configuration=local ", + "build:web:test": "node tools/set-env --proxy && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks --configuration=test && node tools/postbuild --path=dist/apps/36-blocks", + "build:web:prod": "node tools/set-env --proxy && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks --configuration=production && node tools/postbuild --path=dist/apps/36-blocks", + "build:stage": "npm run build:proxy-auth:stage && npm run build:web:stage", + "build:web:stage": "node tools/set-env --proxy && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks --configuration=stage && node tools/postbuild --path=dist/apps/36-blocks", + "build:proxy-auth": "node tools/set-env --auth && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks-widget && npm run postbuild:proxy-auth:elements", + "build:proxy-auth:test": "node tools/set-env --auth && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks-widget --configuration=test && npm run postbuild:proxy-auth:elements", + "build:proxy-auth:stage": "node tools/set-env --auth && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks-widget --configuration=stage && npm run postbuild:proxy-auth:elements", + "build:proxy-auth:prod": "node tools/set-env --auth && node --max_old_space_size=2560 ./node_modules/nx/bin/nx.js build 36-blocks-widget --configuration=production && npm run postbuild:proxy-auth:elements", + "postbuild:proxy-auth:elements": "node ./apps/36-blocks-widget/build-elements.js", "test": "nx test", + "test:contract": "nx test 36-blocks-widget --testPathPattern=contract", "lint": "nx workspace-lint && nx lint", "e2e": "nx e2e", "affected:apps": "nx affected:apps", @@ -35,7 +40,6 @@ "update": "nx migrate latest", "dep-graph": "nx dep-graph", "help": "nx help", - "postinstall": "ngcc --properties es5 browser module main --first-only --create-ivy-entry-points", "workspace-generator": "nx workspace-generator", "update-public-suffix": "node ./libs/ui/handle-domain/src/lib/updater.js", "format:code": "npx prettier --write --ignore-unknown .", @@ -46,28 +50,30 @@ "@abacritt/angularx-social-login": "1.2.5", "@angular-material-components/datetime-picker": "8.0.0", "@angular-material-components/moment-adapter": "8.0.0", - "@angular/animations": "14.2.2", - "@angular/cdk": "14.2.2", - "@angular/common": "14.2.2", - "@angular/compiler": "14.2.2", - "@angular/core": "14.2.2", - "@angular/elements": "14.2.2", - "@angular/fire": "7.5.0", - "@angular/forms": "14.2.2", - "@angular/localize": "14.2.2", - "@angular/material": "14.2.2", - "@angular/material-moment-adapter": "14.2.2", - "@angular/platform-browser": "14.2.2", - "@angular/platform-browser-dynamic": "14.2.2", - "@angular/router": "14.2.2", + "@angular/animations": "21.2.4", + "@angular/cdk": "21.2.2", + "@angular/common": "21.2.4", + "@angular/compiler": "21.2.4", + "@angular/core": "21.2.4", + "@angular/elements": "21.2.4", + "@angular/fire": "21.0.0-rc.0", + "@angular/forms": "21.2.4", + "@angular/localize": "21.2.4", + "@angular/material": "21.2.2", + "@angular/material-moment-adapter": "21.2.2", + "@angular/platform-browser": "21.2.4", + "@angular/platform-browser-dynamic": "21.2.4", + "@angular/router": "21.2.4", "@highcharts/map-collection": "2.0.1", "@materia-ui/ngx-monaco-editor": "6.0.0", - "@ngrx/component": "14.2.0", - "@ngrx/component-store": "14.2.0", - "@ngrx/effects": "14.0.2", - "@ngrx/entity": "14.0.2", - "@ngrx/router-store": "14.0.2", - "@ngrx/store": "14.0.2", + "@ngrx/component": "21.0.1", + "@ngrx/component-store": "21.0.1", + "@ngrx/effects": "21.0.1", + "@ngrx/entity": "21.0.1", + "@ngrx/operators": "21.0.1", + "@ngrx/router-store": "21.0.1", + "@ngrx/store": "21.0.1", + "@tailwindcss/postcss": "^4.2.1", "@webcomponents/custom-elements": "1.6.0", "angular-froala-wysiwyg": "4.0.15", "angular-text-input-highlight": "1.4.3", @@ -87,7 +93,7 @@ "d3-time-format": "3.0.0", "d3-transition": "3.0.1", "dayjs": "1.11.7", - "firebase": "9.16.0", + "firebase": "^12.10.0", "froala-editor": "4.0.15", "fs-extra": "5.0.0", "google-libphonenumber": "3.2.32", @@ -96,43 +102,44 @@ "intl-tel-input": "17.0.19", "jssip": "3.10.0", "lodash-es": "4.17.21", + "marked": "^17.0.5", "ng-click-outside": "9.0.1", "ng-hcaptcha": "^2.6.0", "ng-otp-input": "1.8.5", "ngrx-store-localstorage": "14.0.0", "ngx-bootstrap": "9.0.0", "ngx-cookie-service": "14.0.1", - "ngx-markdown": "14.0.1", + "ngx-markdown": "21.1.0", "primeng": "14.2.2", "random-avatar-generator": "2.0.0", "recordrtc": "5.6.2", - "rxjs": "~7.5.7", + "rxjs": "7.8.2", "socket.io-client": "4.5.4", + "tailwindcss": "^4.2.1", "tributejs": "5.1.3", "tslib": "2.5.0", - "zone.js": "0.11.5" + "zone.js": "0.15.1" }, "devDependencies": { - "@angular-builders/custom-webpack": "14.0.1", - "@angular-devkit/build-angular": "14.2.3", - "@angular-devkit/build-webpack": "0.1402.4", - "@angular-eslint/eslint-plugin": "14.0.4", - "@angular-eslint/eslint-plugin-template": "14.0.4", - "@angular-eslint/template-parser": "14.0.4", - "@angular/cli": "~14.2.0", - "@angular/compiler-cli": "14.2.2", - "@angular/language-service": "14.2.2", - "@ngrx/store-devtools": "14.0.2", - "@nrwl/angular": "15.0.3", - "@nrwl/cli": "15.0.3", - "@nrwl/cypress": "15.0.3", - "@nrwl/eslint-plugin-nx": "15.0.3", - "@nrwl/jest": "15.0.3", - "@nrwl/linter": "15.0.3", - "@nrwl/nx-cloud": "^16.2.0", - "@nrwl/workspace": "15.0.3", + "@angular-devkit/build-angular": "21.2.2", + "@angular-devkit/build-webpack": "0.2102.2", + "@angular-devkit/core": "21.2.2", + "@angular-devkit/schematics": "21.2.2", + "@angular-eslint/eslint-plugin": "21.3.1", + "@angular-eslint/eslint-plugin-template": "21.3.1", + "@angular-eslint/template-parser": "21.3.1", + "@angular/cli": "~21.2.0", + "@angular/compiler-cli": "21.2.4", + "@angular/language-service": "21.2.4", + "@ngrx/store-devtools": "21.0.1", + "@nx/angular": "21.6.10", + "@nx/cypress": "21.6.10", + "@nx/eslint": "21.6.10", + "@nx/jest": "21.6.10", + "@nx/workspace": "21.6.10", + "@schematics/angular": "21.2.2", "@types/chart.js": "^2.9.28", - "@types/jest": "28.1.8", + "@types/jest": "29.4.4", "@types/lodash": "^4.14.161", "@types/lodash-es": "^4.17.3", "@types/node": "14.14.33", @@ -147,18 +154,19 @@ "eslint-plugin-cypress": "^2.10.3", "gzipper": "^4.3.0", "husky": "^7.0.2", - "jest": "28.1.3", + "jest": "29.4.3", "jest-worker": "^27.3.1", "linkifyjs": "3.0.0-beta.3", "lint-staged": "^11.2.3", - "ngx-build-plus": "^14.0.0", - "nx": "15.0.3", - "postcss": "^8.2.8", + "ngx-build-plus": "^19.0.0", + "nx": "21.6.10", + "postcss": "^8.5.8", "prettier": "2.7.1", - "ts-jest": "28.0.8", + "ts-jest": "29.0.5", "ts-node": "10.9.1", "tslint": "6.1.3", - "typescript": "4.8.4" + "typescript": "5.9.3", + "webpack-dev-server": "^4.11.1" }, "browser": { "crypto": false diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..308e442f --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,5 @@ +// Tailwind CSS v4 — configuration is CSS-first. +// This file is NOT used by Tailwind v4. All config lives in the CSS entry points: +// - apps/shared/scss/global.scss (used by 36-blocks) +// - apps/36-blocks-widget/src/app/otp/widget/widget.component.scss (used by widget) +// See: https://tailwindcss.com/docs/configuration diff --git a/tools/postbuild.js b/tools/postbuild.js index 2602b7cd..1bc04389 100644 --- a/tools/postbuild.js +++ b/tools/postbuild.js @@ -17,9 +17,15 @@ let rootDirectiory = ''; for (var i = 0; i < process.argv.length; i++) { console.log(process.argv[i]); if (process.argv[i].startsWith('--path=')) { - - rootDirectiory = '../' + process.argv[i].replace('--path=', '').replace(' ', ''); - console.log("Dist Folder Path = " + rootDirectiory); + let rawPath = process.argv[i].replace('--path=', '').replace(' ', ''); + // application builder outputs into a browser/ subdirectory + const browserSubdir = rawPath + '/browser'; + const browserAbsPath = path.join(__dirname, '../' + browserSubdir); + if (fs.existsSync(browserAbsPath)) { + rawPath = browserSubdir; + } + rootDirectiory = '../' + rawPath; + console.log('Dist Folder Path = ' + rootDirectiory); } } @@ -33,8 +39,8 @@ let mainBundleRegexp = /^main.?([a-z0-9]*)?.js$/; // read the dist folder files and find the one we're looking for readDir(path.join(__dirname, rootDirectiory)) - .then(files => { - mainBundleFile = files.find(f => mainBundleRegexp.test(f)); + .then((files) => { + mainBundleFile = files.find((f) => mainBundleRegexp.test(f)); if (mainBundleFile) { let matchHash = mainBundleFile.match(mainBundleRegexp); @@ -49,7 +55,8 @@ readDir(path.join(__dirname, rootDirectiory)) // write current version and hash into the version.json file const src = `{"version": "${appVersion}", "hash": "${mainHash}"}`; return writeFile(versionFilePath, src); - }).then(() => { + }) + .then(() => { // main bundle file not found, dev build? if (!mainBundleFile) { return; @@ -59,11 +66,11 @@ readDir(path.join(__dirname, rootDirectiory)) // replace hash placeholder in our main.js file so the code knows it's current hash const mainFilepath = path.join(__dirname, rootDirectiory, mainBundleFile); - return readFile(mainFilepath, 'utf8') - .then(mainFileData => { - const replacedFile = mainFileData.replace('{{POST_BUILD_ENTERS_HASH_HERE}}', mainHash); - return writeFile(mainFilepath, replacedFile); - }); - }).catch(err => { + return readFile(mainFilepath, 'utf8').then((mainFileData) => { + const replacedFile = mainFileData.replace('{{POST_BUILD_ENTERS_HASH_HERE}}', mainHash); + return writeFile(mainFilepath, replacedFile); + }); + }) + .catch((err) => { console.log('Error with post build:', err); }); diff --git a/tools/set-env.js b/tools/set-env.js new file mode 100644 index 00000000..7853eb6a --- /dev/null +++ b/tools/set-env.js @@ -0,0 +1,73 @@ +'use strict'; + +/** + * Prebuild script: generates env-variables.ts for both apps from environment variables. + * Replaces the webpack DefinePlugin({ 'process.env': ... }) pattern. + * + * Usage: + * node tools/set-env # reads .env file + process.env + * node tools/set-env --proxy # only proxy app + * node tools/set-env --auth # only proxy-auth app + */ + +const fs = require('fs'); +const path = require('path'); + +// Load .env file if present (same logic as webpack.config.js used dotenv) +try { + require('dotenv').config(); +} catch (e) { + // dotenv not available, rely solely on process.env +} + +const env = process.env; +const root = path.resolve(__dirname, '..'); + +function get(key, fallback = undefined) { + return env[key] !== undefined ? env[key] : fallback; +} + +// ── proxy app ────────────────────────────────────────────────────────────── +function writeProxyEnv() { + const content = `export const envVariables = { + firebaseConfig: { + apiKey: ${JSON.stringify(get('FIREBASE_CONFIG_API_KEY'))}, + authDomain: ${JSON.stringify(get('FIREBASE_CONFIG_AUTH_DOMAIN'))}, + projectId: ${JSON.stringify(get('FIREBASE_CONFIG_PROJECT_ID'))}, + storageBucket: ${JSON.stringify(get('FIREBASE_CONFIG_STORAGE_BUCKET'))}, + messagingSenderId: ${JSON.stringify(get('FIREBASE_CONFIG_MESSAGING_SENDER_ID'))}, + appId: ${JSON.stringify(get('FIREBASE_CONFIG_APP_ID'))}, + }, + + // VIASOCKET INTERFACE + interfaceScriptUrl: ${JSON.stringify(get('INTERFACE_SCRIPT_URL'))}, +}; +`; + const outPath = path.join(root, 'apps/36-blocks/src/environments/env-variables.ts'); + fs.writeFileSync(outPath, content, 'utf8'); + console.log(`[set-env] Written: ${outPath}`); +} + +// ── proxy-auth app ───────────────────────────────────────────────────────── +function writeProxyAuthEnv() { + const content = `export const envVariables = { + uiEncodeKey: ${JSON.stringify(get('AUTH_UI_ENCODE_KEY'))}, + uiIvKey: ${JSON.stringify(get('AUTH_UI_IV_KEY'))}, + apiEncodeKey: ${JSON.stringify(get('AUTH_API_ENCODE_KEY'))}, + apiIvKey: ${JSON.stringify(get('AUTH_API_IV_KEY'))}, + hCaptchaSiteKey: ${JSON.stringify(get('HCAPTCHA_SITE_KEY'))}, + sendOtpAuthKey: ${JSON.stringify(get('SEND_OTP_AUTH_KEY'))}, +}; +`; + const outPath = path.join(root, 'apps/36-blocks-widget/src/environments/env-variables.ts'); + fs.writeFileSync(outPath, content, 'utf8'); + console.log(`[set-env] Written: ${outPath}`); +} + +// ── run ──────────────────────────────────────────────────────────────────── +const args = process.argv.slice(2); +const onlyProxy = args.includes('--proxy'); +const onlyAuth = args.includes('--auth'); + +if (!onlyAuth) writeProxyEnv(); +if (!onlyProxy) writeProxyAuthEnv(); diff --git a/tsconfig.base.json b/tsconfig.base.json index 220f5fa2..9419cbf4 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,11 +4,13 @@ "rootDir": ".", "sourceMap": true, "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, + "moduleResolution": "bundler", "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "importHelpers": true, - "target": "es2015", + "target": "ES2022", + "useDefineForClassFields": false, "module": "esnext", "typeRoots": ["node_modules/@types"], "lib": ["esnext", "dom"], @@ -17,65 +19,28 @@ "resolveJsonModule": true, "baseUrl": ".", "paths": { - "@admin/src/*": ["apps/msg-admin/src/*"], - "@proxy/chart-ui": ["libs/chart-ui/src/index.ts"], "@proxy/constant": ["libs/constant/src/index.ts"], "@proxy/constant/file-size": ["libs/constant/src/file-size/index.ts"], "@proxy/custom-validator": ["libs/custom-validator/src/index.ts"], "@proxy/date-range-picker": ["libs/ui/date-range-picker/src/index.ts"], - "@proxy/directives/AutoFocusDirective": ["libs/directives/auto-focus-directive/src/index.ts"], - "@proxy/directives/CustomTooltipDirective": ["libs/directives/custom-tooltip-directive/src/index.ts"], "@proxy/directives/RemoveCharacterDirective": ["libs/directives/remove-character-directive/src/index.ts"], "@proxy/directives/auto-select-dropdown": ["libs/directives/auto-select-dropdown/src/index.ts"], - "@proxy/directives/highlight-directive": ["libs/directives/highlight-directive/src/index.ts"], "@proxy/directives/mark-all-as-touched": ["libs/directives/mark-all-as-touched/src/index.ts"], - "@proxy/directives/open-datepicker-on-focus-directive": [ - "libs/directives/open-datepicker-on-focus-directive/src/index.ts" - ], "@proxy/directives/skeleton": ["libs/directives/skeleton/src/index.ts"], - "@proxy/directives/timeago-directive": ["libs/directives/timeago-directive/src/index.ts"], "@proxy/models/features-model": ["libs/models/features-model/src/index.ts"], "@proxy/models/logs-models": ["libs/models/logs-models/src/index.ts"], "@proxy/models/project-model": ["libs/models/project-model/src/index.ts"], "@proxy/models/root-models": ["libs/models/root-models/src/index.ts"], "@proxy/models/users-model": ["libs/models/users-model/src/index.ts"], "@proxy/pipes/ChartDateAdd": ["libs/pipes/chart-date-add/src/index.ts"], - "@proxy/pipes/CurrencyFormatter": ["libs/pipes/currency-formatter/src/index.ts"], - "@proxy/pipes/CustomDatePipe": ["libs/pipes/custom-date-pipe/src/index.ts"], "@proxy/pipes/DecimalFormatter": ["libs/pipes/decimal-formatter/src/index.ts"], - "@proxy/pipes/DurationPipe": ["libs/pipes/duration-pipe/src/index.ts"], "@proxy/pipes/FieldValuePipe": ["libs/pipes/field-value-pipe/src/index.ts"], - "@proxy/pipes/FilenamePipe": ["libs/pipes/filename-pipe/src/index.ts"], - "@proxy/pipes/FilterControlPipe": ["libs/pipes/filter-control-pipe/src/index.ts"], - "@proxy/pipes/GetHashCodePipe": ["libs/pipes/get-hash-code-pipe/src/index.ts"], - "@proxy/pipes/GetShortNamePipe": ["libs/pipes/get-short-name-pipe/src/index.ts"], - "@proxy/pipes/GreetingPipe": ["libs/pipes/greeting-pipe/src/index.ts"], - "@proxy/pipes/LinkifyPipe": ["libs/pipes/linkify-pipe/src/index.ts"], - "@proxy/pipes/MobileNumberPipe": ["libs/pipes/mobile-number-pipe/src/index.ts"], - "@proxy/pipes/NumberFormatPipe": ["libs/pipes/number-format-pipe/src/index.ts"], "@proxy/pipes/SafeURLPipe": ["libs/pipes/safe-urlpipe/src/index.ts"], - "@proxy/pipes/SanitizeHtmlPipe": ["libs/pipes/sanitize-html-pipe/src/index.ts"], - "@proxy/pipes/SecondsToHMSPipe": ["libs/pipes/seconds-to-hms/src/index.ts"], - "@proxy/pipes/TimeConversionPipe": ["libs/pipes/time-conversion-pipe/src/index.ts"], "@proxy/pipes/TimeTokenPipe": ["libs/pipes/time-token-pipe/src/index.ts"], - "@proxy/pipes/TooltipListPipe": ["libs/pipes/tooltip-list-pipe/src/index.ts"], - "@proxy/pipes/UserSettingPipe": ["libs/pipes/user-setting-pipe/src/index.ts"], - "@proxy/pipes/UtcToLocalDatePipe": ["libs/pipes/utc-to-local-date-pipe/src/index.ts"], - "@proxy/pipes/country-currency-symbol": ["libs/pipes/country-currency-symbol/src/index.ts"], - "@proxy/pipes/floor": ["libs/pipes/floor/src/index.ts"], - "@proxy/pipes/flow": ["libs/pipes/flow/src/index.ts"], - "@proxy/pipes/join": ["libs/pipes/join/src/index.ts"], - "@proxy/pipes/relative-time-pipe": ["libs/pipes/relative-time-pipe/src/index.ts"], - "@proxy/pipes/repeaterCondition": ["libs/pipes/repeater-condition/src/index.ts"], "@proxy/pipes/replace": ["libs/pipes/replace/src/index.ts"], - "@proxy/pipes/show-days-format": ["libs/pipes/show-days-format/src/index.ts"], - "@proxy/pipes/split": ["libs/pipes/split/src/index.ts"], - "@proxy/pipes/string-masking": ["libs/pipes/string-masking/src/index.ts"], - "@proxy/pipes/timer": ["libs/pipes/timer/src/index.ts"], "@proxy/pipes/typeof": ["libs/pipes/typeof/src/index.ts"], "@proxy/regex": ["libs/regex/src/index.ts"], "@proxy/service": ["libs/service/src/index.ts"], - "@proxy/service/admin/super-admin": ["libs/services/admin/super-admin/src/index.ts"], "@proxy/services/http-wrapper-no-auth": ["libs/services/http-wrapper-no-auth/src/index.ts"], "@proxy/services/httpWrapper": ["libs/services/http-wrapper/src/index.ts"], "@proxy/services/interceptor/errorInterceptor": [ @@ -88,51 +53,18 @@ "@proxy/services/proxy/logs": ["libs/services/proxy/logs/src/index.ts"], "@proxy/services/proxy/root": ["libs/services/proxy/root/src/index.ts"], "@proxy/services/proxy/users": ["libs/services/proxy/users/src/index.ts"], - "@proxy/services/shared": ["libs/services/shared/src/index.ts"], - "@proxy/shared": ["libs/shared/src/index.ts"], - "@proxy/shared/cmd-enter-preference": ["libs/shared/src/lib/cmd-enter-preference/index.ts"], - "@proxy/shared/phone-number-material": ["libs/shared/src/lib/phone-number-material"], - "@proxy/shared/utils/checkFileExtension": ["libs/shared/src/lib/utils/validate-upload-file.ts"], - "@proxy/shared/utils/email-variable-check": ["libs/shared/src/lib/utils/email-variable-check"], - "@proxy/shared/utils/rename-key": ["libs/shared/src/lib/utils/rename-key"], - "@proxy/ui/ColorFunctions": ["libs/ui/color-functions/src/index.ts"], "@proxy/ui/angular-mentions": ["libs/ui/angular-mentions/src/index.ts"], "@proxy/ui/base-component": ["libs/ui/base-component/src/index.ts"], - "@proxy/ui/browser-recording": ["libs/ui/browser-recording/src/index.ts"], - "@proxy/ui/calendly-dialog": ["libs/ui/calendly-dialog/src/index.ts"], - "@proxy/ui/cmd-enter-preference": ["libs/ui/cmd-enter-preference/src/index.ts"], - "@proxy/ui/color-picker": ["libs/ui/color-picker/src/index.ts"], - "@proxy/ui/component/code-snippet-dialog": ["libs/ui/code-snippet-dialog/src/index.ts"], - "@proxy/ui/compose-wrapper": ["libs/ui/compose-wrapper/src/index.ts"], "@proxy/ui/confirm-dialog": ["libs/ui/confirm-dialog/src/index.ts"], "@proxy/ui/copy-button": ["libs/ui/copy-button/src/index.ts"], - "@proxy/ui/days-autocomplete-chip-list": ["libs/ui/days-autocomplete-chip-list/src/index.ts"], - "@proxy/ui/drag-resizable": ["libs/ui/drag-resizable/src/index.ts"], - "@proxy/ui/editor": ["libs/ui/editor/src/index.ts"], - "@proxy/ui/file-upload": ["libs/ui/file-upload/src/index.ts"], "@proxy/ui/handle-domain": ["libs/ui/handle-domain/src/index.ts"], - "@proxy/ui/ivr-dialer": ["libs/ui/ivr-dialer/src/index.ts"], "@proxy/ui/loader": ["libs/ui/loader/src/index.ts"], - "@proxy/ui/mat-autocomplete-wrapper": ["libs/ui/mat-autocomplete-wrapper/src/index.ts"], "@proxy/ui/mat-paginator-goto": ["libs/ui/mat-paginator-goto/src/index.ts"], - "@proxy/ui/multi-select": ["libs/ui/multi-select/src/index.ts"], - "@proxy/ui/no-network": ["libs/ui/no-network/src/index.ts"], - "@proxy/ui/no-permission": ["libs/ui/no-permission/src/index.ts"], "@proxy/ui/no-record-found": ["libs/ui/no-record-found/src/index.ts"], - "@proxy/ui/object-viewer": ["libs/ui/object-viewer/src/index.ts"], - "@proxy/ui/phone-number-material": ["libs/ui/phone-number-material/src/index.ts"], - "@proxy/ui/phone-recording": ["libs/ui/phone-recording/src/index.ts"], "@proxy/ui/player": ["libs/ui/player/src/index.ts"], "@proxy/ui/prime-ng-toast": ["libs/ui/prime-ng-toast/src/index.ts"], - "@proxy/ui/qr-code": ["libs/ui/qr-code/src/index.ts"], - "@proxy/ui/reject-reason": ["libs/ui/reject-reason/src/index.ts"], - "@proxy/ui/route-loader": ["libs/ui/route-loader/src/index.ts"], "@proxy/ui/search": ["libs/ui/search/src/index.ts"], - "@proxy/ui/sorting-bottom-sheet": ["libs/ui/sorting-bottom-sheet/src/index.ts"], - "@proxy/ui/template-preview": ["libs/ui/template-preview/src/index.ts"], - "@proxy/ui/time-picker": ["libs/ui/time-picker/src/index.ts"], - "@proxy/ui/tts-recording": ["libs/ui/tts-recording/src/index.ts"], - "@proxy/ui/variable-input": ["libs/ui/variable-input/src/index.ts"], + "@proxy/ui/service-list": ["libs/ui/service-list/src/index.ts"], "@proxy/ui/virtual-scroll": ["libs/ui/virtual-scroll/src/index.ts"], "@proxy/urls/create-project-urls": ["libs/urls/create-project-urls/src/index.ts"], "@proxy/urls/features-url": ["libs/urls/features-url/src/index.ts"], diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100755 index 82c66ee0..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; - -const webpack = require('webpack'); -let customEnvConfig = require('dotenv')?.config()?.parsed || {}; - -function stringifyValues(object = {}) { - return Object.entries(object).reduce((acc, curr) => ({ ...acc, [`${curr[0]}`]: JSON.stringify(curr[1]) }), {}); -} -customEnvConfig = { ...stringifyValues(process.env), ...stringifyValues(customEnvConfig) }; - -// const CopyWebpackPlugin = require('copy-webpack-plugin'); - -/** - * Custom webpack configuration - */ -module.exports = { - plugins: [ - new webpack.DefinePlugin({ 'process.env': customEnvConfig }), - new webpack.IgnorePlugin({ - resourceRegExp: /^\.\/locale$/, - contextRegExp: /moment$/, - }), - ], -}; diff --git a/workspace.json b/workspace.json deleted file mode 100755 index fe81240f..00000000 --- a/workspace.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "version": 2, - "projects": { - "chart-ui": "libs/chart-ui", - "constant": "libs/constant", - "custom-validator": "libs/custom-validator", - "directives-auto-focus-directive": "libs/directives/auto-focus-directive", - "directives-auto-select-dropdown": "libs/directives/auto-select-dropdown", - "directives-custom-tooltip-directive": "libs/directives/custom-tooltip-directive", - "directives-highlight-directive": "libs/directives/highlight-directive", - "directives-mark-all-as-touched": "libs/directives/mark-all-as-touched", - "directives-open-datepicker-on-focus-directive": "libs/directives/open-datepicker-on-focus-directive", - "directives-remove-character-directive": "libs/directives/remove-character-directive", - "directives-skeleton": "libs/directives/skeleton", - "directives-timeago-directive": "libs/directives/timeago-directive", - "models-features-model": "libs/models/features-model", - "models-logs-models": "libs/models/logs-models", - "models-project-model": "libs/models/project-model", - "models-root-models": "libs/models/root-models", - "models-users-model": "libs/models/users-model", - "pipes-chart-date-add": "libs/pipes/chart-date-add", - "pipes-country-currency-symbol": "libs/pipes/country-currency-symbol", - "pipes-currency-formatter": "libs/pipes/currency-formatter", - "pipes-custom-date-pipe": "libs/pipes/custom-date-pipe", - "pipes-decimal-formatter": "libs/pipes/decimal-formatter", - "pipes-duration-pipe": "libs/pipes/duration-pipe", - "pipes-field-value-pipe": "libs/pipes/field-value-pipe", - "pipes-filename-pipe": "libs/pipes/filename-pipe", - "pipes-filter-control-pipe": "libs/pipes/filter-control-pipe", - "pipes-floor": "libs/pipes/floor", - "pipes-flow": "libs/pipes/flow", - "pipes-get-hash-code-pipe": "libs/pipes/get-hash-code-pipe", - "pipes-get-short-name-pipe": "libs/pipes/get-short-name-pipe", - "pipes-greeting-pipe": "libs/pipes/greeting-pipe", - "pipes-join": "libs/pipes/join", - "pipes-linkify-pipe": "libs/pipes/linkify-pipe", - "pipes-mobile-number-pipe": "libs/pipes/mobile-number-pipe", - "pipes-number-format-pipe": "libs/pipes/number-format-pipe", - "pipes-relative-time-pipe": "libs/pipes/relative-time-pipe", - "pipes-repeater-condition": "libs/pipes/repeater-condition", - "pipes-replace": "libs/pipes/replace", - "pipes-safe-urlpipe": "libs/pipes/safe-urlpipe", - "pipes-sanitize-html-pipe": "libs/pipes/sanitize-html-pipe", - "pipes-seconds-to-hms": "libs/pipes/seconds-to-hms", - "pipes-show-days-format": "libs/pipes/show-days-format", - "pipes-split": "libs/pipes/split", - "pipes-string-masking": "libs/pipes/string-masking", - "pipes-time-conversion-pipe": "libs/pipes/time-conversion-pipe", - "pipes-time-token-pipe": "libs/pipes/time-token-pipe", - "pipes-timer": "libs/pipes/timer", - "pipes-tooltip-list-pipe": "libs/pipes/tooltip-list-pipe", - "pipes-typeof": "libs/pipes/typeof", - "pipes-user-setting-pipe": "libs/pipes/user-setting-pipe", - "pipes-utc-to-local-date-pipe": "libs/pipes/utc-to-local-date-pipe", - "proxy": "apps/proxy", - "proxy-auth": "apps/proxy-auth", - "proxy-auth-element": "apps/proxy-auth-element", - "regex": "libs/regex", - "service": "libs/service", - "services-http-wrapper": "libs/services/http-wrapper", - "services-http-wrapper-no-auth": "libs/services/http-wrapper-no-auth", - "services-interceptor-error-interceptor": "libs/services/interceptor/error-interceptor", - "services-login": "libs/services/login", - "services-proxy-auth": "libs/services/proxy/auth", - "services-proxy-create-project": "libs/services/proxy/create-project", - "services-proxy-features": "libs/services/proxy/features", - "services-proxy-logs": "libs/services/proxy/logs", - "services-proxy-root": "libs/services/proxy/root", - "services-proxy-users": "libs/services/proxy/users", - "services-shared": "libs/services/shared", - "shared": "libs/shared", - "ui-angular-mentions": "libs/ui/angular-mentions", - "ui-browser-recording": "libs/ui/browser-recording", - "ui-cmd-enter-preference": "libs/ui/cmd-enter-preference", - "ui-color-functions": "libs/ui/color-functions", - "ui-color-picker": "libs/ui/color-picker", - "ui-components-base-component": "libs/ui/base-component", - "ui-components-calendly-dialog": "libs/ui/calendly-dialog", - "ui-components-days-autocomplete-chip-list": "libs/ui/days-autocomplete-chip-list", - "ui-components-ivr-dialer": "libs/ui/ivr-dialer", - "ui-components-qr-code": "libs/ui/qr-code", - "ui-components-route-loader": "libs/ui/route-loader", - "ui-components-search": "libs/ui/search", - "ui-components-template-preview": "libs/ui/template-preview", - "ui-compose-wrapper": "libs/ui/compose-wrapper", - "ui-confirm-dialog": "libs/ui/confirm-dialog", - "ui-copy-button": "libs/ui/copy-button", - "ui-date-range-picker": "libs/ui/date-range-picker", - "ui-drag-resizable": "libs/ui/drag-resizable", - "ui-editor": "libs/ui/editor", - "ui-file-upload": "libs/ui/file-upload", - "ui-handle-domain": "libs/ui/handle-domain", - "ui-loader": "libs/ui/loader", - "ui-mat-autocomplete-wrapper": "libs/ui/mat-autocomplete-wrapper", - "ui-mat-paginator-goto": "libs/ui/mat-paginator-goto", - "ui-multi-select": "libs/ui/multi-select", - "ui-no-network": "libs/ui/no-network", - "ui-no-permission": "libs/ui/no-permission", - "ui-no-record-found": "libs/ui/no-record-found", - "ui-object-viewer": "libs/ui/object-viewer", - "ui-phone-number-material": "libs/ui/phone-number-material", - "ui-phone-recording": "libs/ui/phone-recording", - "ui-player": "libs/ui/player", - "ui-prime-ng-toast": "libs/ui/prime-ng-toast", - "ui-reject-reason": "libs/ui/reject-reason", - "ui-sorting-bottom-sheet": "libs/ui/sorting-bottom-sheet", - "ui-time-picker": "libs/ui/time-picker", - "ui-tts-recording": "libs/ui/tts-recording", - "ui-variable-input": "libs/ui/variable-input", - "ui-virtual-scroll": "libs/ui/virtual-scroll", - "urls-create-project-urls": "libs/urls/create-project-urls", - "urls-features-url": "libs/urls/features-url", - "urls-logs-urls": "libs/urls/logs-urls", - "urls-root-urls": "libs/urls/root-urls", - "urls-users-urls": "libs/urls/users-urls", - "utils": "libs/utils" - }, - "$schema": "./node_modules/nx/schemas/workspace-schema.json" -}